Chắc hẳn đối với mọi tester đã từng nhận được những dự án có những màn hình hay tính năng nếu kiểm tra đủ các case sẽ lên tới hàng ngàn case và điều này là không thể, vậy làm sao để giảm được số lượng case để giảm công sức kiểm tra đồng thời vẫn đảm bảo được chất lượng kiểm thử?
Sau đây tôi xin đưa ra một số kỹ thuật, phương pháp thiết kế testcase có thể đáp ứng các yêu cầu trên:
1. Phân vùng tương đương
Phân vùng tương đương là một phương pháp mà dữ liệu đầu vào được chia thành các vùng dữ liệu tương đương, phương pháp này được sử dụng để giảm thiểu số lượng test case mà vẫn đảm bảo các case bao phủ các yêu cầu.
Ví dụ: Thiết kế các testcase cho trường text box, text box này cho phép nhập tối thiểu 6 ký tự, tối đa 50
Dựa trên phương pháp phân vùng tương đương có thể chia test case thành 3 vùng giá trị
- Giá trị hợp lệ từ 6 đến 50 ký tự
- Giá trị không hợp lệ nhỏ hơn 6 ký tự
- Giá trị không hợp lệ lớn hơn 50 ký tự
Trong mỗi vùng giá trị trên sẽ chọn 1 giá trị bất kỳ đại diện cho vùng giá trị đó, suy ra ta có 3 test case.
Tuy nhiên, vì nhiều ứng dụng hay gặp lỗi ở biên các vùng giá trị nên cần sử dụng thêm phương pháp phân tích giá trị biên.
Ở ví dụ trên có 2 biên là 6 và 50, sử dụng phương pháp phân tích giá trị biên ta có các test case sau:
- Các giá trị chính xác của biên, đó là 6 và 50 ký tự
- Các giá trị nhỏ hơn liền kề với biên, đó là 5 và 49 ký tự
- Các giá trị lớn hơn liền kề với biên đó là 7 và 51 ký tự
Như vậy sau khi áp dụng cả 2 phương pháp phân vùng tương tương và giá trị biên, tổng số testcase cho text box trên là 3 + 6 = 9.
2. Pairwise Testing
Pairs testing hay còn gọi là All-pairs testing vô cùng hữu dụng cho các ứng dụng có chứa nhiều tham số, kiểm thử phần mềm sử dụng phương thức tổ hợp. Một phương pháp kiểm tra toàn bộ sự kết hợp của các cặp có thể từ các tham số liên quan.
Giả sử chúng ta có một màn hình cần được test chứa 10 trường và mỗi trường có 10 giá trị cần test, suy ra ta có 10^10 test case, trong trường hợp này thực hiện kiểm thử cho toàn bộ là điều không thể.
Vậy Pairs testing sẽ giúp được ta được gì trong trường hợp tương tự trên thông qua ví dụ sau:
Một chức năng/màn hình chứa các elements: List box với 10 giá trị (gồm 1,2,3,4,5,6,7,8,9) và Checkbox, Radio button, Text box, và button Ok. Trong đó Text box chỉ chấp nhận các giá trị từ 1 đến 100. Ta sẽ phân tích các giá trị được chấp nhận của các element:
List box – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Check box – Checked or Unchecked
Radio button – ON or OFF
Text box – Any Value between 1 and 100
Sự kết hợp được tính như sau:
List box = 10
Check box = 2
Radio button = 2
Text box = 100
Tổng số lượng test case: 10*2*2*100 = 4000
Tổng số lượng test case bao gồm các giá trị không hợp lệ có thể > 4000
Giờ ta sẽ phân tích giá trị của các elements:
- List box: Sử dụng kỹ thuật phân vùng tương đương, ta có thể gộp các giá trị của list box thành 2 vùng giá trị là 0 và giá trị khác (các giá trị còn lại),
- Radio button: giữ nguyên giá trị On, Off
- Check box: giữ nguyên giá trị Checked, Unchecked
- Text box: giảm xuống các giá trị: số nguyên hợp lệ (từ 0 đến 9), số nguyên không hợp lệ (ngoài khoảng 0 đến 9), AlphaSpecialCharacter – các ký tự không bao gồm số nguyên
Tổng số các case còn lại: 2*2*2*3=24
Chúng ta tiếp tục giảm số case hơn bằng kỹ thuật Pairs testing
Bước 1: Tạo bảng với các cột là các elements, xếp elements theo thứ tự element có số lượng vùng giá trị nhiều hơn lên trước
Trong ví này, Text box là element chứa 3 vùng giá trị, các elements còn lại đều chứa 2 vùng giá trị
Text box | List box | Radio button | Check box |
Bước 2: Điền các giá trị vào bảng theo từng cột, bắt đầu từ cột đầu tiên (Text box), vì cột tiếp theo là List box chứa 2 vùng giá trị dữ liệu nên sẽ nhập mỗi vùng giá trị của Text box trên 2 row
Text box | List box | Radio button | Checkbox |
Valid int | |||
Valid int | |||
Invalid int | |||
Invalid int | |||
AlphaSpecialCharacter | |||
AlphaSpecialCharacter |
Bước 3: Ứng với mỗi giá trị của column 1, ta nhập cả 2 giá trị của column 2 (List box)
Text box | List box | Radio button | Checkbox |
Valid int | 0 | ON | |
Valid int | Others | OF | |
Invalid int | 0 | ON | |
Invalid int | Others | OF | |
AlphaSpecialCharacter | 0 | ON | |
AlphaSpecialCharacter | Others | OF |
Bước 4: Kiểm tra các sự kết hợp đảm bảo rằng chúng bao phủ tất cả các trường hợp.
Bảng trên bước 3 có thể thấy thiếu cặp 0 – OF, vì vậy cần đổi vị trí giá trị On, Of trên côt Radio button như sau
Text box | List box | Radio button | Checkbox |
Valid int | 0 | ON | |
Valid int | Others | OF | |
Invalid int | 0 | OF | |
Invalid int | Others | ON | |
AlphaSpecialCharacter | 0 | ON | |
AlphaSpecialCharacter | Others | OF |
Bước 5: tiếp tục nhập giá trị cho các cột tiếp theo và check sự bao phủ các trường hợp
Text box | List box | Radio button | Checkbox |
Valid int | 0 | ON | Check |
Valid int | Others | OF | Uncheck |
Invalid int | 0 | OF | Check |
Invalid int | Others | ON | Uncheck |
AlphaSpecialCharacter | 0 | ON | Check |
AlphaSpecialCharacter | Others | OF | Uncheck |
Check bao phủ có thể thấy chưa có cặp Others-Check hay 0-Uncheck, vì vậy đổi vị trí giá trị Check & Uncheck trên dòng 5 & 6 như sau
Text box | List box | Radio button | Checkbox |
Valid int | 0 | ON | Check |
Valid int | Others | OF | Uncheck |
Invalid int | 0 | OF | Check |
Invalid int | Others | ON | Uncheck |
AlphaSpecialCharacter | 0 | ON | Uncheck |
AlphaSpecialCharacter | Others | OF | Check |
Cuối cùng, đã giảm số lượng testcase xuống 6 case từ 24 case.
Kết luận:
Kỹ thuật kiểm tra theo cặp có thể làm giảm đáng kể số lượng case nhưng vẫn rất hiệu quả trong việc phát hiện lỗi. Chúng là những phương pháp thiết kế test case thông minh, giảm thiểu công sức kiểm tra cũng như đảm bảo được hiệu quả của kiểm thử
Các nguồn tham khảo
https://www.tutorialspoint.com/software_testing_dictionary/all_pairs_testing.htm
https://www.softwaretestinghelp.com/what-is-pairwise-testing/