Xây dựng các chiến lƣợc lựa chọn ca kiểm thử

Một phần của tài liệu 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 36)

Trong phần này, chúng ta sẽ tìm hiểu cách tác giả giải thích các phƣơng pháp để lựa chọn các ca kiểm thử với các trƣờng hợp xuất hiện lỗi khác nhau trong kiểm thử miền và chứng minh đƣợc rằng dữ liệu thử nghiệm đã đƣợc lựa chọn sẽ tiết lộ lỗi miền xác định tại Phần 1.2.3.

a. Tổng quan các trƣờng hợp xuất hiện lỗi miền:

Đối với từng miền và cho mỗi biên, chọn hai điểm ON là A, B và một điểm OFF là C. Tiêu chí này tạo ra dữ liệu thử nghiệm cho thấy lỗi miền. Tuy nhiên tùy thuộc vào mỗi loại biên và loại lỗi miền mà các tiêu chí lựa chọn các ca kiểm thử cũng có sự khác nhau, cụ thể nhƣ sau:

+) Trƣờng hợp biên đóng với miền xét (Closed inequality boundary)

- Dịch chuyển biên làm giảm đi độ lớn miền (Boundary shift resulting in a reduced domain)

- Dịch chuyển biên làm mở rộng độ lớn miền (Boundary shift resulting in an enlarged domain)

- Nghiêng biên (Boundary tilt) - Lỗi đóng biên (Closure error)

+) Trƣờng hợp biên mở với miền xét (Open inequality boundary)

- Dịch chuyển biên làm giảm đi độ lớn miền (Boundary shift resulting in a reduced domain)

- Dịch chuyển biên làm mở rộng độ lớn miền (Boundary shift resulting in an enlarged domain)

- Nghiêng biên (Boundary tilt) - Lỗi đóng biên (Closure error) +) Biên bình đẳng(Equality boundary)

Để thuận tiện và tổng quát, tác giả xem xét trƣờng hợp bất đẳng thức chứa 2 biến quan hệ nhau, khi đó sẽ xây dựng miền vào cho các ca kiểm thử mô phỏng trong không gian miền hai chiều. Xem xét hai miền liền kề D1 và D2, giả thiết rằng việc tính toán chƣơng trình tƣơng ứng với D1 và D2 sẽ thu đƣợc f1 và f2, và f1 ≠ f2.

b. Trƣờng hợp biên đóng với miền đang xét

+) Biên dịch chuyển làm cho miền xét bị giảm đi:

Biên giữa hai miền D1 và D2 đã đƣợc dịch chuyển bởi một số lƣợng nhất định (xem Hình 1.15).

Hình 1.15: Biên dịch chuyển làm giảm đi độ lớn miền xét (closed inequality).

Trong hình này ta thấy biên thực tế giữa hai miền và một vị trí tùy ý của biên mong đợi. Cần chú ý rằng tác giả sẽ giả thuyết không biết chính xác vị trí của biên mong đợi. Biên dự kiến đã đƣợc hiển thị chỉ để giải thích rằng biên thực tế đã di chuyển ra khỏi biên dự kiến và để chứng minh phƣơng pháp này sẽ xây dựng các Ca kiểm thử đƣa ra đƣợc lỗi trong trƣờng hợp này.

Biên giữa hai miền là đóng đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D1, và điểm OFF C thuộc miền D2. Vì vậy mà kết quả đầu ra thực tế từ chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C ta sẽ đƣợc f1(A), f1(B), và f2(C) tƣơng ứng.

Rõ ràng ta thấy trong Hình 1.15 nếu trong trƣờng hợp không có bất kỳ sự thay đổi biên nào (có nghĩa là sẽ không có lỗi xuất hiện trong chƣơng trình) và biên xác định lúc này là d trùng với biên lý tƣởng. Khi đó tất cả các điểm kiểm tra đều thuộc về miền D1. Ta có kết quả đầu ra dự kiến tƣơng ứng để kiểm tra dữ liệu A, B, và C đƣợc f1(A), f1(B), và f1(C). Các kết quả đƣợc liệt kê trong Bảng 1.9 Chúng ta quan sát, bằng cách so sánh cột thứ hai và thứ ba của Bảng 1.9, kết quả thực tế và kết quả dự kiến là không giống hệt nhau cho điểm dữ liệu C. Do đó, điểm dữ liệu C cho thấy lỗi dịch chuyển biên.

Bảng 1.9: Phát hiện lỗi khi biên dịch chuyển làm giảm đi độ lớn miền xét (Closed Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f1(A) f1(A) Không

B f1(B) f1(B) Không

Điều quan trọng là chúng ta cần phải hiểu:

 Chúng ta không cần phải biết vị trí chính xác của biên mong đợi. Bởi vì cái mà chúng ta thực sự cần là kết quả chƣơng trình dự kiến để đáp ứng với ba điểm dữ liệu A, B, và C.

 Tất cả ba điểm dữ liệu A, B, và C không cần đồng thời phải tiết lộ các lỗi. Mục đích của chúng ta là để chỉ ra rằng dữ liệu thử nghiệm đƣợc lựa chọn theo các tiêu chí quy định nhƣ trên sẽ có khả năng để lộ các lỗi miền. Vì vậy chỉ cần thỏa mãn ít nhất một điểm dữ liệu cho thấy lỗi, khi đó ta có thể kết luận lỗi chƣơng trình xuất hiện với ca kiểm thử đƣợc lựa chọn.

 Nếu điểm C cách biên một khoảng cách có độ lớn là a, sau đó biên sẽ dịch chuyển một đoạn nhỏ hơn độ lớn a này thì lỗi miền không thể đƣợc phát hiện. Vì khi đó Kết quả dự kiến f2(C) giống hệt với Kết quả thực tế f2(C).

+) Biên dịch chuyển để nhận đƣợc miền rộng hơn:

Để phát hiện lỗi này, chúng ta theo dõi Hình 1.16, nơi mà biên giữa hai miền D1 và D2 đã chuyển từ vị trí dự kiến d của nó đến vị trí thực tế d’ làm cho kích thƣớc của miền D1 đƣợc xem xét đã mở rộng.

Hình 1.16: Biên dịch chuyển làm tăng độ lớn miền xét (closed inequality).

Một lần nữa, chúng ta không biết chính xác vị trí của biên mong đợi. Biên giữa hai miền là đóng đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D1, và điểm OFF C thuộc miền D2. Vì vậy mà kết quả đầu ra thực tế từ chƣơng trình tƣơng ứng cho việc để kiểm tra các dữ liệu A, B, và C là f1(A), f1(B), và f2(C). (adsbygoogle = window.adsbygoogle || []).push({});

Từ Hình 1.16 ta thấy, trong trƣờng hợp không có bất kỳ sự thay đổi biên, tất cả các điểm kiểm tra thuộc về miền D2. Và khi đó, kết quả mong đợi tƣơng ứng để kiểm tra dữ liệu A, B, và C là f2(A), f2(B), và f2(C). Chúng ta quan sát từ Bảng 1.10 là Kết quả thực tế và Kết quả dự kiến không giống nhau cho các điểm dữ liệu A và B.

Bảng 1.10: Phát hiện lỗi khi biên dịch chuyển làm tăng độ lớn miền xét (Closed Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f1(A) f2(A) Có

B f1(B) f2(B) Có

C f2(C) f2(C) Không

Do đó, các điểm dữ liệu A và B tiết lộ lỗi dịch chuyển biên. Nếu độ lớn của sự dịch chuyển là nhỏ hơn a mà điểm OFF cách biên một đoạn a thì sự dịch chuyển biên không thể đƣợc phát hiện bởi các dữ liệu thử nghiệm.

+) Biên nghiêng:

Trong Hình 1.17 ta thấy: biên giữa hai miền D1 và D2 đã nghiêng đi một góc, biên giữa hai miền là biên đóng đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D1, và điểm OFF là C thuộc miền D2. Khi đó kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C lần lƣợt là f1(A), f1(B), và f2(C). Rõ ràng từ Hình 1.17 ta thấy rằng trong trƣờng hợp biên không nghiêng so với dự kiến, có nghĩa là biên thực tế trùng với biên dự kiến, khi đó điểm A nằm trong phạm vi của D1 và điểm kiểm tra B và C nằm trong phạm vi D2.

Hình 1.17: Biên nghiêng (closed inequality).

Ta có kết quả mong đợi tƣơng ứng để kiểm tra dữ liệu A, B, và C sẽ đƣợc f1(A), f2(B), và f2(C). Bằng cách so sánh cột thứ hai và thứ ba của Bảng 1.11, chúng ta nhận thấy rằng Kết quả thực tế và Kết quả dự kiến là không giống hệt nhau cho điểm kiểm tra B. Do đó, điểm kiểm tra B cho thấy lỗi nghiêng biên giới.

Bảng 1.11: Phát hiện lỗi nghiêng biên (Closed Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f1(A) f1(A) Không

B f1(B) f2(B) Có

C f2(C) f2(C) Không

+) Lỗi đóng biên:

Biên mong đợi giữa hai miền trong Hình 1.18 là đóng đối với miền D1. Tuy nhiên, trong quá trình thực hiện thực tế, nó lại đƣợc mở đối với D1. Kết quả là một lỗi đóng biên xuất hiện và khi đó thì biên giữa hai miền nằm lại nằm trong miền D2.

Hình 1.18: Lỗi đóng biên (closed inequality).

Hai điểm A và B thuộc về miền D2, và điểm OFF là C thuộc miền D1. Do đó kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C là f2(A), f2(B), và f1(C).

Bảng 1.12: Phát hiện lỗi đóng biên (Closed Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f2(A) f1(A) Có

B f2(B) f1(B) Có

C f1(C) f1(C) Không

Trong trƣờng hợp không có bất kỳ lỗi đóng nào thì tất cả ba điểm thử nghiệm A, B và C đều nằm trong phạm vi D1. Các kết quả đƣợc liệt kê trong Bảng 1.12. Bằng cách so sánh cột thứ hai và thứ ba của Bảng 1.12, chúng ta nhận thấy rằng Kết quả thực tế

và Kết quả dự kiến là không giống nhau cho các điểm dữ liệu A và B. Do đó, các điểm dữ liệu A và B tiết lộ lỗi biên đóng.

c. Trƣờng hợp biên mở với miền đang xét

+) Biên dịch chuyển làm cho miền xét bị giảm đi:

Để giải thích việc phát hiện lỗi của kiểu này, chúng ta sử dụng Hình 1.19, nơi biên giữa hai miền D1 và D2 đã dịch chuyển một đoạn nhất định. Biên giữa hai miền là mở đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D2, và điểm OFF là C thuộc miền D1. Vì vậy kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C là f2(A), f2(B), và f1(C). Rõ ràng từ Hình 1.19 cho ta thấy rằng, trong trƣờng hợp không có bất kỳ sự dịch chuyển biên nào thì tất cả các điểm kiểm tra đều thuộc về miền D1. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 1.19: Biên dịch chuyển làm giảm đi độ lớn miền xét (open inequality).

Và kết quả mong đợi tƣơng ứng khi kiểm tra dữ liệu A, B, và C có đƣợc là f1(A), f1(B), và f1(C). So sánh các cột thứ hai và thứ ba của Bảng 1.13, chúng ta thấy rằng Kết quả thực tế và Kết quả dự kiến là không giống nhau cho tại điểm dữ liệu A và B. Do đó, điểm dữ liệu A và B cho thấy lỗi chuyển biên giới.

Bảng 1.13: Phát hiện lỗi khi biên dịch chuyển làm giảm đi độ lớn miền (Open Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f2(A) f1(A) Có

B f2(B) f1(B) Có

C f1(C) f1(C) Không

+) Biên dịch chuyển để nhận đƣợc miền rộng hơn:

Chúng ta sử dụng Hình 1.20 để giải thích cách phát hiện của các loại lỗi. Biên giữa hai miền D1 và D2 đã dịch chuyển để mở rộng kích thƣớc của miền D1 đƣợc xem xét.

Biên giữa hai miền là mở đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D2, và điểm OFF C thuộc miền D1. Khi đó kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C là f2(A), f2(B), và f1(C). Theo dõi Hình 1.20 ta thấy, trong trƣờng hợp không có bất kỳ sự dịch chuyển biên, tất cả các điểm kiểm tra thuộc về miền D2. Do đó, kết quả mong đợi tƣơng ứng để kiểm tra dữ liệu A, B, và C lần lƣợt là f2(A), f2(B), và f2(C).

Hình 1.20: Biên dịch chuyển làm tăng độ lớn miền xét (open inequality).

Các kết quả đƣợc liệt kê trong Bảng 1.14. Từ Bảng 1.14, chúng ta thấy rằng điểm dữ liệu C cho thấy lỗi chuyển biên giới.

Bảng 1.14: Phát hiện lỗi khi biên dịch chuyển làm tăng độ lớn miền xét (Open Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f2(A) f2(A) Không

B f2(B) f2(B) Không

C f1(C) f2(C) Có

+) Nghiêng biên:

Chúng ta giải thích lỗi nghiêng biên bằng cách tham khảo Hình 1.21, nơi mà biên giữa hai miền D1 và D2 đã nghiêng. Một lần nữa, chúng ta không biết chính xác vị trí của biên mong đợi. Biên giữa hai miền là mở đối với miền D1. Do đó, hai điểm ON là A và B thuộc về miền D2, và điểm OFF là C thuộc miền D1. Khi đó kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng để kiểm tra dữ liệu A, B, và C lần lƣợt là f2(A), f2(B), và f1(C). Hình 1.21 cho thấy, trong trƣờng hợp biên không nghiêng thì điểm thử nghiệm A và C nằm trong phạm vi D1, và điểm B rơi vào miền D2. Do đó, kết quả mong đợi tƣơng ứng để kiểm tra dữ liệu A, B, và C đƣợc f1 (A), f2 (B), và f1 (C).

Hình 1.21: Lỗi nghiêng biên (open inequality).

Chúng ta so sánh các cột thứ hai và thứ ba của Bảng 1.15 cho thấy rằng kết quả thực tế và kết quả dự kiến là không giống nhau cho điểm kiểm tra A. Vì vậy điểm kiểm tra A sẽ cho thấy một lỗi nghiêng biên.

Bảng 1.15: Phát hiện lỗi khi nghiêng biên (Open Inequality)

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f2(A) f1(A) Có

B f2(B) f2(B) Không

C f1(C) f1(C) Không

+) Lỗi đóng biên:

Phát hiện loại lỗi này đƣợc giải thích bằng cách sử dụng hai miền nhƣ trong Hình 1.22, nơi mà biên dự kiến giữa hai miền là mở đối với miền D1. Tuy nhiên, trong thực tế nó lại là biên đóng đối với D1, kết quả là một lỗi đóng xuất hiện. Ta có hai điểm A và B thuộc về miền D1, và điểm OFF là C thuộc miền D2. Do đó kết quả đầu ra thực tế từ các chƣơng trình tƣơng ứng khi kiểm tra với dữ liệu A, B, và C là f1(A), f1(B), và f2(C). Hình 1.22 cho thấy, trong trƣờng hợp không có bất kỳ lỗi đóng biên nào thì tất cả ba điểm thử nghiệm A, B và C đều nằm trong phạm vi D2.

Bảng 1.16 cho thấy kết quả đầu ra thực tế và kết quả mong đợi. Bằng cách so sánh hai cột thứ 2 và thứ 3 của bảng 1.16, ta thấy rằng kết quả thực tế và kết quả dự kiến là không giống nhau cho các điểm A và B. Do đó, các điểm dữ liệu A và B tiết lộ lỗi biên đóng.

Bảng 1.16: Phát hiện lỗi khi xảy ra lỗi đóng biên (Open Inequality) (adsbygoogle = window.adsbygoogle || []).push({});

Ca kiểm thử Kết quả thực tế Kết quả dự kiến Phát hiện lỗi

A f1(A) f2(A) Có

B f1(B) f2(B) Có

C f2(C) f2(C) Không

d. Trƣờng hợp biên bình đẳng(Equality Boundary):

Đôi khi một miền có thể bao gồm một biên bình đẳng kẹp giữa hai miền mở, nhƣ trong Hình 1.23, D1 và D2 là hai miền mở đối với biên bình đẳng chung. Trong trƣờng hợp này, để kiểm tra biên chung, chúng ta chọn hai điểm ON là A và B trên biên và hai điểm OFF là C và D trong hai miền D1 và D2.

Trong trƣờng hợp này ta cũng xét tƣơng tự với 4 kiểu xuất hiện của lỗi nhƣ 2 phần trên.

Chƣơng 2: CÁC KỸ THUẬT CẢI TIẾN KIỂM THỬ MIỀN

Một phần của tài liệu 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 36)