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 2.

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

Đáp án đúng: C


Đoạn code có các điều kiện sau: 1. `a == 0`: ảnh hưởng đến việc trả về giá trị 0 ngay lập tức. 2. `(a == b) || (c == d)`: ảnh hưởng đến giá trị của `x`. Nếu điều kiện này đúng, `x` sẽ bằng 1, ngược lại `x` sẽ bằng 0. 3. `e = 1/x`: có thể gây ra lỗi chia cho 0 nếu `x` bằng 0. Để phủ cấp 2 (branch coverage), chúng ta cần đảm bảo mỗi nhánh của mỗi điều kiện được thực thi ít nhất một lần. Do đó cần xét các trường hợp sau: * **Testcase 1**: `a = 0`. Nhánh `if (a == 0)` được thực thi và trả về 0. * **Testcase 2**: `a != 0`, `a == b`, và `c != d`. Nhánh `if (a == 0)` không được thực thi, và `x` bằng 1. * **Testcase 3**: `a != 0`, `a != b`, và `c == d`. Nhánh `if (a == 0)` không được thực thi, và `x` bằng 1. * **Testcase 4**: `a != 0`, `a != b`, và `c != d`. Nhánh `if (a == 0)` không được thực thi, và `x` bằng 0. Như vậy, cần tối thiểu 4 testcase để đảm bảo phủ cấp 2.

Câu hỏi liên quan

Lời giả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 16:

Độ phức tạp Cyclomatic của đồ thị cho bên dưới là:

 Độ phức tạp Cyclomatic của đồ thị cho bên dưới là:A. 1B. 2C. 3D. 4 (ảnh 1)

Lời giải:
Đáp án đúng: C
Độ phức tạp Cyclomatic (Cyclomatic Complexity) có thể được tính bằng công thức V(G) = E - N + 2, trong đó E là số cạnh của đồ thị và N là số nút của đồ thị.

Trong đồ thị đã cho:
- Số cạnh (E) = 9
- Số nút (N) = 8

Áp dụng công thức: V(G) = 9 - 8 + 2 = 3

Vậy độ phức tạp Cyclomatic của đồ thị là 3.
Câu 17:

Công thức tính độ phức tạp cyclomatic M của một đoạn mã lệnh:

Lời giải:
Đáp án đúng: A
Độ phức tạp Cyclomatic (Cyclomatic Complexity) là một thước đo độ phức tạp của một chương trình. Nó được tính bằng công thức M = E - N + 2P, trong đó:

* M là độ phức tạp Cyclomatic
* E là số cạnh (edges) trong đồ thị luồng điều khiển.
* N là số nút (nodes) trong đồ thị luồng điều khiển.
* P là số thành phần liên thông (connected components). Trong hầu hết các trường hợp, P = 1 (một chương trình/hàm). Nếu đoạn code có nhiều điểm bắt đầu/kết thúc riêng biệt, thì P > 1.

Do đó, đáp án A là đáp án đúng.
Câu 18:

Cho sơ đồ sau. Xác định chuỗi trạng thái đúng cho biến e

 Cho sơ đồ sau. Xác định chuỗi trạng thái đúng cho biến eA. ~ddukB. ~dukC. ddukD. Tất cả đều sai (ảnh 1)

Lời giải:
Đáp án đúng: A
Để xác định chuỗi trạng thái đúng cho biến e, ta cần theo dõi sơ đồ trạng thái đã cho.

- Ban đầu, e ở trạng thái 'd' (từ trạng thái ban đầu).
- Khi có đầu vào 'u', e chuyển sang trạng thái 'u'.
- Khi có đầu vào 'k', e chuyển sang trạng thái 'k'.

Vậy chuỗi trạng thái của e là: dduk.

Do đó, đáp án đúng là C. dduk
Câu 19:

Trong kiểm thử dòng dữ liệu tĩnh, người kiểm thử phải chạy mã nguồn để xác định các sai sót có thể xảy ra.

Lời giải:
Đáp án đúng: B
Kiểm thử dòng dữ liệu tĩnh là một kỹ thuật phân tích mã nguồn mà không cần thực thi chương trình. Nó tập trung vào việc theo dõi luồng dữ liệu qua mã để phát hiện các vấn đề như biến chưa được khởi tạo, sử dụng biến trước khi gán giá trị, hoặc các đường dẫn dữ liệu không hợp lệ. Do đó, việc chạy mã nguồn là không cần thiết trong kiểm thử dòng dữ liệu tĩnh.
Câu 20:

Trong kiểm thử dòng dữ liệu tĩnh, người kiểm thử không cần chạy mã nguồn để xác định các sai sót có thể xảy ra.

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Câu 21:

Kiểm thử hộp đen là chiến lược kiểm thử yêu cầu người kiểm thử phải hiểu rõ mã nguồn của phần mềm.

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Câu 22:

Một textbox chỉ nhận giá trị ký tự từ [A-Z], [0-9]. Chỉ ra một giá trị thuộc lớp tương đương không hợp lệ:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Câu 23:

Trong kỹ thuật phân tích giá trị biên, nội dung nào sau đây là đúng:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Câu 24:

Bài toán: Nhập mật khẩu có thể chứa bất kỳ ký tự nào, với điều kiện chiều dài mật khẩu ít nhất là 6 ký tự và nhiều nhất là 14 ký tự. Chúng ta cần chọn bao nhiêu bộ test case cho bài toán trên dựa theo kỹ thuật phân tích giá trị biên?

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP