Decision Table Testing là một kỹ thuật kiểm thử hộp đen nằm ở mục 4.2.3 của giáo trình ISTQB CTFL 2018. Đây là một kỹ thuật khá hữu ích và phổ biến để diễn giải các business rule mà hệ thống cần phải thực thi. Khi tạo bảng, kiểm thử viên sẽ xác định các test conditions (các inputs) và kết quả mong đợi (outputs) của hệ thống.
1. Ví dụ cơ bản
Giả sử chúng ta có một form đăng nhập gồm các trường dữ liệu như sau:
- Email.
- Password.
Đầu tiên chúng ta cần phải xác định các phân vùng tương đương (equivalence partition) có thể có của từng đầu vào (input). Để đơn giản hóa, với Email, chúng ta sẽ chỉ có hai phân vùng là địa chỉ đúng (T) và địa chỉ sai (F), tương tự cho Password. Vì mỗi đầu vào có 2 phân vùng, tương đương 2 khả năng, vậy nên chúng ta sẽ có 2 x 2 = 4 test case tất cả.
Khi đó, chúng ta sẽ vẽ được bảng quyết định như sau:
Condition | Case #1 | Case #2 | Case #3 | Case #4 |
---|---|---|---|---|
T | T | F | F | |
Password | T | F | T | F |
Result | OK | ERROR | ERROR | ERROR |
Diễn giải:
- Case #1: Email đúng, Password đúng => Đăng nhập thành công.
- Case #2: Email đúng, Password sai => Đăng nhập lỗi.
- Case #3: Email sai, Password đúng => Đăng nhập lỗi.
- Case #4: Email sai, Password sai => Đăng nhập lỗi.
2. Ví dụ nâng cao
Giả sử chúng ta có một form upload hình ảnh với điều kiện để upload thành công như sau:
- Hình ảnh phải có định dạng .JPG.
- Kích thước file hình ảnh không được quá 32KB.
- Độ phân giải tối thiểu 320 x 240, tối đa 640 x 480.
Với đề bài này chúng ta có 3 đầu vào (input) cần kiểm thử. Với mỗi đầu vào, chúng ta cần xác định các phân vùng tương đương:
- Định dạng (Format): JPG, không phải JPG - 2 phân vùng.
- Kích thước (Size): <= 32 KB, > 32 KB - 2 phân vùng.
- Độ phân giải (Resolution): x < 320 x 240 (invalid S), 320 x 240 <= x <= 640 x 480 (valid - G), > 640 x 480 (invalid - L) - 3 phân vùng.
Trong trường hợp này, chúng ta sẽ có 2 x 2 x 3 = 12 test case. Các bước điền dữ liệu như sau: Tạo bảng gồm 5 dòng và 12 cột, với điều kiện đầu tiên là Format, lấy tổng số test case chia đôi 12 / 2 = 6. Điền 6 cột đầu với phân vùng 1, 6 cột tiếp theo với phân vùng còn lại của Format.
#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Format | JPG | JPG | JPG | JPG | JPG | JPG | != JPG | != JPG | != JPG | != JPG | != JPG | != JPG |
Size | ||||||||||||
Resolution | ||||||||||||
Result |
Với điều kiện Size tiếp theo, điền xen kẽ 3 cột liên tiếp với phân vùng 1, 3 cột tiếp theo với phân vùng 2 và cứ thế.
#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Format | JPG | JPG | JPG | JPG | JPG | JPG | != JPG | != JPG | != JPG | != JPG | != JPG | != JPG |
Size | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 |
Resolution | ||||||||||||
Result |
Với điều kiện cuối cùng là Resolution, điền xen kẽ các giá trị của 3 phân vùng luân phiên cho từng cột, sao cho không có case nào mà cả 3 điều kiện đều giống nhau (bị trùng test case):
#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Format | JPG | JPG | JPG | JPG | JPG | JPG | != JPG | != JPG | != JPG | != JPG | != JPG | != JPG |
Size | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 |
Resolution | S | G | L | S | G | L | S | G | L | S | G | L |
Result |
Và cuối cùng, hãy điền vào các kết quả mong đợi ứng với từng case. Trong đó: OK = Good, NOK = Not OK/Good.
#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Format | JPG | JPG | JPG | JPG | JPG | JPG | != JPG | != JPG | != JPG | != JPG | != JPG | != JPG |
Size | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 | <= 32 | <= 32 | <= 32 | > 32 | > 32 | > 32 |
Resolution | S | G | L | S | G | L | S | G | L | S | G | L |
Result | NOK | OK | NOK | NOK | NOK | NOK | NOK | NOK | NOK | NOK | NOK | NOK |
3. Kết luận
Hy vọng thông qua 2 ví dụ trên, các bạn đã có thể nắm bắt được cách sử dụng và vận dụng bảng quyết định để thiết kế test case. Như tôi đã từng nói, không có kỹ thuật nào là hoàn hảo, để có thể tạo ra được những test case tốt nhất, các bạn sẽ cần phải nắm bắt được nhiều kỹ thuật khác nhau, kết hợp với kinh nghiệm và tùy vào bài toán cụ thể để đưa ra được những quyết định chuẩn xác nhất. Chúc các bạn thành công!