Kỹ Thuật Thiết Kế Test Case Dựa Vào Bảng Quyết Định
Kiểm thử dựa vào bảng quyết định (Decision Table Testing) là kỹ thuật kiểm thử biểu diễn dạng bảng của một tập hợp các điều kiện và các hành động liên quan. Nó được biểu thị dưới dạng các quy tắc cho biết hành động nào sẽ xảy ra đối với tập hợp các giá trị điều kiện nào. Kiểm thử viên có thể sử dụng các bảng quyết định để phân tích các quy tắc áp dụng cho phần mềm đang kiểm tra và thiết kế các bài kiểm tra để bao gồm các quy tắc đó.
Để tạo các trường hợp kiểm thử từ bảng quyết định, chúng ta sẽ thiết kế các đầu vào kiểm thử đáp ứng các điều kiện đã cho. Các đầu ra kiểm thử sẽ tương ứng với hành động hoặc các hành động được đưa ra cho tổ hợp các điều kiện đó. Trong quá trình thực hiện kiểm thử, người kiểm thử cần kiểm tra xem các hành động thực tế được thực hiện có tương ứng với các hành động dự kiến hay không.
Xây Dựng Bảng Quyết Định
Xem xét ví dụ sau đây:
Tại một trang web thương mại điện tử, xem xét xử lý về việc có chấp nhận mua hàng hóa bằng thẻ tín dụng hay không bằng việc xem xét những thông tin sau đây:
- Real account? Thông tin thẻ tín dụng nhập vào có chính xác hay không?
- Active account? Thẻ tín dụng còn hoạt động hay đã bị huỷ bỏ?
- Within limit? Số tiền có nằm trong giới hạn tín dụng của họ?
- Location Okay? Giao dịch đến từ một địa điểm bình thường hay đáng ngờ?
Từ bốn điều kiện ở trên, hệ thống sẽ xác định hành động thực hiện nào trong ba hành động sau đây sẽ xảy ra:
- Approve: Chúng ta có nên phê duyệt giao dịch không?
- Call cardholder: Chúng ta có nên gọi điện cho chủ thẻ (Ví dụ: để cảnh báo họ về việc mua hàng từ một địa điểm lạ)?
- Call vendor: Chúng ta có nên gọi cho nhà cung cấp (Ví dụ: yêu cầu họ thu giữ thẻ đã hủy)?
Conditions | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Real account? | Y | Y | Y | Y | Y | Y | Y | Y | N | N | N | N | N | N | N | N |
Active account? | Y | Y | Y | Y | N | N | N | N | Y | Y | Y | Y | N | N | N | N |
Within limit? | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N |
Location okay? | Y | N | Y | N | Y | N | Y | N | Y | N | Y | N | Y | N | Y | N |
Actions | ||||||||||||||||
Approve | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
Call cardholder? | N | Y | Y | Y | N | Y | Y | Y | N | N | N | N | N | N | N | N |
Call vendor? | N | N | N | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Thu gọn bảng quyết định
Đôi khi chúng ta có thể thu gọn bảng quyết định, kết hợp các cột, để đạt được một bảng quyết định ngắn gọn hơn và trong một số trường hợp hợp lý hơn. Trong bất kỳ tình huống nào mà giá trị của một hoặc nhiều điều kiện cụ thể không thể ảnh hưởng đến các hành động đối với hai hoặc nhiều tổ hợp điều kiện, chúng ta có thể thu gọn bảng quyết định.
Conditions | 1 | 2 | 3 | 5 | 6 | 7 | 9 |
---|---|---|---|---|---|---|---|
Real account? | Y | Y | Y | Y | Y | Y | N |
Active account? | Y | Y | Y | N | N | N | – |
Within limit? | Y | Y | N | Y | Y | N | – |
Location okay? | Y | N | – | Y | N | – | – |
Actions | |||||||
Approve | Y | N | N | N | N | N | N |
Call cardholder? | N | Y | Y | N | Y | Y | N |
Call vendor? | N | N | N | Y | Y | Y | Y |
Bảng quyết định trên hiển thị cùng một bảng quyết định như trước, nhưng được thu gọn để loại bỏ các cột không liên quan. Đáng chú ý nhất, bạn có thể thấy rằng các cột từ 9 đến 16 trong bảng quyết định ban đầu được thu gọn thành một cột duy nhất. Lưu ý rằng tất cả các cột từ 9 đến 16 về cơ bản là cùng một bài kiểm tra: Real account? Đây có phải là một tài khoản thực không? Nếu nó không có thật, thì nó chắc chắn không thể hoạt động, trong giới hạn hoặc có một vị trí ổn định. Vì những điều kiện đó là không thể, nên về cơ bản, chúng tôi sẽ chạy cùng một bài kiểm tra tám lần.
Xem xét tiếp tới quy tắc 2, 3 và 4, ta nhận thấy rằng chủ thẻ sẽ nhận được cuộc gọi nếu ít nhất 1 trong 2 điều kiện “Within limit?”, “Location okay?” bị vi phạm. Do đó, quy tắc 3 và 4 có thể kết hợp thành 1 bởi nếu thẻ vượt quá giới hạn, thì chủ thẻ sẽ bị gọi bất kể vị trí có đúng hay không. Logic tương tự áp dụng cho quy tắc 7 và 8.
Khả Năng Áp Dụng
Kiểm tra bảng quyết định thường được áp dụng cho các cấp độ kiểm tra tích hợp, hệ thống và chấp nhận. Nó cũng có thể được áp dụng để kiểm tra thành phần khi một thành phần chịu trách nhiệm về một tập hợp logic quyết định. Kỹ thuật này đặc biệt hữu ích khi đối tượng thử nghiệm được chỉ định dưới dạng sơ đồ hoặc bảng quy tắc nghiệp vụ. Bảng quyết định cũng là một kỹ thuật định nghĩa yêu cầu và đôi khi các đặc tả yêu cầu có thể đã được xác định theo định dạng này. Nhà phân tích kiểm thử vẫn nên tham gia xem xét các bảng quyết định và phân tích chúng trước khi bắt đầu thiết kế kiểm thử.
Hạn Chế/ Khó Khăn
Khi xem xét sự kết hợp của các điều kiện, việc tìm ra tất cả các điều kiện tương tác có thể gặp khó khăn, đặc biệt khi các yêu cầu không được xác định rõ ràng hoặc không được ghi chép lại. Phải cẩn thận khi lựa chọn các điều kiện được xem xét trong bảng quyết định sao cho số lượng kết hợp của các điều kiện đó vẫn có thể quản lý được. Trong trường hợp xấu nhất, số lượng quy tắc sẽ tăng theo cấp số nhân.
Mức Độ Bao Phủ
Tiêu chuẩn bao phủ chung cho kỹ thuật này là bao phủ từng quy tắc của bảng quyết định bằng một trường hợp kiểm thử. Phạm vi bao phủ được đo bằng số lượng quy tắc được bao phủ bởi bộ thử nghiệm chia cho tổng số quy tắc khả thi, được biểu thị bằng phần trăm. Phân tích giá trị biên và phân vùng tương đương có thể được kết hợp với kỹ thuật bảng quyết định, đặc biệt trong trường hợp bảng quyết định mục nhập mở rộng. Nếu các điều kiện chứa các phân vùng tương đương được sắp xếp theo thứ tự thì các giá trị biên có thể được sử dụng làm mục nhập bổ sung dẫn đến các quy tắc và trường hợp kiểm thử bổ sung.
Loại Lỗi Phát Hiện
Các lỗi điển hình bao gồm việc xử lý liên quan đến logic không chính xác dựa trên sự kết hợp các điều kiện cụ thể dẫn đến kết quả không mong muốn. Trong quá trình tạo bảng quyết định, các lỗi có thể được tìm thấy trong tài liệu đặc tả. Không có gì lạ khi chuẩn bị một tập hợp các điều kiện và xác định rằng kết quả mong đợi là không được chỉ định cho một hoặc nhiều quy tắc. Các loại khiếm khuyết phổ biến nhất là bỏ sót hành động (tức là không có thông tin về điều gì sẽ thực sự xảy ra trong một tình huống nhất định) và hành động mâu thuẫn.