JavaScript is required

Cho đoạn code sau đây, hãy chọn đáp án đúng nhất:float foo(int a, int b, int c, int d){float e;if (a==0) return 0;int x = 0;if ((a==b) || (c==d)) x = 1;e = 1/x;return e;}Chúng ta cần bao nhiêu testcase để đảm bảo phủ cấp 3.

A.
1
B.
2
C.
3
D.
4
Trả lời:

Đá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.

Câu hỏi liên quan