Á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ề

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...