HomeOur Team
Tổng quan về Pairwise testing

Tổng quan về Pairwise testing

By phuong.nguyen
Published in Testing
December 13, 2022
3 min read

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:

  • OS: Windows, MacOS, Linux (May là chưa chia ra Windows 10, 11,… đấy nhé =)))
  • Browser: Chrome, Firefox, Edge, Safari, Opera
  • Connect: USB, Bluetooth

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

  • OS: Windows, MacOS, Linux -> 3 giá trị
  • Browser: Chrome, Firefox, Edge, Safari, Opera -> 5 giá trị
  • Connect: USB, Bluetooth -> 2 giá trị

Bước 2: Kết hợp điều kiện đầu vào theo từng cặp

  • OS * Browser = 3 * 5 = 15
  • OS * Connect = 3 * 2 = 6
  • Browser * Connect = 5 * 2 = 10

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.OSBrowserConnect
1WindowsChromeUSB
2WindowsFirefoxBluetooth
3WindowsEdgeUSB
4WindowsSafariBluetoooth
5WindowsOperaUSB
6MacOSChromeBluetooth
7MacOSFirefoxUSB
8MacOSEdgeBluetooth
9MacOSSafariUSB
10MacOSOperaBluetooth
11LinuxChromeUSB
12LinuxFirefoxBluetooth
13LinuxEdgeUSB
14LinuxSafariBluetooth
15LinuxOperaUSB

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.OSBrowserConnect
1WindowsChromeUSB
2WindowsFirefoxBluetooth
3WindowsEdgeUSB
4WindowsOperaUSB
5MacOSChromeBluetooth
6MacOSFirefoxUSB
7MacOSEdgeBluetooth
8MacOSSafariUSB
9MacOSOperaBluetooth
10LinuxChromeUSB
11LinuxFirefoxBluetooth
12LinuxEdgeUSB
13LinuxOperaUSB

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.OSBrowserConnect
1WindowsChromeUSB
2WindowsFirefoxBluetooth
3WindowsEdgeUSB
4WindowsOperaUSB
5MacOSChromeBluetooth
6MacOSFirefoxUSB
7MacOSEdgeBluetooth
8MacOSSafariUSB
9MacOSSafariBluetooth
10MacOSOperaBluetooth
11LinuxChromeUSB
12LinuxFirefoxBluetooth
13LinuxEdgeUSB
14LinuxOperaUSB

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:

  • Ưu điểm: Giảm số lượng testcase, nhất là các trường hợp liên quan đến cấu hình vì lượng testcase tăng theo cấp số nhân.
  • Nhược điểm:
    • Vì không phải test tất cả nên vẫn có thể lack bug
    • Nếu các điều kiện phụ thuộc vào nhau thì khá khó khăn trong việc kết hợp bằng cơm

Để 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: Screen Shot 2022-12-18 at 15.11.56.png

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 Screen Shot 2022-12-18 at 15.21.17.png

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 Screen Shot 2022-12-18 at 15.25.13.png Screen Shot 2022-12-18 at 15.26.15.png

Xong rồi đó, bye ><


Tags

Pairwise testing

Share

phuong.nguyen

phuong.nguyen

Tester

Expertise

Related Posts

Tìm hiểu chương 1 giáo trình ISTQB-CTFL_Syllabus_2018_V3.1_Phần 1
Testing
Tìm hiểu chương 1 giáo trình ISTQB-CTFL_Syllabus_2018_V3.1_Phần 1
December 18, 2022
4 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media