Kết quả nhận được trong hình 3.9 không thể hiện rõ đã phủ hết câu lệnh hay chưa. Cột branch có giá trị 0.33(1/3) thể hiện chỉ có một điều kiện đã được phủ. Với kết quả trên, chúng ta thấy có điều kiện(a == 0) là đã được phủ vì khi thực thi chương trình đều đã đi qua hai nhánh true và false của biểu thức này, còn điều kiện (a == b) và (c == d) chưa được phủ hết.
Tương tự khi đo độ bao phủ với tiêu chuẩn bao phủ nhánh (branch coverage). Tiêu chuẩn bao phủ nhánh là kiểm thử sao cho mỗi điều kiện được thực hiện ít nhất một lần trường cả hai nhánh true và false không cần chia nhỏ nếu điều kiện phức tạp. Quay trở lại với ví dụ hàm exam, khi sử dụng tiêu chuẩn bao phủ nhánh thì đồ thị luồng điều khiển không thay đổi, chúng tôi vẫn sử dụng mã nguồn hàm exam và đồ thị trong hình 3.7. Bảng 3.3 mô tả các trường hợp cần kiểm thử để đạt được 100% bao phủ nhánh.
Bảng 3.3: Bộ test theo tiêu chuẩn bao phủ nhánh của hàm exam
ID Test Path Input EO
Tc1 1(T), 2 0,1,2,3 0
Tc2 1(F),3,4(T),5,6 1,1,2,3 3
Tc3 1(F),3,4(F),6 1,2,2,3 2
Sử dụng công cụ JPF CoverageAnalyzer đo bao phủ nhánh, báo cáo kết quả như trong hình 3.10:
Với các ca kiểm thử ở bảng 3.3 kết quả nhận được trong hình 3.10 tại cột
branch của có giá trị 0.67(2/3). Giá trị này không thực sự rõ ràng khi thể hiện đã bao phủ nhánh. Người dùng phải xem lại code và đối chiếu với kết quả trong hình 3.10 để kiểm tra những nhánh đã phủ và chưa phủ, việc này mất thời gian và đôi khi không khả thi với các hàm phức tạp.
28