Khi design testcase, với trường hợp điều kiện đầu vào riêng lẻ thường sử dụng phân vùng tương đương và phân tích giá trị biên, với trường hợp kết hợp nhiều điều kiện đầu vào thường sử dụng bảng quyết định. Trên thực tế, không phải lúc nào tester cũng có đủ thời gian để test tất cả trường hợp trên. Mục tiêu của tester là tìm ra nhiều bug nhất có thể trong giới hạn thời gian (time box) và chi phí.
Có thể bạn đã biết Compatibility testing là kiểm tra xem phần mềm có hoạt động tốt trên các phần cứng, hệ điều hành, network,… khác nhau hay không. Để chắc chắn được điều đó thì cách duy nhất là test phần mềm trên tất cả cấu hình.
Giả sử phần mềm của bạn có tính năng X tương tác với các yếu tố sau:
Nếu áp dụng bảng quyết định, tổng số cấu hình cần test là 3 OS * 5 Browser * 2 Connect = 30. Nếu test tính năng X trên 1 cấu hình cần 10 testcase, thì test trên 30 cấu hình sẽ thành 10 * 30 = 300 testcase, nghe có vẻ vẫn ổn. Nhưng nếu test tính năng X trên 1 cấu hình cần 100 testcase, thì test trên 30 cấu hình sẽ thành 100 * 30 = 3000 testcase, bắt đầu hơi hoang mang rồi đấy @@.
Khi bị giới hạn thời gian, tester sẽ chọn random vài cấu hình để test. Nhưng vấn đề là “random” thế nào để đạt được hiệu quả tốt nhất. Đến đây thì xuất hiện 1 thằng tên là Pairwise testing, hay All-pairs testing, hay Orthogonal array, hay 2-wise =))
Theo ISTQB Glossary, Pairwise testing là A black-box test technique in which test cases are designed to exercise pairs of parameter-value pairs
. Định nghĩa có vẻ hơi lú nhỉ @@. Hiểu đơn giản hơn thì Pairwise testing đảm bảo mỗi cặp giá trị của các điều kiện đầu vào sẽ được test ít nhất 1 lần. Theo ví dụ trên thì mỗi cặp Windows + Chrome, Safari + Bluetooth,… sẽ được test ít nhất 1 lần.
Bước 1: Xác định số giá trị của mỗi điều kiện đầu vào
Bước 2: Kết hợp điều kiện đầu vào theo từng cặp
Lấy giá trị lớn nhất -> số cấu hình cần test là 15. Giảm hẳn từ 30 xuống 15 luôn nhé ^^
Bước 3: Điền giá trị vào bảng sao cho mỗi cặp giá trị của các điều kiện đầu vào xuất hiện ít nhất 1 lần
No. | OS | Browser | Connect |
---|---|---|---|
1 | Windows | Chrome | USB |
2 | Windows | Firefox | Bluetooth |
3 | Windows | Edge | USB |
4 | Windows | Safari | Bluetoooth |
5 | Windows | Opera | USB |
6 | MacOS | Chrome | Bluetooth |
7 | MacOS | Firefox | USB |
8 | MacOS | Edge | Bluetooth |
9 | MacOS | Safari | USB |
10 | MacOS | Opera | Bluetooth |
11 | Linux | Chrome | USB |
12 | Linux | Firefox | Bluetooth |
13 | Linux | Edge | USB |
14 | Linux | Safari | Bluetooth |
15 | Linux | Opera | USB |
Dễ nhờ ^^. Đấy là theo lý thuyết thôi. Bạn chợt nhận ra Safari chỉ có trên MacOS, version 5.x.x còn hỗ trợ Windows và Linux thì không có gía trị trong testing. Vậy là số (4) và số (14) coi như bỏ.
No. | OS | Browser | Connect |
---|---|---|---|
1 | Windows | Chrome | USB |
2 | Windows | Firefox | Bluetooth |
3 | Windows | Edge | USB |
4 | Windows | Opera | USB |
5 | MacOS | Chrome | Bluetooth |
6 | MacOS | Firefox | USB |
7 | MacOS | Edge | Bluetooth |
8 | MacOS | Safari | USB |
9 | MacOS | Opera | Bluetooth |
10 | Linux | Chrome | USB |
11 | Linux | Firefox | Bluetooth |
12 | Linux | Edge | USB |
13 | Linux | Opera | USB |
Xong chưa nhỉ? Hình như mới chỉ có cặp Safari * USB, thiếu cặp Safari * Bluethooth rồi. Thêm vào thôi.
No. | OS | Browser | Connect |
---|---|---|---|
1 | Windows | Chrome | USB |
2 | Windows | Firefox | Bluetooth |
3 | Windows | Edge | USB |
4 | Windows | Opera | USB |
5 | MacOS | Chrome | Bluetooth |
6 | MacOS | Firefox | USB |
7 | MacOS | Edge | Bluetooth |
8 | MacOS | Safari | USB |
9 | MacOS | Safari | Bluetooth |
10 | MacOS | Opera | Bluetooth |
11 | Linux | Chrome | USB |
12 | Linux | Firefox | Bluetooth |
13 | Linux | Edge | USB |
14 | Linux | Opera | USB |
Vậy chốt lại thực tế là có 14 cấu hình.
Từ ví dụ trên có thể thấy:
Để khắc phục nhược điểm thứ 2 thì có rất nhiều tool ở đây https://www.pairwise.org/tools.html
. Demo thử với Pairwiser nhá, link nè https://inductive.no/pairwiser-tool/
.
Giao diện ban đầu của Pairwiser như thế này:
Bước 1: Tạo test plan bằng cách click New -> Nhập tên test plan -> Click OK Bước 2: Tại tab Define Parameters, nhập các điều kiện đầu vào và ràng buộc nếu có -> Click Save
Bước 3: Tại tab Generate Tests, click Generate Tests để xem trực tiếp hoặc click Export to Excel để download file .xlsx
Xong rồi đó, bye ><