Equivalence Partitioning (EP) và Boundary Value Analysis (BVA) là hai kỹ thuật hộp đen thường được học cùng nhau. EP giúp chia miền dữ liệu thành các nhóm; BVA tập trung vào những điểm dễ sai nhất ở ranh giới giữa các nhóm đó.
Phân vùng tương đương (Equivalence Partitioning)
EP chia dữ liệu thành các equivalence partitions sao cho hệ thống được kỳ vọng xử lý mọi giá trị trong cùng một partition theo cùng một cách. Vì vậy, thay vì test tất cả giá trị, tester chọn ít nhất một giá trị đại diện cho mỗi partition.
| Partition | Loại | Giá trị đại diện | Kết quả mong đợi |
|---|---|---|---|
| Tuổi < 18 | Invalid | 10 | Từ chối |
| 18 ≤ tuổi ≤ 60 | Valid | 30 | Chấp nhận |
| Tuổi > 60 | Invalid | 70 | Từ chối |
Ba test trên đạt 100% EP coverage vì mỗi partition đã được exercise ít nhất một lần. Công thức coverage là:
Số partition đã được test / Tổng số partition đã xác định × 100%
Một partition tốt cần thỏa mãn gì?
- Không chồng lấn: một giá trị không đồng thời thuộc hai partition trong cùng một tập.
- Không rỗng: mỗi partition phải chứa ít nhất một giá trị.
- Cùng cách xử lý: các giá trị trong partition được kỳ vọng tạo ra hành vi tương đương.
- Có cả valid và invalid partitions: không chỉ test dữ liệu hợp lệ.
Phân tích giá trị biên (Boundary Value Analysis)
BVA kiểm tra các boundary values của equivalence partitions. Lý do là developer rất dễ viết sai toán tử hoặc đặt biên lệch một đơn vị, chẳng hạn dùng age > 18 thay vì age >= 18.
BVA chỉ dùng được với các partition có thứ tự. Với ví dụ tuổi 18–60, hai vùng biên cần chú ý là giữa 17/18 và 60/61.
2-value BVA
Với mỗi biên, kiểm tra boundary value và giá trị gần nhất thuộc partition kề bên. Bộ dữ liệu điển hình là:
| Giá trị | Ý nghĩa | Kết quả mong đợi |
|---|---|---|
| 17 | Ngay dưới biên dưới | Từ chối |
| 18 | Tại biên dưới hợp lệ | Chấp nhận |
| 60 | Tại biên trên hợp lệ | Chấp nhận |
| 61 | Ngay trên biên trên | Từ chối |
3-value BVA
3-value BVA kiểm tra boundary value và cả hai hàng xóm của nó. Với ví dụ trên, ta dùng 17, 18, 19 và 59, 60, 61.
x ≤ 10 nhưng code bị viết thành x = 10, 2-value BVA với 10 và 11 có thể không phát hiện lỗi. 3-value BVA kiểm tra thêm 9, nhờ đó dễ thấy giá trị hợp lệ bên trong partition bị từ chối.Vì kiểm tra nhiều điểm hơn, 3-value BVA chặt chẽ hơn nhưng cũng cần thêm test cases.
EP có “thừa” khi đã có BVA không?
Không. BVA được xây dựng dựa trên các partition đã xác định bởi EP; hai kỹ thuật bổ sung cho nhau chứ không thay thế nhau.
- EP trả lời: dữ liệu được chia thành những nhóm hành vi nào?
- BVA trả lời: ranh giới giữa các nhóm nằm ở đâu và cần test điểm nào quanh ranh giới?
- BVA chỉ áp dụng cho partition có thứ tự; EP còn dùng được cho nhóm rời rạc, không có biên số học.
- BVA tập trung ở biên; một giá trị đại diện nằm sâu bên trong partition vẫn hữu ích để xác nhận hành vi thông thường.
Khi thiết kế test nên làm theo thứ tự nào?
- Đọc test basis và xác định dữ liệu hoặc điều kiện cần kiểm tra.
- Chia thành valid và invalid equivalence partitions.
- Với partition có thứ tự, xác định các boundary values.
- Chọn 2-value hay 3-value BVA theo mức độ rủi ro.
- Tối ưu test cases để mỗi case có thể cover nhiều partition hoặc boundary item khi hợp lý.
Kết luận
EP giúp giảm số lượng test bằng cách chọn đại diện cho từng nhóm hành vi. BVA tăng khả năng tìm defect tại nơi dễ sai nhất: các ranh giới. Một bộ test tốt thường bắt đầu bằng EP rồi bổ sung BVA cho những partition có thứ tự và có rủi ro sai biên.




