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