Áp dụng kỹ thuật Pairwise testing trong design test case

Thursday, January 26, 2023
Edit this post


Pairwise testing là một trong các kỹ thuật kiểm thử hộp đen (black-box test technique) phổ biến giúp bạn có thể giảm thiểu số lượng test case nhưng vẫn đảm bảo test coverage ở một mức độ nào đó nhằm bảo vệ chất lượng của sản phẩm phần mềm và tránh để lọt bug. Hiểu và nắm vững pairwise testing là một kỹ năng nên có trong hành trang của một QA.

1. Ví dụ cơ bản

Giả sử bạn cần test một form thu thập thông tin với 3 trường (field/input) cùng các giá trị tương ứng như sau: Role, Username, Email.

Bước 1: Xác định các giá trị có thể cho từng trường/input:

- Role: Admin/User/Guest - 3 giá trị.
- Username: Correct/Incorrect - 2 giá trị.
- Email: Correct/Incorrect - 2 giá trị.

Điểm mấu chốt là bạn cần phải xác định được đúng các giá trị đầu vào có thể của mỗi trường hoặc input. Vì chỉ cần nhiều hơn hay ít hơn một giá trị cũng có thể ảnh hưởng đến số lượng test case cuối cùng, từ đó ảnh hưởng tới test coverage của chúng ta.

Bước 2: Xác định số lượng test case

Dựa vào số lượng giá trị có thể tính được số lượng test case cần tạo là 3 x 2 x 2 = 12, đây là số lượng test cần có để cover tất cả giá trị đầu vào của từng trường. Dễ thấy là với cách tính này, chỉ cần tăng nhẹ một giá trị đầu vào hoặc thêm vào một trường mới thì số lượng test case sẽ tăng lên một cách chóng mặt. Ví dụ: 3 x 3 x 2 = 18, 4 x 3 x 2 = 24, 5 x 3 x 3 = 45 v.v...

Với Pairwise testing, chúng ta có thể giảm số lượng test case bằng cách ghép đôi (pair) hai trường có số lượng input lớn nhất, trong trường hợp này là RoleUsername (hoặc Email cũng được). Từ đây, có thể thấy Pairwise testing là một kỹ thuật cụ thể của N-wise testing với N=2. Khi đó, số lượng test case sẽ giảm đi một nửa còn 3 x 2 = 6.

Bước 3: Kết hợp 2 đầu vào có số lượng giá trị lớn nhất

Điền cột Role trước:
Role Username Email
Admin
Admin
User
User
Guest
Guest

Sau đó điền cột Username:
Role Username Email
Admin Correct
Admin Incorrect
User Correct
User Incorrect
Guest Correct
Guest Incorrect

Bước 4: Điền các giá trị còn lại

Role Username Email
Admin Correct Incorrect
Admin Incorrect Correct
User Correct Incorrect
User Incorrect Correct
Guest Correct Incorrect
Guest Incorrect Correct

2. Ví dụ nâng cao

Giả sử chúng ta thêm vào một trường/input có các giá trị tương ứng như sau:
- Age: 0–18, 18–24, 24–40, >40 - 4 giá trị.

Nếu không áp dụng Pairwise, để cover tất cả các giá trị của 4 trường thì số lượng test case sẽ là 4 x 3 x 2 x 2 = 48. Áp dụng Pairwise, chúng ta sẽ chỉ cover 2 input có số lượng giá trị lớn nhất, trong trường hợp này là AgeRole, khi đó số lượng test case sẽ là 4 x 3 = 12, giảm đi 4 lần.

Bây giờ, bảng test case trông sẽ như bên dưới. Tương tự như trên, chúng ta sẽ fill cột AgeRole trước sao cho mỗi giá trị của cột Age sẽ được ghép với tất cả các giá trị của cột B chỉ một lần duy nhất. Ví dụ nếu bạn chỉ có 1 hàng 0–18 ghép với Admin là đúng, nhưng nếu bạn có 2 hàng 0–18 ghép với Admin là sai.
 
Age Role Username Email
0–18 Admin Correct Incorrect
0–18 User Incorrect Correct
0–18 Guest Correct Incorrect
18–24 Admin Incorrect Correct
18–24 User Correct Incorrect
18–24 Guest Incorrect Correct
24–40 Admin Correct Incorrect
24–40 User Incorrect Correct
24–40 Guest Correct Incorrect
> 40 Admin Incorrect Correct
> 40 User Correct Incorrect
> 40 Guest Incorrect Correct

3. Công cụ hỗ trợ

Bạn có thể dùng công cụ online sau: https://pairwise.yuuniworks.com/ để tính toán ra các test case dựa trên giá trị đầu vào. Công cụ này dựa trên công cụ offline Pict của Microsoft: https://github.com/microsoft/pict. Như hình bên dưới là tôi đang tính toán số lượng test case cho ví dụ nâng cao ở trên.


Kết luận

Pairwise testing là một kỹ thuật thiết kế test case đã được chứng minh là hiệu quả nhưng không hoàn hảo, do tính đúng đắn của nó phụ thuộc khá lớn vào việc chọn giá trị đầu vào, và chưa chắc đã có thể áp dụng được Pairwise cho mọi bài toán. Hơn nữa, việc lược bỏ test case dù bằng cách nào đi chăng nữa vẫn tiềm ẩn nguy cơ để lọt bug.  Do vậy, chỉ nắm vững một kỹ thuật này là chưa đủ, bạn cần sử dụng và kết hợp khéo léo Pairwise testing với các kỹ thuật khác để mang lại hiệu quả cao nhất. Chúc các bạn thành công!

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

BÌNH LUẬN

Cảm ơn bạn đã đọc bài viết của Cuộc Sống Tối Giản. Đây là một blog cá nhân, được lập ra nhằm mục đích lưu trữ và chia sẻ mọi thứ hay ho theo chủ quan của chủ sở hữu. Có lẽ vì vậy mà bạn sẽ thấy blog này hơi (rất) tạp nham. Mọi chủ đề đều có thể được tìm thấy ở đây, từ tâm sự cá nhân, kinh nghiệm sống, phim ảnh, âm nhạc, lập trình... Phần lớn các bài đăng trong blog này đều được tự viết, trừ các bài có tag "Sponsored" là được tài trợ, quảng cáo, hoặc sưu tầm. Để ủng hộ blog, bạn có thể share những bài viết hay tới bạn bè, người thân, hoặc có thể follow Kênh YouTube của chúng tôi. Nếu cần liên hệ giải đáp thắc mắc hoặc đặt quảng cáo, vui lòng gửi mail theo địa chỉ songtoigianvn@gmail.com. Một lần nữa xin được cảm ơn rất nhiều!!!
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...