Đáp án đúng: C
Đề bài yêu cầu số lượng test case để đảm bảo phủ cấp 3 (còn gọi là branch coverage). Đoạn code có các nhánh sau:
1. `if (a == 0)`: Cần 2 test case (true/false)
2. `if ((a == b) || (c == d))`: Cần các test case để phủ các trường hợp sau:
- a == b là true
- a == b là false và c == d là true
- a == b là false và c == d là false
Tuy nhiên, nếu x = 0, chương trình sẽ bị lỗi chia cho 0 (`e = 1/x`). Vì vậy, chúng ta cần thêm một test case để đảm bảo x != 0.
Vậy ta cần các test case sau:
1. a = 0 (để phủ nhánh `if (a==0)` là true)
2. a != 0, a = b (để phủ nhánh `(a==b) || (c==d)` là true và `a==b` là true)
3. a != 0, a != b, c = d (để phủ nhánh `(a==b) || (c==d)` là true và `a==b` là false, `c==d` là true)
4. a != 0, a != b, c != d (để phủ nhánh `(a==b) || (c==d)` là false)
Như vậy cần tối thiểu 4 test case để phủ hết các nhánh.