You are on page 1of 5

GIẢNG VIÊN: THẦY PHAN VIẾT THẾ

SINH VIÊN: ĐỖ TRỌNG NHÂN


MSSV:PS21774
LAB6
Câu 1:

Dựa trên ràng buộc của ô textbox cho phép nhập số điểm với các mức xếp loại kèm theo,
ta có thể sử dụng kỹ thuật phân vùng tương đương như sau:

Phân vùng 1 (điểm từ 5 đến 14): Test với các giá trị trong phân vùng này và kiểm tra xem
hệ thống có đưa ra kết quả xếp loại Kém hay không.
Phân vùng 2 (điểm từ 15 đến 40): Test với các giá trị trong phân vùng này và kiểm tra
xem hệ thống có đưa ra kết quả xếp loại Trung bình hay không.
Phân vùng 3 (điểm từ 41 đến 60): Test với các giá trị trong phân vùng này và kiểm tra
xem hệ thống có đưa ra kết quả xếp loại Khá hay không.
Phân vùng 4 (điểm từ 61 đến 100): Test với các giá trị trong phân vùng này và kiểm tra
xem hệ thống có đưa ra kết quả xếp loại Giỏi hay không.
Phân vùng 5 (điểm < 5): Test với giá trị nhỏ hơn giới hạn dưới và kiểm tra xem hệ thống
có thông báo lỗi không.
Phân vùng 6 (điểm > 100): Test với giá trị lớn hơn giới hạn trên và kiểm tra xem hệ thống
có thông báo lỗi không.

Vậy số lượng trường hợp kiểm thử cần thiết là 6.

Caau2 :
Sử dụng kỹ thuật phân tích giá trị biên thì ta chọn các giá trị biên của các phân vùng
trong ràng buộc của ô textbox:

Giá trị biên của phân vùng 1 (điểm từ 5 đến 14): 5 và 14


Giá trị biên của phân vùng 2 (điểm từ 15 đến 40): 15 và 40
Giá trị biên của phân vùng 3 (điểm từ 41 đến 60): 41 và 60
Giá trị biên của phân vùng 4 (điểm từ 61 đến 100): 61 và 100

Vậy ta có các trường hợp kiểm thử cần thực hiện như sau:

Test giá trị bằng giới hạn dưới của phân vùng 1: 5
Test giá trị bằng giới hạn trên của phân vùng 1: 14
Test giá trị bằng giới hạn dưới của phân vùng 2: 15
Test giá trị bằng giới hạn trên của phân vùng 2: 40
Test giá trị bằng giới hạn dưới của phân vùng 3: 41
Test giá trị bằng giới hạn trên của phân vùng 3: 60
Test giá trị bằng giới hạn dưới của phân vùng 4: 61
Test giá trị bằng giới hạn trên của phân vùng 4: 100
Test với giá trị nhỏ hơn giới hạn dưới: 4
Test với giá trị lớn hơn giới hạn trên: 101

Tổng cộng ta có 10 trường hợp kiểm thử cần thực hiện.

Cau3:

Trong bảng quyết định này, các trường hợp false được đại diện bởi "Không", còn true
được đại diện bởi "Có". Giảm giá kết hợp được cộng vào khi cả 2 trường hợp tương ứng
đều là true.
Từ bảng quyết định này, ta có thể tạo ra test case như sau:

Khách hàng mới, không có Coupon => Giảm giá: 15%


Khách hàng cũ, có thẻ VIP, không có Coupon => Giảm giá: 10%
Khách hàng mới, có thẻ VIP, không có Coupon => Giảm giá: 10%
Khách hàng cũ, không có thẻ VIP, có Coupon => Giảm giá: 20%
Khách hàng mới, không có thẻ VIP, có Coupon => Giảm giá: 20%
Khách hàng cũ, có thẻ VIP, có Coupon => Giảm giá: 20%
Khách hàng mới, có thẻ VIP, có Coupon => Không được sử dụng cùng lúc với giảm giá
cho khách hàng mới.
Khách hàng cũ, không có thẻ VIP, không có Coupon => Không được giảm giá.
Khách hàng mới, không có thẻ VIP, không có Coupon => Không được giảm giá.
Khách hàng cũ, có thẻ VIP, không có Coupon => Giảm giá: 10%

C4:

Để vẽ đường cơ bản của hàm soNT(), ta xác định các nút (nodes) và cạnh (edges) như
sau:

Nodes: nhập dữ liệu (n), khởi tạo biến co là true, khởi tạo biến i là 2, kiểm tra điều kiện
(n != 1 && co == true), in kết quả "là số nguyên tố", in kết quả "không phải là số nguyên
tố".
Edges: (1) -> (2) -> (3) -> (4.1) -> (4.2) -> (4.3) -> (4.4) -> (4.6), (4.1) -> (5), (4.4) -> (5),
(4.6) -> (7), (4.3) -> (6), (6) -> (4.1), (6) -> (4.4)

Ở đây, nếu kết quả của phép tính (n % i == 0) là true, chương trình sẽ chuyển đến node
(5), tức sẽ kết thúc vòng lặp và không thể trở lại node (3). Nếu kết quả của phép tính (n %
i == 0) là false, chương trình sẽ chuyển đến node (6) để tăng biến i lên 1 và tiếp tục kiểm
tra điều kiện.

Các trường hợp kiểm thử bằng đường đi như sau:

1 -> 2 -> 3 -> 4.1 -> 4.4 -> 5 -> 7


1 -> 2 -> 3 -> 4.1 -> 6 -> 4.1 -> 4.4 -> 5 -> 7
1 -> 2 -> 3 -> 4.1 -> 6 -> 4.1 -> 4.6
1 -> 2 -> 3 -> 4.1 -> 6 -> 4.3 -> 6 -> 4.4 -> 5 -> 7
1 -> 2 -> 3 -> 4.1 -> 6 -> 4.3 -> 6 -> 4.1 -> 4.4 -> 5 -> 7
1 -> 2 -> 3 -> 4.1 -> 6 -> 4.3 -> 6 -> 4.1 -> 6 -> 4.4 -> 5 -> 7

Lưu ý rằng, để thực hiện kiểm thử đường đi, ta cần nhập các giá trị đầu vào thích hợp để
đi theo từng đường đi tương ứng.

C5:
Để xác định số test case tối thiểu bao phủ 100% Câu lệnh (Statement coverage) cho đoạn
mã trên, ta cần xác định tất cả các câu lệnh có thể, sau đó tạo ra các test case để bao phủ
tất cả các câu lệnh đó. Trong trường hợp này, ta có 4 câu lệnh:

if ((temperature < 0) or (temperature > 100)) {


alert ("DANGER");
if ((speed > 100) and (load <= 50)) {
speed = 50;

Số test case tối thiểu bao phủ 100% Câu lệnh sẽ được tính bằng tổng số lần thực hiện
(execute) của các câu lệnh này.

Trường hợp (temperature < 0):

Câu lệnh 1: true, câu lệnh 2: thực thi

=> Đã bao phủ 2 câu lệnh

Trường hợp (temperature >= 0 && temperature <= 100) và (speed > 100) và (load <=
50):

Câu lệnh 1: false, không thực thi


Câu lệnh 3: true, câu lệnh 4: thực thi

=> Đã bao phủ 3 câu lệnh

Trường hợp (temperature >= 0 && temperature <= 100) và (speed <= 100 || load > 50):

Câu lệnh 1: false, không thực thi


Câu lệnh 3: false, không thực thi
=> Đã bao phủ 2 câu lệnh

Vậy ta có thể tạo ra 3 test case để bao phủ tất cả các câu lệnh:

temperature < 0
temperature >= 0 && temperature <= 100, speed > 100, và load <= 50
temperature >= 0 && temperature <= 100, speed <= 100 hoặc load > 50

Lưu ý rằng, số lượng các test case để đạt được 100% branch coverage hoặc 100% path
coverage có thể sẽ cao hơn số lượng test case ở đây.

You might also like