Tiêu chí bao phủ cung không thể phát hiện lỗi lập trình liên quan đến thực thi chương trình có chứa vòng lặp. Chẳng hạn, chúng ta xét đoạn chương trình có tính nghịch đảo tổng các phần tử giữa các vị trí inf và sup của mảng a gồm các số nguyên dương.
scant (“%d%d”, &inf, &sup); i = inf; s = 0; while (i < sup) { s = s + a [i]; i = i + 1; } printf (“%f”, 1.0/s);
Đồ thị luồng điều khiển tương ứng được trình bày trong Hình 3.21.
Hình 3.21. Đồ thị biểu diễn chương trình tính nghịch đảo tổng
Nếu chọn dữ liệu thử DT1 = {a[1] = 3, inf = 1, sup = 1} thì lộ trình kiểm thử được thực thi là [𝑐1, 𝑐2, 𝑐3, 𝑐4]. Lộtrình này đảm bảo tiêu chí bao phủcung (cũng như tiêu chí bao phủ đỉnh), tuy nhiên không phát hiện được lỗi khi inf > sup. Thực vậy, khi vòng lặp không được thực thi, biến s bằng không và nghịch đảo của biến s là không thể thực hiện.
Tiêu chí bao phủ lộ trình yêu cầu tất cả các lộ trình phải được bao phủ. Chẳng hạn, nếu chúng ta chọn thêm dữ liệu DT2 = {a[1] = 3, a[2] = 4, inf = 2, sup = 1} thì lộ trình [𝑐1, 𝑐4] được thực thi và lỗi chia không sẽ được phát hiện.
Tuy nhiên, chúng ta có thể nhận thấy rằng tiêu chí bao phủ lộ trình là không thể thỏa mãn được trong trường hợp có vòng lặp, do số lộ trình là vô hạn. Chẳng hạn, đối với đồ thị trong Hình 4.13, mỗi lần đi qua vòng lặp (qua các cung 𝑐2, và cung 𝑐3),
chúng ta có thêm một lộ trình mới. Trong mục tiếp theo, chúng ta sẽ định nghĩa tiêu chí bao phủ có tính khảthi hơn.