Bài tập

Phân tích giá trị biên (Boundary Value Analysis - BVA): Tìm hiểu kỹ thuật thiết kế test case hiệu quả

Huy Erick

Hầu hết chúng ta đã từng nghe đến kỹ thuật phân tích giá trị biên (BVA) trong việc kiểm thử phần mềm. Đây là một kỹ thuật thiết kế test case rất quan trọng và...

Hầu hết chúng ta đã từng nghe đến kỹ thuật phân tích giá trị biên (BVA) trong việc kiểm thử phần mềm. Đây là một kỹ thuật thiết kế test case rất quan trọng và hiệu quả. Trên thực tế, BVA được sử dụng để tìm ra các lỗi tiềm ẩn tại các giá trị biên của miền giá trị đầu vào. Trong bài viết này, chúng ta sẽ tìm hiểu sâu hơn về phân tích giá trị biên và những ưu điểm, nhược điểm của nó.

Phân tích giá trị biên (BVA) là gì?

Phân tích giá trị biên tập trung vào các giá trị biên của miền xác định để xây dựng ca kiểm thử. Lý do là lỗi thường xảy ra ở gần các giá trị biên này. Kỹ thuật này sẽ chọn các giá trị biên như: giá trị nhỏ nhất, giá trị lớn nhất, giá trị ngay trên giá trị nhỏ nhất, giá trị ngay dưới giá trị lớn nhất, và một giá trị bình thường.

Kiểm thử biên mạnh

Kiểm thử biên mạnh (robustness testing) là một mở rộng đơn giản của BVA. Mục đích chính là xem chương trình có kiểm tra giá trị hợp lệ của đầu vào không. Ngoài năm giá trị biên thông thường, ta còn bổ sung thêm hai giá trị ngoài biên là giá trị ngay trên giá trị cực đại (max+) và giá trị ngay dưới giá trị cực tiểu (min-).

Kiểm thử trường hợp xấu nhất

Điều gì xảy ra khi nhiều hơn một biến nhận các giá trị (gần) cực trị? Khi các biến có tương tác với nhau thì cần kiểm tra các bộ giá trị kết hợp các cực trị này Có thể kết hợp với kiểm thử mạnh để có bộ kiểm thử trường hợp xấu nhất mạnh.

Ưu/ nhược điểm của BVA

Phân tích giá trị biên dựa trên nguyên lý giả định khiếm khuyết đơn: “Hỏng hóc xảy ra hiếm khi do hai (hoặc hơn) khiếm khuyết cùng xảy ra”. Do đó các ca kiểm thử theo phương pháp này được tạo bằng việc lấy các giá trị bình thường của các chiều/biên rồi lần thay mỗi chiều bằng các giá trị cực trị như trên.

Ưu điểm:

Thay vì phải test hết toàn bộ các giá trị trong từng vùng tương đương, kỹ thuật phân tích giá trị biên tập trung vào việc kiểm thử các giá trị biên của miền giá trị inputs để thiết kế test case do “lỗi thường tiềm ẩn tại các ngõ ngách và tập hợp tại biên”. Tiết kiệm thời gian thiết kế test case và thực hiện test.

Nhược điểm:

Phương pháp này chỉ hiệu quả trong trường hợp các đối số đầu vào (input variables) độc lập với nhau và mỗi đối số đều có một miền giá trị hữu hạn.

Một số ví dụ điển hình về BVA:

(*) Form nhập số tầng của tòa nhà bao gồm:

Floor: Text-box

Yêu cầu: Thiết kế test case sao cho người dùng chỉ có thể nhập ký tự là số với độ dài từ 0 đến 10 ký tự.

Phân vùng tương đương phân thành các vùng sau:

  • Phân vùng 1: Nhập giá trị hợp lệ từ 0 đến 10 ký tự
  • Phân vùng 2: Nhập giá trị không hợp lệ dưới 0 ký tự
  • Phân vùng 3: Nhập giá trị không hợp lệ trên 10 ký tự
  • Phân vùng 4: Trường hợp để trống không nhập gì hoặc nhập ký tự không phải dạng số

Sau khi áp dụng phân vùng tương đương, ta có các ca kiểm thử (test case) sau:

  • Case 1: Nhập giá trị từ 0 đến 10 (ví dụ nhập số 5) => pass
  • Case 2: Nhập giá trị dưới 0 (ví dụ nhập số -5) => hiển thị lỗi
  • Case 3: Nhập giá trị trên 10 => hiển thị lỗi
  • Case 4: Để trống không nhập gì hoặc nhập ký tự không phải dạng số => hiển thị lỗi

(**) Form nhập số tầng của tòa nhà bao gồm:

Floor: Text-box

Áp dụng kỹ thuật phân tích giá trị biên ta có các test case sau:

  • Case 1: Nhập giá trị là -1 => hiển thị lỗi
  • Case 2: Nhập giá trị là 0 => pass
  • Case 3: Nhập giá trị từ 10 => pass
  • Case 4: Nhập giá trị từ 11 => hiển thị lỗi
  • Case 5: Để trống không nhập gì hoặc nhập ký tự không phải dạng số => hiển thị lỗi

Tổng kết

Phân tích giá trị biên (Boundary Value Analysis - BVA) và phân vùng tương đương (Equivalence Partitioning) là hai kỹ thuật thiết kế test case phổ biến và rất hữu ích trong kiểm thử phần mềm. Mỗi kỹ thuật có những ưu điểm và hạn chế riêng, vì vậy người kiểm thử nên linh hoạt trong việc lựa chọn và áp dụng kỹ thuật phù hợp cho từng tình huống cụ thể. Điều quan trọng là đảm bảo chất lượng của phần mềm trước khi ra mắt và tiết kiệm thời gian và nguồn lực trong quá trình kiểm thử.

1