Bao phủ điều kiện – Condition coverage

Một phần của tài liệu Thiết kế test case trong kiểm thử phần mềm (Trang 27 - 29)

Tư tưởng: Viết đủ các ca kiểm thử để đảm bảo rằng mỗi điều kiện trong một quyết định đảm nhận tất cả các kết quả có thể ít nhất một lần.

Vì vậy, như với bao phủ quyết định, thì bao phủ điều kiện không phải luôn luôn dẫn tới việc thực thi mỗi câu lệnh. Thêm vào đó, trong tiêu chuẩn bao phủ điều kiện, mỗi điểm vào chương trình hay thường trình con, cũng như các ON-unit, được gọi ít nhất 1 lần. Ví dụ, câu lệnh rẽ nhánh do k=0 to 50 while (j+k<quest) có chứa 2 điều kiện là k<=50, và j+k<quest. Do đó, các ca kiểm thử sẽ được yêu cầu cho những tình huống k<=50, k>50 (để đến lần lặp cuối cùng của vòng lặp), j+k<quest, và

Hình 2.1 có 4 điều kiện: A>1, B=0, A=2, X>1. Do đó các ca kiểm thử đầy đủ là cần thiết để thúc đẩy những trạng thái mà A>1, A<=1, B=0 B<>0 có mặt tại điểm

aA=2, A<>2, X>1, X<=1 có mặt tại điểm b. Số lượng đầy đủ các ca kiểm thử thỏa mãn tiêu chuẩn và những đường đi mà được đi qua bởi mỗi ca kiểm thử là:

1. A=2, B=0, X=4 ace 2. A=1, B=1, X=1 abd

Chú ý là, mặc dù cùng số lượng các ca kiểm thử được tạo ra cho ví dụ này, nhưng bao phủ điều kiện thường tốt hơn bao phủ quyết định là vì nó có thể (nhưng không luôn luôn) gây ra mọi điều kiện riêng trong 1 quyết định để thực hiện với cả hai kết quả, trong khi bao phủ quyết định lại không. Ví dụ trong cùng câu lệnh rẽ nhánh: DO K=0 TO 50 WHILE (J+K<QUEST) là 1 nhánh 2 đường (thực hiện thân vòng lặp hay bỏ qua nó). Nếu bạn đang sử dụng kiểm thử quyết định, thì tiêu chuẩn này có thể được thỏa mãn bằng cách cho vòng lặp chạy từ K=0 tới 51, mà chưa từng kiểm tra trường hợp trong đó mệnh đề WHILE bị sai. Tuy nhiên, với tiêu chuẩn bao phủ điều kiện, 1 ca kiểm thử sẽ cần phải cho ra 1 kết quả sai cho những điều kiện

J+K<QUEST.

Mặc dù nếu mới nhìn thoáng qua, tiêu chuẩn bao phủ điều kiện xem ra thỏa mãn tiêu chuẩn bao phủ quyết định, nhưng không phải lúc nào cũng vậy. Nếu quyết định IF (A&B) được kiểm tra, thì tiêu chuẩn bao phủ điều kiện sẽ cho phép bạn viết 2 ca kiểm thử - A đúng, B sai, và A sai, B đúng – nhưng điều này sẽ không làm cho mệnh đề THEN của câu lệnh IF được thực hiện.

Ví dụ, 2 ca kiểm thử khác:

1. A=1, B=0, X=3 2. A=2, B=1, X=1

bao phủ tất cả các kết quả điều kiện, nhưng chúng chỉ bao phủ 2 trong 4 kết quả quyết định (cả 2 đều bao phủ đường đi abd và do đó, không sử dụng kết quả true của quyết định đầu tiên và kết quả false của quyết định thứ hai).

Một phần của tài liệu Thiết kế test case trong kiểm thử phần mềm (Trang 27 - 29)

Tải bản đầy đủ (DOC)

(58 trang)
w