Bảy nguyên tắc kiểm thử phần mềm
Một số nguyên tắc kiểm thử đã được đề nghị từ 40 năm về trước và đã đưa ra một số phương châm chung phổ biến cho kiểm thử phần mềm, bao gồm các nguyên tắc sau:
Nguyên tắc 1 – Kiểm thử đưa ra lỗi
Kiểm thử có thể cho thấy rằng phần mềm đang có lỗi, nhưng không thể chứng minh rằng phần mềm không có lỗi. Kiểm thử làm giảm xác suất lỗi chưa tìm thấy vẫn còn trong phần mềm, thậm chí là không còn lỗi nào, nó không
phải là bằng chứng của sự chính xác.
Nguyên tắc 2 – Exhaustive testing is
impossible
Kiểm thử mọi thứ (tất cả các tổ hợp của điều kiện input đầu
vào) là không thể thực hiện được , trừ phi nó chỉ bao gồm một số trườnghợp bình thường (ít trường hợp tổ hợp thì có thể test toàn bộ được ). Thay vì kiểm thử
toàn bộ, việc phân tích rủi ro và dựa trên sự mức độ ưu tiên chúng ta có thể
tập trung việc kiểm thử vào một số điểm cần thiết.
Nguyên tắc 3 – Kiểm thử sớm
Để tìm được debug sớm, các hoạt động kiểm thử nên được bắt đầu
càng sớm càng tốt trong qui trình phát triển (vòng đời phát triển) phần mềm
hoặc hệ thống, và nên tập trung vào các hoạt động đã định trước.
Nguyên tắc 4 – Phân loại lỗi
Nỗ lực kiểm thử nên tập trung một cách cân đối vào mật độ lỗi
dự kiến và lỗi phát hiện ra sau đó trong các mô-đun. Một số ít các mô-đun
thường chứa nhiều lỗi không phát hiện ra trong lúc kiểm thử trước khi phát hành
(release), hoặc chịu trách nhiệm cho hầu hết các lỗi hoạt động của phần mềm.
Để hiểu rõ hơn nguyên tắc này, ta cần xem xét 3 điều
sau:
- Nguyên tắc tổ gián: chỗ nào có 1 vài con gián thì ở đâu đó xung quanh nó sẽ có cả tổ gián -> có rất nhiều gián >>> chỗ nào có 1 vài con bug thì xung quanh, gần gần chỗ đó sẽ có nhiều bug.
- Nguyên tắc 80/20: thông thường 20% chức năng quan trọng trong một chương trình có thể gây ra đến 80% tổng số bug phát hiện đƣợc trong chƣơng trình đó.
- Exhaustive testing is impossible (nguyên tắc thứ 2): do đó cần phải ananlysis (phân tích) + priorities (tính toán mức độ ƣu tiên) để quyết định tập trung vào test chỗ nào.
=> Test kỹ chức năng quan trọng
=> found bug => test những gì liên quan + những chức năng gần nó để tìm
ra bug nhiều hơn.
Nguyên tắc 5 – Nghịch lý thuốc trừ sâu
Nếu việc kiểm thử tương tự nhau được lặp đi lặp lại nhiều lần,
thì cuối cùng sẽ có một số trường hợp kiểm thử (ca kiểm thử - test case) sẽ
không còn tìm thấy bất kỳ lỗi nào mới. Để khắc phục "nghịch lý thuốc trừ
sâu" này, các trường hợp kiểm thử cần phải được xem xét và sửa đổi thường xuyên, và cần phải viết các test case mới và khác nhau để thực hiện nhiều phần
khác nhau của phần mềm hoặc hệ thống để tìm ra lỗi tiềm ẩn nhiều hơn nữa.
Nguyên tắc này giống như việc trừ sâu trong nông nghiệp, nếu
chúng ta cứ phun một loại thuốc với nồng độ giống nhau trong một khoảng thời
gian dài thì có một số con sâu sẽ quen dần và cuối cùng việc phun thuốc giống như là tắm chúng vậy (bị lờn thuốc) => lúc đó chúng ta không thể diệt sạch
chúng được . Do vậy, để diệt sạch sâu một cách hiệu quả, người ta thường thay
đổi loại thuốc trừ sâu, mỗi loại chỉ dùng trong khoảng thời gian ngắn.
Nguyên tắc 6 – Kiểm thử theo các ngữ cảnh
độc lập
Nguyên tắc này là việc testing phụ
thuộc vào ngữ cảnh, test trong nhiều ngữ cảnh khác nhau.
Để hiểu rõ hơn chúng ta xem ví dụ sau:
Ví dụ, cũng với một chương trình calculator có rất
nhiều chức năng, nhưng:
- Nếu test chương trình này cho mẫu giáo thì chỉ cần test cộng trừ là OK
- Nếu test chương trình này cho cấp 2 thì cộng trừ nhân chia
- Nếu
test chương trình này cho đại học thì tích phân, đạo hàm, v.v....
Nguyên tắc 7 – Sự sai lầm về việc không có
lỗi
Post a Comment
Post a Comment