Unit Test

assert.h (trong C)

assert( /* Biểu thức cần kiểm tra */ ); //hàm không trả về gì. Nếu biểu thức cần kiểm tra sai, nó trả về thông báo

test kết quả hàm giaiThua(x)

assert(giaiThua(5) == 720);

Statement Coverage: đảm bảo việc thực hiện đi qua số lượng câu lệnh/dòng code tối đa (mỗi dòng code hay câu lệnh được thực thi ít nhất 1 lần), hạn chế các dòng code chết

Decision Coverage/Branch Coverage: biểu thị cho các nhánh mà chương trình có thể được thực thi. Đối với câu lệnh điều kiện if, có thể có 2 nhánh là điều kiện true hoặc false. Để DC = 100%, cần thực hiện 2 test case

Modified Condition/Decision Coverage: Độ bao phủ. Cần test các đối tượng độc lập, các test case để bao phủ các trường hợp trả về true hoặc false

  • Cần có 1 Test Case để đảm bảo kết quả là đúng khi mà A đúng.
  • Cần có 1 Test Case để đảm bảo kết quả là sai khi mà A sai.
  • Tổng hợp số test case đáp ứng các yêu cầu trên là số test case cần để bao phủ 100% MC/DC

Ví dụ:

if (kettle && cup && coffee)

{

return cup_of_coffee;

}

else

{

return none;

}

Test_1: kettle = 0, cup = 1, coffee = 1: false, cùng kết quả với kettle

Test_2: kettle = 1, cup = 1, coffee = 1: true, cùng kết quả với kettle

=> kettle độc lập về mặt kết quả

Test_3: kettle = 1, cup = 0, coffee = 1: false, cùng kết quả với cup

=> kết hợp với Test_2, cup độc lập với mặt kết quả

Test_4: kettle = 1, cup = 1, coffee = 0: false, cùng kết quả với coffee

=> kết hợp với Test_2, coffee độc lập về mặt kết quả

Vậy chỉ cần Test 1,2,3,4 là bao phủ 100% MC/DC. Các test khác không cần thiết

 

Nhanvat

Ủng hộ chúng tôi

Nếu bạn thấy nội dung hữu ích, hãy ủng hộ chúng tôi một ly cà phê nhé

Buy Me A Coffee buymeacoffee.com/invencamp