Biểu đồ dòng điều khiển cấp 3 của Ví dụ 06

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu, nghiên cứu các kỹ thuật cho kiểm thử miền và cải tiến các kỹ thuật đó (Trang 54)

Từ Hình 2.9 ta xây dựng đƣợc các miền dữ liệu đầu vào tƣơng ứng trong không gian 3 chiều (có 3 biến đầu vào là z, y, z) nhƣ Hình 2.10:

Hình 2.10: Các miền đầu vào của chương trình trong Ví dụ 06 khi điểm nghề <8.

Chú ý: Để dễ hình dung ta sẽ chỉ xét trong phạm vi khi học sinh có điểm nghề <8. Theo Hình 2.10, các miền đầu vào cho kết quả ”Đủ điểm trúng tuyển” trong trƣờng hợp này sẽ tƣơng ứng với khối ABCDA’B’C’D’. Trong không gian ba chiều ta sẽ tƣơng tự xét các mặt biên của khối đó. Với khối ABCD ta có các ca kiểm thử tƣơng ứng nhƣ trong Bảng 2.2.

Bảng 2.2: Các ca kiểm thử cho kết quả tốt nghiệp trong trường hợp điểm nghề <8.

STT Ca kiểm thử

1 A(X2,Y1,Z1) 2 B(X2,Y1,Z2) 3 C(X2,Y2,Z2)

4 D(X2,Y2,Z1) 5 E(X2,Y3,Z3)

Từ hình 2.10 ta thấy việc phân tích để tiến hành kiểm thử trên các miền đầu vào bây giờ sẽ đƣợc tiến hành trong không gian 3 chiều trở nên rất phức tạp đòi hỏi tốn một chi phí về thời gian rất lớn và yêu cầu chuyên gia có tƣ duy trừu tƣợng tốt mới có thể dể dàng thực hiện đƣợc.

+) Tạo các ca kiểm thử theo phƣơng pháp cải tiến:

Bƣớc 1: Xây dựng bảng quan hệ tƣơng tác giữa các biến thông qua các lệnh trong

chƣơng trình

Bảng 2.3: Quan hệ tương tác giữa các biến của chương trình.

Toán(X) Văn(Y) Nghề(Z) X<0 || X>10 có Y<0 || Y>10 có X<=2 có Y<=2 có Z<8 có ((3 * x + 2 * y) / 5) >= 6 có có ((3 * x + 2 * y) / 5) +1 >= 6 có có

Từ Bảng 2.3 ta thấy có biến Z (điểm nghề) là không có mối quan hệ tƣơng tác trực tiếp với hai biến X (Toán) và Y (Văn). Vậy ta tách riêng để kiểm thử hai nhóm: Nhóm 1 gồm biến X, biến Y và các lệnh tƣơng tác với chúng. Nhóm 2 gồm biến Z và các lệnh tƣơng tác với nó.

Bƣớc 2: Tiến hành xây dựng các ca kiểm thử cho hai nhóm biến:

Nhóm 1: Biến X, Y

Với biến X và Y ta cũng chi ra làm hai trƣờng hợp, tuy nhiên theo tinh thần chung từ đầu ta sẽ chỉ xét trƣờng hợp thỏa mãn với điểm nghề <8. Ta có đồ thì mô tả miền dữ liệu đầu vào tƣơng ứng trong không gian hai chiều cho biến X và Y nhƣ trong Hình 2.11:

Hình 2.11: Các miền đầu vào của chương trình xét với hai biến X và Y trong Ví dụ 06 khi điểm nghề <8.

Xét với biên AB ta sẽ có đƣợc 3 ca kiểm thử nhƣ trong Bảng 2.4:

Bảng 2.4: Các ca kiểm thử cho kết quả tốt nghiệp trong trường hợp điểm nghề <8 với hai biến X và Y. STT Ca kiểm thử 1 A(X2,Y1) 2 B(X2,Y2) 3 E(X2,Y3) Nhóm 2: Biến Z:

Hình 2.12: Các miền đầu vào của chương trình xét với biến Z trong Ví dụ 06 khi điểm nghề <8.

Khi đó ta sẽ có đƣợc danh sách các ca kiểm thử nhƣ trong Bảng 2.5:

Bảng 2.5: Các ca kiểm thử cho kết quả tốt nghiệp trong trường hợp điểm nghề <8 với biến Z.

STT Ca kiểm thử

1 A(Z1) 2 B(Z2) 3 C(Z3)

Bƣớc 3: Tổ hợp hai nhóm các ca kiểm thử để có danh sách các ca kiểm thử cho chƣơng trình với trƣờng hợp biên AB khi điểm nghề <8:

Bảng 2.6: Các ca kiểm thử cho kết quả tốt nghiệp trong trường hợp điểm nghề <8 với phương pháp mới. STT Ca kiểm thử 1 A(X2,Y1,Z1) 2 B(X2,Y2,Z1) 3 C(X2,Y3,Z1) 4 D(X2,Y1,Z2) 5 E(X2,Y2,Z2) 6 F(X2,Y3,Z2) 7 G(X2,Y1,Z3) 8 H(X2,Y2,Z3) 9 I(X2,Y3,Z3)

So sánh Bảng 2.2 và Bảng 2.6 ta thấy các ca kiểm thử bôi đậm trong Bảng 2.6 trùng với các ca kiểm thử sinh ra theo phƣơng pháp cũ trong Bảng 2.2. Vậy các ca kiểm thử mới sinh ra theo phƣơng pháp này hoàn toàn bao phủ đƣợc các ca kiểm thử sinh ra theo phƣơng pháp cũ của kiểm thử miền.

+) Kết luận:

Với phƣơng pháp mới ta có các ƣu điểm và nhƣợc điểm nhƣ sau:

Ƣu điểm: Dễ dàng trong khâu phân tích, không đòi hỏi ngƣời phân tích phải là chuyên gia và có tƣ duy trừu tƣợng tốt.

Nhƣợc điểm: Số lƣợng các ca kiểm thử sinh ra nhiều hơn so với phƣơng pháp cũ. Do đó cần cải tiến hơn nữa để việc phân tích nhóm các biến là tốt nhất.

Chƣơng 3: THỰC NGHIỆM KIỂM THỬ MIỀN

Dựa vào các kết quả đã nghiên cứu trong các chƣơng trƣớc. Trong Chƣơng 3 tiến hành thực nghiệm với một chƣơng trình mô tả đơn giản. Từ đặc tả ban đầu xây dựng một đoạn code (có chứa lỗi chƣơng trình). Sau đó dựa trên đoạn code ban đầu này ta tiến hành xây dựng các ca kiểm thử theo phƣơng pháp kiểm thử miền và phƣơng pháp kiểm thử dòng điều khiển, kết hợp với các đặc tả chƣơng trình để đƣa ra các kết quả dự kiến cho các ca kiểm thử và tiến hành kiểm thử với chƣơng trình đƣợc xây dựng từ đoạn code trên để so sánh hai Kết quả đầu ra dự kiến và Kết quả đầu ra thực tế. Từ đó đánh giá đƣợc khả năng phát hiện lỗi của các ca kiểm thử theo hai phƣơng pháp.

3.1 Mô tả bài toán

Bài toán: Trƣờng cấp 3 A tổ chức thi tuyển sinh với hai môn Toán và Văn. Điểm liệt

là điểm ≤ 2. Điểm xét tuyển là điểm trung bình của hai môn Toán và Văn, trong đó môn Toán có hệ số 3 còn môn văn có hệ số 2. Mọi sinh viên có điểm trung bình từ 6 trở lên đủ điểm vào trƣờng. Không tính điểm cộng cho các thí sinh tham gia thi.

Phân tích: Xây dựng chƣơng trình xettuyen đáp ứng các yêu cầu sau:

- Nhập vào hai điểm Toán và Văn;

- Điểm liệt là điểm ≤ 2, các học sinh bị điểm liệt loại;

- Tính điểm trung bình theo công thức (Toán*3 + Văn *2)/5;

- Học sinh có điểm trung bình ≥ 6 đủ điểm vào trƣờng;

+) Mã thực thi bài toán:

Giả sử từ yêu cầu chƣơng trình ta xây dựng đƣợc đoạn mã của chƣơng trình trên nhƣ trong Bảng 3.1, trong đó ta sẽ tạo ra một lỗi của chƣơng trình.

Bảng 3.1: Chương trình xét tuyển cấp 3

public string xettuyen(float toan, float van) {

string tb = ""; float x = toan; float y = van;

if (x < 0 || x > 10) { tb = "Điểm toán không hợp lệ"; } else {

if (y < 0 || y > 10) { tb = "Điểm văn không hợp lệ"; } else {

if (x <= 2) { tb = "Điểm toán bị liệt"; } else {

if (y <= 2) { tb = "Điểm văn bị liệt"; } else {

if (((3 * x + 2 * y) / 6) >= 6) { tb = "Đủ điểm trúng tuyển"; } else {

tb = "Chƣa đủ điểm trúng tuyển"; } } } }

}

return tb; }

3.2 Xây dựng các ca kiểm thử với phƣơng pháp kiểm thử miền 3.2.1 Xác định các miền từ mã nguồn chƣơng trình 3.2.1 Xác định các miền từ mã nguồn chƣơng trình

Từ mã nguồn trong Bảng 3.1 ta xây dựng một biểu đồ luồng dữ liệu trong Hình 3.1

Từ Hình 3.1 ta thấy các điểm vị từ xuất hiện tại các nút 4, 6, 8, 10, 12.

Ta xây dựng đƣợc các miền cho chƣơng trình từ biểu đồ trong Hình 3.1 và đƣợc thể hiện nhƣ trong Hình 3.2. Số thứ tự các miền sắp xếp phù hợp, ta gọi miền thỏa mãn đủ điểm trúng tuyển là miền 1.

Ta đi phân tích các bƣớc để có quy trình xác định các miền nhƣ sau:

- Bước 1: xét vị từ tại nút 4 trong Hình 3.1(bao gồm hai vị từ)

P11: x < 0 và P12: x > 10

Hai vị từ này chia miền vào thành ba miền bằng hai đƣờng biên P11 và P12 trong Hình 3.2, trong đó hai miền D7 và D8 là hai miền mà dữ liệu biến x vào không hợp lệ, miền còn lại ở giữa 2 miền này dữ liệu biến x nhập và là hợp lệ

- Bước 2: xét vị từ tại nút 6 trong Hình 3.1(bao gồm hai vị từ)

P21: y < 0 và P22: y > 10

Hai vị từ này chia miền hợp lệ còn lại cũng thành 3 miền bằng hai đƣờng biên P21

và P22. Trong đó hai miền D5 và D6 là hai miền biến y nhập vào không hợp lệ.

Ta xác định đƣợc 4 miền mà giá trị của x hoặc y nhập vào không hợp lệ (D5, D6, D7, D8).

- Bước 3: xét vị từ tại nút thứ 8 trong Hình 3.1

P3: x ≤ 2

Vị từ này chia miền hợp lệ còn lại thành hai miền ngăn cách bởi biên P3, trong đó miền D3 xác định các giá trị mà có biến x nhập vào bị điểm liệt và một miền khác chứa các giá trị mà biến x nhập vào không phải điểm liệt.

Hình 3.1: Biểu đồ dòng điều khiển của chương trình xét tuyển cấp 3

- Bước 4: xét vị từ tại nút 10 trong Hình 3.1

P4: y ≤ 2

Vị từ này chia miền còn lại (miền chứa các giá trị biến x không phải điểm liệt) thành hai miền, trong đó miền là D4 chứa các giá trị mà điểm y nhập vào là điểm liệt.

Hình 3.2: Các miền đầu vào của chương trình

- Bước 5: xét vị từ tại nút 12 trong Hình 3.1

P5: (3*x + 2*y)/6 ≥ 6

Vị từ này chia miền còn lại chứa các giá trị nhập vào hợp lệ và không phải điểm liệt có từ bƣớc 4 thành hai miền D1 và D2. Trong đó D2 chứa các giá trị mà điểm nhập vào hợp lệ, trên điểm liệt nhƣng điểm trung bình không đạt. Miền D1 chứa các giá trị hợp lệ, trên điểm liệt và điểm trung bình đạt điểm vào trƣờng.

Vậy ta đã xác định đƣợc 8 miền đầu vào của chƣơng trình, trong đó miền D1 chứa các giá trị nhập vào đủ tiêu chuẩn đỗ vào trƣờng. Các mũi tên trên biên hƣớng chỉ vào miền mà biên xác định là biên đóng đối với miền đó.

3.2.2 Xây dựng các ca kiểm thử cho từng miền.

Từ Hình 3.2 ta xác định đƣợc 8 miền cần phải kiểm tra. Do phạm vi báo cáo của luận văn có hạn nên ta tiến hành thực hiện với một miền D1, các miền khác hoàn toàn tƣơng tự.

Kỹ thuật chính trong trƣờng hợp này sử dụng để xác định các ca kiểm thử là kỹ thuật xác định 2 điểm ON và một điểm OFF (việc áp dụng các kỹ thuật nào phụ thuộc vào yêu cầu chính xác và độ phức tạp của từng bài toán). Trong đó các điểm ON ở vị trí càng cách xa nhau càng đem lại chất lƣợng cao cho ca kiểm thử.

Từ Hình 3.2 ta thấy miền D1 đƣợc xác định bởi 3 biên bao quanh tạo thành tam giác EKH có các đặc điểm:

- Có 3 biên là EK, KH và HE;

- Trong đó cả 3 biên đều là biên đóng với miền D1;

- Có 3 điểm cực biên: E, K, H;

*) Với biên EK là biên đóng của miền D1:

Ta xác định đƣợc một điểm ON là E(10, 10).

Điểm ON thứ 2 là giao giữa P12 và P5: ta xác định đƣợc điểm ON thứ 2 là K(10, 3) Do biên EK là biên đóng với miền D1 nên ta xác định đƣợc một điểm OFF ở giữa khoảng E,K và nằm ngoài biên D1, ta xác định đƣợc điểm OFF là OEK(10.1, 6.5).

Lưu ý: Tùy vào tính chất các biến mà ta có đƣợc khái niệm gọi là khoảng cách

ngắn nhất khác nhau. Ví dụ biến nhập vào là các số nguyên thì khoảng cách ngắn nhất có thể xác định là 1. Trong bài tập này ta coi điểm đƣợc làm tròn 1 chữ số sau dấu phẩy nên khoảng cách ngắn nhất lúc này là 0,1.

Vậy ta có đƣợc 3 ca kiểm thử cho miền D1 tƣơng ứng với biên EK nhƣ trong Bảng 3.2.

Bảng 3.2: Các ca kiểm thử cho miền D1 tương ứng với biên EK

STT Ca kiểm thử

1 (10, 10) 2 (10, 3) 3 (10.1, 6.5)

*) Với biên KH là biên đóng so với miền D1:

Vì K là giao của P12 với P5 và cả hai biên này đều là biên đóng so với miền D1 nên ta xác định đƣợc một điểm ON là K(10, 3).

Điểm ON thứ 2 là giao của P22 với P5 là điểm H(5.4, 10).

Vì KH là biên đóng với miền D1 nên điểm OFF nằm ngoài miền D1, ta xác định đƣợc điểm OFF là OKH(7.6, 6.5).

Hình 3.4: Xác định điểm ON và OFF trên biên KH cho miền D1

Bảng 3.3: Các ca kiểm thử cho miền D1 tương ứng với biên KH

STT Ca kiểm thử

1 (10, 3) 2 (5.4, 10) 3 (7.6, 6.5)

*) Với biên HE là biên đóng so với miền D1:

Ta có thể xác định đƣợc ngay hai điểm ON nằm trên biên HE là điểm H(5.4, 10) và điểm E(10, 10).

Vì HE là biên đóng với miền D1 nên ta xác định một điểm OFF bên ngoài biên là OHE(7.7, 10.1)

Hình 3.5: Xác định điểm ON và OFF trên biên HE cho miền D1

Vậy trong trƣờng hợp này ta có 3 ca kiểm thử nhƣ trong Bảng 3.4

Bảng 3.4: Các ca kiểm thử cho miền D1 tương ứng với biên HE

STT Ca kiểm thử

1 (5.4, 10) 2 (10, 10) 3 (7.7, 10.1)

*) Danh sách các ca kiểm thử cho miền D1:

Tổng hợp từ các bảng 3.2, 3.3, 3.4 ta có danh sách các ca kiểm thử cho miền D1 nhƣ trong Bảng 3.5, kết hợp với các đặc tả yêu cầu ban đầu của bài toán ta xác định đƣợc Kết quả dự kiến cho các ca kiểm thử:

Bảng 3.5: Danh sách các ca kiểm thử cho miền D1

STT Ca kiểm thử Kết quả dự kiến

1 (10, 10) Đủ điểm trúng tuyển

2 (10, 3) Đủ điểm trúng tuyển

3 (10.1, 6.5) Điểm toán không hợp lệ

4 (7.6, 6.5) Đủ điểm trúng tuyển

5 (5.4, 10) Đủ điểm trúng tuyển

6 (7.7, 10.1) Điển văn không hợp lệ

3.3 Ứng dụng các ca kiểm thử có đƣợc từ phƣơng pháp kiểm thử miền để kiểm tra tính chính xác của phần mềm miền để kiểm tra tính chính xác của phần mềm

Từ mô tả bài toán trong Phần 3.1 ta xây dựng một chƣơng trình thực hiện chức năng nhận điểm nhập vào và trả về kết quả việc điểm đủ tiêu chí trúng tuyển hay không. Để minh họa cho khả năng phát hiện lỗi chƣơng trình của các ca kiểm thử xây dựng trong Phần 3.2, ta xây dựng hai mô-đun minh họa cho chƣơng trình. Mô-đun xét

trúng tuyển 01 xây dựng chính xác chức năng theo đặc tả bài toán và Mô-đun xét trúng tuyển 02 đƣợc dùng mã từ Bảng 3.1 (trong Bảng 3.1 có một lỗi tiềm ẩn để thử

nghiệm chất lƣợng của các ca kiểm thử).

3.3.1 Kiểm thử với mô-đun “Mô-đun xét trúng tuyển 01”

Trong mô-đun này ta lần lƣợt thử nghiệm với các ca kiểm thử đã xây dựng trong Phần 3.2 để thu các kết quả thực tế. Kết quả thu đƣợc trong Bảng 3.6 với hai cột Kết quả dự kiếnKết quả thực nghiệm.

Bảng 3.6: So sánh kết quả thực nghiệm các ca kiểm thử trong mô-đun 1

STT Ca kiểm thử Kết quả dự kiến Kết quả thực nghiệm

1 (10, 10) Đủ điểm trúng tuyển Đủ điểm trúng tuyển 2 (10, 3) Đủ điểm trúng tuyển Đủ điểm trúng tuyển 3 (10.1, 6.5) Điểm toán không hợp lệ Điểm toán không hợp lệ 4 (7.6, 6.5) Đủ điểm trúng tuyển Đủ điểm trúng tuyển 5 (5.4, 10) Đủ điểm trúng tuyển Đủ điểm trúng tuyển 6 (7.7, 10.1) Điển văn không hợp lệ Điển văn không hợp lệ

So sánh hai cột kết quả ta thấy Mô-đun xét trúng tuyển 01 hoạt động bình

thƣờng.

3.3.2 Kiểm thử với mô-đun “Mô-đun xét trúng tuyển 02”

Trong mô-đun “Mô-đun xét trúng tuyển 02” có một lỗi trong lập trình liên quan đến miền D1 để kiểm tra khả năng bắt lỗi của bộ các ca kiểm thử này.

Cụ thể trong mã chƣơng trình khi xây dựng code ban đầu theo Bảng 3.1 có một lỗi nhƣ trong Hình 3.7.

Hình 3.7: Tạo ra lỗi trong chương trình xét tuyển cấp 3 ở Phần 3.1

Theo lý thuyết của kiểm thử miền, khi đó miền D1 của chƣơng trình sẽ bị thay đổi theo hƣớng giảm đi giống nhƣ trong Hình 3.8 do lỗi dịch chuyển biên xuất hiện. Biên P5 đƣợc thay bằng một biên P’5 mới song song với biên P5.

Hình 3.8: Lỗi dịch chuyển biên tạo ra trong đoạn code của hình 3.7

Ta đi tiến hành kiểm tra xem các ca kiểm thử xác định ở Phần 3.2 có phát hiện ra các lỗi này không:

Bảng 3.7: So sánh kết quả thực nghiệm các ca kiểm thử trong mô-đun 2

STT Ca kiểm thử Kết quả dự kiến Kết quả thực nghiệm

1 (10, 10) Đủ điểm trúng tuyển Đủ điểm trúng tuyển

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu, nghiên cứu các kỹ thuật cho kiểm thử miền và cải tiến các kỹ thuật đó (Trang 54)

Tải bản đầy đủ (PDF)

(76 trang)