EP và BVA: Phân vùng tương đương và Phân tích giá trị biên

⏱︎

Read time:

3–5 minutes
Minh họa phân vùng tương đương và phân tích giá trị biên

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 đó.

Lưu ý
Đây là black-box test techniques: tester thiết kế test từ hành vi được đặc tả mà không cần biết code bên trong viết như thế nào.

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.

Ví dụ
Một form chỉ chấp nhận tuổi từ 18 đến 60, tính cả hai đầu. Ta có ba partition: tuổi dưới 18 — không hợp lệ; tuổi 18–60 — hợp lệ; tuổi trên 60 — không hợp lệ.
PartitionLoạiGiá trị đại diệnKết quả mong đợi
Tuổi < 18Invalid10Từ chối
18 ≤ tuổi ≤ 60Valid30Chấp nhận
Tuổi > 60Invalid70Từ 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ệ.
Cảnh báo
EP không chỉ áp dụng cho input dạng số. Partition có thể được xác định cho output, cấu hình, thời gian, interface parameter hoặc nhóm giá trị rời rạc như loại tài khoản Standard, Gold và Platinum.

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ĩaKết quả mong đợi
17Ngay dưới biên dướiTừ chối
18Tại biên dưới hợp lệChấp nhận
60Tại biên trên hợp lệChấp nhận
61Ngay trên biên trênTừ 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.

Ví dụ
Nếu requirement là 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.
Mẹo nhớ
EP chia bản đồ thành các vùng; BVA soi kỹ đường biên giữa các vùng. Chưa chia đúng partition thì cũng chưa thể xác định đúng boundary.

Khi thiết kế test nên làm theo thứ tự nào?

  1. Đọc test basis và xác định dữ liệu hoặc điều kiện cần kiểm tra.
  2. Chia thành valid và invalid equivalence partitions.
  3. Với partition có thứ tự, xác định các boundary values.
  4. Chọn 2-value hay 3-value BVA theo mức độ rủi ro.
  5. 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.