Trường Đại Học Bách Khoa Hà Nội
Viện Công Nghệ Thông Tin &Truyền Thông
Kiểm thử phần mềm
Các quá trình kiểm thử
TS. Nguyễn Thanh Hùng
Bộ Môn Công Nghệ Phần Mềm
Email: [email protected]
Website: http://soict.hust.edu.vn/~hungnt
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Chiến lược kiểm thử
Bắt đầu từ module level cho đến lúc tích hợp
thành hệ thống trọn vẹn
Các kỹ thuật kiểm thử khác nhau thích hợp tạo
các thời điểm khác nhau
Kiểm thử được kiểm soát bởi các developers và
các nhóm kiểm thử độc lập
Kiểm thử và gỡ lỗi là các hoạt động khác nhau,
nhưng gỡ lỗi phải được thích ứng trong chiến
lược kiểm thử
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Tổ chức kiểm thử
Kiểm thử phần mềm là một phần của
hoạt động “Xác minh và thẩm định”
Xác minh là một tập các hoạt động để đảm
bảo rằng: phần mềm thực hiện đúng chức
năng đã được đặc tả
Thẩm định là một tập hợp các hoạt động để
đảm bảo rằng: phần mềm đã đáp ứng đúng
các yêu cầu của khách hàng
Câu hỏi: Ai làm? Làm cái gì? Khi nào? Và mối
quan hệ
5
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Trách nhiệm kiểm thử phần mềm
Các kỹ sư phần mềm làm ra phần mềm.
Một cách tự nhiên họ cần tiến hành các
kiểm thử ban đầu. Về nguyên tắc, người
làm sản phẩm, kiểm tra sản phẩm là
không hợp lý.
Có một số hiểu lầm:
Người phát triển không tham gia kiểm thử
Gỡ bỏ mâu thuẫn giữa những người tham gia
Đánh giá công sức phát triển bỏ ra tìm lỗi
Nhóm kiểm thử độc lập tạo ra báo cáo đầy đủ
cho tổ chức đảm bảo chất lượng phần mềm
Người phát triển
Không đẩy chương trình cho người kiểm thử rồi
bỏ đi
Cùng làm việc với người kiểm thử xuyên suốt
một dự án (bảo đảm việc kiểm thử được tiến
hành triệt để)
8
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Tiến trình thực hiện kiểm thử
Tiến trình thực hiện kiểm thử tương ứng
với tiến trình phát triển (theo từng mô
hình)
Tiến trình kiểm thử thông thường (mô
hình chữ V)
9
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Kiểm thử đơn vị
qua một giao diện của
module liên quan đến
định lượng và định
dạng của các biến và
các module sử dụng
trên giao diện.
Đặc trưng cụ thể:
Số lượng?
Định dạng?
12
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Đặc trưng dữ liệu qua giao diện
Các đặc trưng qua giao diện là:
Số tham số = số đối số?
Tính chất của tham số = tính chất của
đối số?
Đơn vị của tham số = đơn vị của đối
số?
Số đối được truyền gọi module = số các
tham số đầu vào của module?
Thuộc tính các đối được truyền gọi
module = thuộc tính của tham số?
Đơn vị của đối được truyền để gọi
module = đơn vị các tham số module
13
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Kiểm thử về các xử lý
Các sai về trình tự, độ chính xác là:
Thứ tự ưu tiên các phép tính số học
Sự nhất quán của các phép toán
trộn
Khởi tạo/kết thúc không đúng đắn
Sự chính xác của kết quả
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Kiểm thử các điều kiện logic
Các sai kiểu, toán tử, ngữ nghĩa:
So sánh các kiểu dữ liệu khác nhau
Ưu tiên hoặc toán tử logic không đúng đắn
Dự đoán một biểu thức so sánh, trong khi sai số làm cho
đẳng thức không chắc có thực
Các giá trị so sánh không đúng đắn
CuuDuongThanCong.com
19
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Thủ tục kiểm thử đơn vị
Sau khi mã nguồn được phát triển, rà soát
và kiểm tra tính đúng đắn cú pháp (thanh
tra), thiết kế ca kiểm thử đơn vị bắt đầu
Kiểm thử đơn vị là phần phụ thêm của mã
hoá
Kết quả rà soát thiết kế cung cấp các chỉ
dẫn để thiết lập các ca kiểm thử nhằm bộc
lộ sai trong mỗi loại đã nêu
Mỗi ca kiểm thử phải gắn với một tập các
kết quả mong đợi.
20
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Kỹ thuật kiểm thử đơn vị
Module không phải là chương trình cô lập,
nên cần phát triển các phần mềm bộ lái
và/hoặc cuống cho kiểm thử đơn vị
Bộ lái (driver) là một hàm “main” điều
khiển việc đưa dữ liệu vào và nhận kết
quả ra của module
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
JUnit
JUnit:
Framework mã nguồn mở Unit Test cho Java
(http://www.junit.org)
• Cung cấp các test drivers cho kiểm thử đơn vị
• Cung cấp kiểm thử tử động
• Cung cấp kiểm tra kết quả tự động
Các bước sử dụng Junit
• Viết trường hợp kiểm thử
• Chạy kiểm thử
• Kiểm tra kết quả
24
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
JUnit
Viết một trường hợp kiểm thử
Tạo một trường hợp kiểm thử là subclass của
Junit TestCase
Override phương thức setUp() để khởi tạo
các đối tượng kiểm thử