Xây dựng các ca kiểm thử cho chương trình trên

Một phần của tài liệu Nghiên cứu về mức bao phủ của kiểm thử (Trang 42 - 46)

Dựa vào cấu trúc của chương trình nguồn như trên đề xuất các ca kiểm thử kiểm tra code trong từng nhánh có được thực thi hay không.

Test case 1 :Công việc A được thực hiện khi điều kiện một “true” do đó để kiểm tra việc thực thi công việc A chúng ta cần gán sao cho điều kiện một “true”.

Hình 20 : Test case 1 kiểm tra công việc A

Test case 2 :Khi điều kiện một “false” câu lệnh rẽ nhánh sẽ thực hiện công việc trong khối lệnh B. Để kiểm tra việc thực thi công việc B ta cần gán cho điều kiện một là “false”

Testcase #1: Condition-1 là “true”. Testcase #2: Condition-1 là “false“

Test case 3 :Xét đến điều kiện hai.Khi điều kiện hai là “true” thì khối lệnh C sẽ được thực hiện. Do đó kiểm tra việc thực thi công việc C ta sẽ gán cho điều kiện 2 là “true”.

Hình 22 : Test case 3 kiểm tra công việc C

Testcase #3: condition-2 là “true”.

Để kiểm tra các công việc A, B, C ba test case đã được đề xuất. Tuy nhiên có thể dễ dàng nhận thấy điều kiện 1 và là 2 bộ phận độc lập nhau.

Hình 23 : Hai điều kiện một và hai là độc lập nhau

Do đó bao phủ toàn bộ 3 công việc này ta chỉ cần dùng đến 2 test case là 100% câu lệnh được bao phủ. Test case 1 kiểm tra đồng thời công việc A và công việc C

Hình 24 : Kiểm tra đồng thời công việc A và công việc C trong cùng 1 test case Test case 2 kiểm tra công việc B và công việc C:

Hình 25 : Test case kiểm tra đồng thời công việc B và C

Test case Condition - 1 Condition-2

#1 TRUE TRUE

#2 FALSE TRUE

Thiết kế 2 test case như trên thì 100% câu lệnh đã được kiểm tra. Mặc dù đã bao phủ 100% nhưng đã có một điều kiện không được bao phủ và một nhánh không được bao phủ. Cụ thể là trong điều kiện thứ 2 điều kiện “false” đã không được bao phủ. Và nhánh không được bao phủ là :

Hình 26 : Nhánh không được bao phủ

Thay một điều kiện của condition-2 là “false” ta được bảng tồng hợp các giá trị dùng trong các ca kiểm thử như sau:

Test case Condition-1 Condition-2

#1 TRUE TRUE

#2 FALSE FALSE

Nếu xem như các biểu thức trong các điều kiện của ta là các biểu thức boolean nguyên tử (tức là không chứa các phép toán logic như and, or, xor) thì lúc này ta nhận thấy là toàn bộ nhánh và toàn bộ điều kiện đã được bao phủ.

Tuy nhiên mặc dù 100% câu lệnh và 100% nhánh đã được bao phủ thì vẫn có lỗi được tìm ra. Chúng ta mới bao phủ được 2 đường đi, với 2 giá trị “true” “false” của hai điều kiện. Tổ hợp các điều kiện với nhau ta có 4 cách đi có thể do đó sẽ có 4 ca kiểm thử được đề xuất như sau :

Test case Condition-1 Condition-2

#1 TRUE TRUE

#2 FALSE FALSE (adsbygoogle = window.adsbygoogle || []).push({});

#3 TRUE FALSE

#4 FALSE TRUE

Như vậy dựa vào việc phân tích từng mức bao phủ : bao phủ dòng lệnh, bao phủ nhánh, bao phủ đường đi ta đã thiết kế được một bộ test case hoàn chỉnh, đảm bảo tất cả các câu lệnh đã được kiểm tra, các nhánh, các đường đi có thể đều đã được bao phủ.

Một phần của tài liệu Nghiên cứu về mức bao phủ của kiểm thử (Trang 42 - 46)