Tìm hiểu về kỹ thuật phân tích giá trị biên và phân vùng tương đương trong kiểm thử hộp đen

Trong quá trình kiểm thử phần mềm, việc tạo ra các bộ testcase phù hợp là quan trọng để đảm bảo chất lượng của một hoặc nhiều dự án phần mềm. Để thực hiện việc kiểm tra phần mềm một cách nhanh chóng mà vẫn đảm bảo chất lượng, chúng ta cần hiểu sâu về nghiệp vụ của phần mềm và linh hoạt trong việc thiết kế testcase. Thiết kế testcase trong kiểm thử phần mềm là quá trình xây dựng các phương pháp kiểm thử có thể phát hiện lỗi, sai sót, khuyết điểm của phần mềm để xây dựng phần mềm đạt tiêu chuẩn.

Trong phương pháp kiểm thử hộp đen, có 2 kỹ thuật thường được sử dụng mà nếu vận dụng một cách linh hoạt thì sẽ giảm thiểu rất nhiều số lượng testcase thừa, tiết kiệm thời gian kiểm thử mà vẫn đảm bảo chất lượng phần mềm. Hãy cùng tôi tìm hiểu chi tiết về hai kỹ thuật này.

1. Kỹ thuật phân vùng tương đương – Equivalence Partitioning

1.1 Định nghĩa:

Phân vùng tương đương là phương pháp chia các điều kiện đầu vào thành những vùng tương đương nhau. Tất cả các giá trị trong một vùng tương đương sẽ cho một kết quả đầu ra giống nhau. Vì vậy chúng ta có thể kiểm tra một giá trị đại diện trong vùng tương đương đó. Các lớp tương đương được xác định bằng cách lấy mỗi trạng thái đầu vào và phân chia nó thành 2 hoặc nhiều nhóm.

Tìm hiểu về kỹ thuật phân tích giá trị biên và phân vùng tương đương trong kiểm thử hộp đen

Thiết kế testcase bằng phân lớp tương đương được thực hiện qua 2 bước:

  1. Xác định các lớp tương đương:
    • Có hai kiểu lớp tương đương được xác định:
      • Lớp tương đương hợp lệ mô tả các đầu vào hợp lệ của chương trình.
      • Lớp tương đương không hợp lệ mô tả tất cả các trạng thái không hợp lệ của điều kiện (ví dụ, các giá trị đầu vào không đúng).
    • Để xác định các lớp tương đương, ta có thể áp dụng các nguyên tắc sau:
      a. Nếu một trạng thái đầu vào định rõ giới hạn của các giá trị, xác định một lớp tương đương hợp lệ và hai lớp tương đương không hợp lệ.
      b. Nếu một trạng thái đầu vào xác định số giá trị, xác định một lớp tương đương hợp lệ và hai lớp tương đương không hợp lệ.
      c. Nếu một trạng thái đầu vào chỉ định tập các giá trị đầu vào và chương trình sử dụng mỗi giá trị là khác nhau, xác định một lớp tương đương hợp lệ cho mỗi loại và một lớp tương đương không hợp lệ.
      d. Nếu một trạng thái đầu vào chỉ định một tình huống “chắc chắn – must be”, xác định một lớp tương đương hợp lệ và một lớp tương đương không hợp lệ.
    • Nếu có bất kỳ lý do nào để tin rằng chương trình không xử lý các phần tử trong cùng một lớp như nhau, thì hãy chia lớp tương đương đó thành các lớp tương đương nhỏ hơn.
  2. Xác định các ca kiểm thử:
    • Với các lớp tương đương đã xác định được ở bước trên, bước thứ hai là sử dụng các lớp tương đương đó để xác định các ca kiểm thử. Quá trình này được thực hiện như sau:
      a. Gán một số duy nhất cho mỗi lớp tương đương.
      b. Cho đến khi tất cả các lớp tương đương hợp lệ được bao phủ bởi các ca kiểm thử, viết một ca kiểm thử mới bao phủ càng nhiều các lớp tương đương chưa được bao phủ càng tốt.
      c. Cho đến khi các ca kiểm thử đã bao phủ tất cả các lớp tương đương không hợp lệ, viết một ca kiểm thử mà bao phủ một và chỉ một trong các lớp tương đương không hợp lệ chưa được bao phủ.
      d. Lý do mà mỗi ca kiểm thử riêng bao phủ các trường hợp không hợp lệ là vì các kiểm tra đầu vào không đúng nào đó che giấu hoặc thay thế các kiểm tra đầu vào không đúng khác.

Mặc dù việc phân lớp tương đương là rất tốt khi lựa chọn ngẫu nhiên các ca kiểm thử, nhưng nó vẫn có những thiếu sót. Vì vậy, có hai phương pháp khác là phân tích giá trị biên và đồ thị nguyên nhân – kết quả, để khắc phục những thiếu sót đó.

1.2 Ví dụ:

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

  • Floor: Text-box

Yêu cầu:

  • Thiết kế các test case sao cho người dùng chỉ được nhập vào ô text-box Floor các ký tự là số với độ dài trong khoảng [0-10].

Tìm hiểu về kỹ thuật phân tích giá trị biên và phân vùng tương đương trong kiểm thử hộp đen

(*) Dựa vào yêu cầu bài toán ta có thể có các lớp tương đương (phân vùng) sau:

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

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

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

1.3 Ưu/ nhược điểm:

(*) Ưu điểm:

  • Vì mỗi vùng tương đương chỉ cần test trên các phần tử đại diện nên số lượng test case được giảm đi khá nhiều, giúp tiết kiệm thời gian thực hiện test.
  • Tối ưu trong việc lựa chọn test case, đảm bảo chất lượng phần mềm.

(*) Nhược điểm:

  • Không phải với bất kỳ bài toán nào cũng có thể áp dụng kỹ thuật này, đôi khi có thể bỏ lỡ các lỗi ở biên nếu chỉ chọn giá trị ở khoảng giữa của miền tương đương. Vì vậy khi phần lớn các lỗi được tìm thấy ở các giá trị biên của các phân vùng, chúng ta nên áp dụng thêm kỹ thuật phân tích giá trị biên để tăng cường khả năng phát hiện các lỗi.

2. Kỹ thuật phân tích giá trị biên

2.1 Định nghĩa:

Đây là một trong những kỹ thuật kiểm thử phần mềm, trong đó các testcase được thiết kế bao gồm các giá trị tại các biên. Nếu dữ liệu đầu vào được sử dụng trong giới hạn giá trị biên, ta gọi đó là Positive testing. Ngược lại, nếu dữ liệu đầu vào được sử dụng ngoài giới hạn giá trị biên, ta gọi đó là Negative testing. Mục tiêu của kỹ thuật này là lựa chọn các test case để thực thi giá trị biên.

Kinh nghiệm cho thấy các ca kiểm thử mà khảo sát tỷ lệ các điều kiện biên có tỷ lệ phần trăm cao hơn các ca kiểm thử khác. Các điều kiện biên là những điều kiện tại, trên và dưới các cạnh của các lớp tương đương đầu vào và các lớp tương đương đầu ra.

Phân tích các giá trị biên là phương pháp thiết kế ca kiểm thử bổ sung cho phân lớp tương đương, nhưng khác với phân lớp tương đương ở hai khía cạnh:

  • Phân tích giá trị biên không lựa chọn phần tử bất kỳ trong một lớp tương đương là điển hình, mà yêu cầu là một hoặc nhiều phần tử được lựa chọn như vậy mà mỗi cạnh của lớp tương đương chính là đối tượng kiểm tra.
  • Ngoài việc tập trung chú ý vào các trạng thái đầu vào (không gian đầu vào), các ca kiểm thử cũng nhận được bằng việc xem xét không gian kết quả (các lớp tương đương đầu ra).

Phân tích giá trị biên yêu cầu óc sáng tạo và kiến thức chuyên môn nhất định và nó là một quá trình với mức độ kinh nghiệm cao. Tuy nhiên, có một số quy tắc chung như sau:

  • Nếu một trạng thái đầu vào định rõ giới hạn của các giá trị, hãy viết các ca kiểm thử cho các giá trị cuối của giới hạn, và các ca kiểm thử đầu vào không hợp lệ cho các trường hợp vượt ra ngoài phạm vi.
  • Nếu một trạng thái đầu vào xác định số lượng giá trị, hãy viết các ca kiểm thử cho giá trị lớn nhất và nhỏ nhất của các giá trị và một giá trị ở giữa, một giá trị nằm ngoài các giá trị này.
  • Sử dụng quy tắc 1 cho mỗi trạng thái đầu vào.

Ví dụ, nếu một chương trình tính toán sự khấu trừ FICA hàng tháng và nếu mức tối thiểu là 0.00$ và tối đa là 1,165.25$, hãy viết các ca kiểm thử mà sử dụng các giá trị biên nhỏ nhất và lớn nhất, các giá trị âm và các giá trị lớn hơn 1,165.25. Chú ý rằng việc xem xét giới hạn của không gian kết quả là quan trọng vì không phải lúc nào các biên của miền đầu vào cũng mô tả cùng một tập sự kiện như biên của giới hạn đầu ra. Ngoài ra, không phải lúc nào cũng có thể tạo ra một kết quả bên ngoài giới hạn đầu ra, nhưng tuy nhiên rất đáng để xem xét tiềm ẩn đó.

Các case chuẩn được lựa chọn dựa vào quy tắc sau:

  • Giá trị biên nhỏ nhất – 1
  • Giá trị biên nhỏ nhất
  • Giá trị biên lớn nhất
  • Giá trị biên lớn nhất + 1

Nhưng nếu bạn muốn kiểm tra sâu hơn, bạn cũng có thể lựa chọn theo quy tắc:

  • Giá trị biên nhỏ nhất – 1
  • Giá trị biên nhỏ nhất
  • Giá trị biên nhỏ nhất + 1
  • Giá trị biên lớn nhất – 1
  • Giá trị biên lớn nhất
  • Giá trị biên lớn nhất + 1

2.2. Ví dụ:

Tìm hiểu về kỹ thuật phân tích giá trị biên và phân vùng tương đương trong kiểm thử hộp đen

(*) 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 chọn được các 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ị là 10 => pass
  • Case 4: Nhập giá trị là 11 => hiển thị lỗi
  • Case 5: Để trống không nhập gì hay nhập ký tự không phải dạng chữ => hiển thị lỗi

2.3. Ưu/ nhược điểm:

(*) Ư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ị đầu vào để thiết kế test case, giúp tìm ra những lỗi tiềm ẩn tại các giá trị biên.
  • Giúp 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.

3. Tổng kết:

Ngoài hai kỹ thuật phân vùng tương đương và phân tích giá trị biên đã được đề cập ở trên, còn rất nhiều các kỹ thuật thiết kế test case khác như: đoán lỗi (Error Guessing), thiết kế test case dựa trên đồ thị nguyên nhân – kết quả (Cause-Effect Diagram), dựa trên bảng quyết định (Decision Tables)…

Để giảm thiểu số lượng testcase đến mức tối ưu mà vẫn đảm bảo chất lượng phần mềm, mỗi tester cần linh hoạt trong việc lựa chọn các kỹ thuật thiết kế test case. Kiểm thử phần mềm giúp cung cấp các ứng dụng phần mềm có chất lượng và đảm bảo rằng phần mềm ít lỗi nhất trước khi được ra mắt. Yêu cầu về thời gian thực, giá trị đầu vào bất kỳ phải được kiểm tra trước khi phát hành.

FEATURED TOPIC