Decision Table, State Transition và Error Guessing

⏱︎

Read time:

4–6 minutes
Minh họa Decision Table, State Transition và Error Guessing

Decision Table Testing, State Transition Testing và Error Guessing đều giúp tester tìm ra những test case dễ bị bỏ sót. Tuy nhiên, mỗi kỹ thuật phù hợp với một loại bài toán khác nhau: tổ hợp điều kiện, hành vi phụ thuộc trạng thái và rủi ro dựa trên kinh nghiệm.

Lưu ý
Decision Table và State Transition là black-box techniques. Error Guessing thuộc nhóm experience-based techniques. Nó không phải kỹ thuật hộp đen, nhưng thường bổ sung rất tốt cho test được thiết kế từ specification.

Decision Table Testing

Decision Table dùng để kiểm tra requirement trong đó nhiều tổ hợp điều kiện dẫn đến các kết quả khác nhau. Đây là cách biểu diễn business rules có hệ thống, giúp phát hiện combination bị bỏ quên, requirement thiếu hoặc mâu thuẫn.

Ví dụ
Website miễn phí vận chuyển nếu khách là thành viên VIP hoặc giá trị đơn hàng từ 500.000 đồng. Nếu không đạt điều kiện nào, hệ thống tính phí vận chuyển.
Điều kiện / Hành độngRule 1Rule 2Rule 3Rule 4
Khách VIP?TTFF
Đơn ≥ 500.000?TFTF
Miễn phí vận chuyểnXXX
Tính phí vận chuyểnX

Mỗi cột là một decision rule và có thể tạo thành ít nhất một test case. Để đạt 100% decision table coverage, test cases phải exercise tất cả cột chứa tổ hợp khả thi.

  • T: điều kiện đúng.
  • F: điều kiện sai.
  • –: điều kiện không ảnh hưởng đến kết quả của rule.
  • N/A: tổ hợp điều kiện không khả thi.
  • X: hành động phải xảy ra.
Cảnh báo
Số rule có thể tăng rất nhanh theo số điều kiện. Với nhiều điều kiện, team có thể loại tổ hợp bất khả thi, gộp rule có điều kiện không liên quan hoặc ưu tiên theo risk thay vì chạy mọi combination.

State Transition Testing

State Transition Testing phù hợp khi phản ứng của hệ thống không chỉ phụ thuộc input hiện tại mà còn phụ thuộc vào state trước đó và chuỗi sự kiện đã xảy ra.

Một mô hình state transition thường có:

  • State: trạng thái hiện tại của hệ thống.
  • Event: sự kiện kích hoạt transition.
  • Guard condition: điều kiện bổ sung để transition xảy ra.
  • Action: hành động hệ thống thực hiện khi chuyển trạng thái.
Ví dụ
Tài khoản đang Active. Nhập sai mật khẩu lần một và lần hai vẫn Active; lần ba chuyển sang Locked. Khi đang Locked, nhập đúng mật khẩu vẫn không được đăng nhập. Sau khi admin mở khóa, tài khoản trở lại Active.
State hiện tạiEventState tiếp theoAction
ActiveNhập đúng mật khẩuLogged inCho phép truy cập
ActiveNhập sai lần thứ baLockedKhóa tài khoản
LockedNhập đúng mật khẩuLockedTừ chối truy cập
LockedAdmin mở khóaActiveĐặt lại số lần sai

Các mức coverage trong CTFL

  • All states coverage: đi qua tất cả states ít nhất một lần.
  • Valid transitions coverage: exercise tất cả transition hợp lệ. Mức này mạnh hơn all states và được dùng phổ biến nhất.
  • All transitions coverage: exercise transition hợp lệ và thử cả transition không hợp lệ.
Mẹo nhớ
Đi qua đủ mọi state chưa chắc đã đi qua đủ mọi con đường nối giữa chúng. Vì vậy, 100% all states coverage yếu hơn 100% valid transitions coverage.

Error Guessing

Error Guessing dựa vào kiến thức và kinh nghiệm của tester để dự đoán nơi có thể xuất hiện error, defect hoặc failure. Nguồn kinh nghiệm thường đến từ:

  • Cách ứng dụng từng hoạt động và những lỗi đã xảy ra trước đây.
  • Những lỗi developer trong team thường mắc.
  • Failure từng gặp ở các sản phẩm tương tự.
  • Dữ liệu defect, production incident và bài học từ dự án cũ.

Ví dụ tester có thể đoán và thử:

  • Bấm nút thanh toán hai lần liên tiếp.
  • Để session hết hạn ngay trước khi submit.
  • Gửi request thiếu parameter hoặc sai kiểu dữ liệu.
  • Nhập emoji, ký tự Unicode hoặc chuỗi rất dài.
  • Thử ngày 29/2, cuối tháng hoặc chuyển năm.

Một cách triển khai Error Guessing có hệ thống hơn là fault attack: team lập danh sách error, defect và failure có khả năng xảy ra, sau đó thiết kế test nhằm làm lộ chúng.

Cảnh báo
Error Guessing rất hữu ích nhưng không cung cấp coverage có hệ thống như Decision Table hay State Transition. Không nên chỉ dựa vào “cảm giác tester”; hãy dùng nó để bổ sung cho các kỹ thuật dựa trên specification.

Khi nào chọn kỹ thuật nào?

Dấu hiệu của bài toánKỹ thuật phù hợp
Nhiều điều kiện kết hợp thành business rulesDecision Table
Hành vi phụ thuộc trạng thái và thứ tự sự kiệnState Transition
Muốn khai thác lỗi quen thuộc, rủi ro thực tế và kinh nghiệm testerError Guessing
Business rule thay đổi theo stateKết hợp Decision Table và State Transition
Muốn bổ sung case oái oăm vào bộ test có hệ thốngThêm Error Guessing

Kết luận

Decision Table ngăn bỏ sót tổ hợp điều kiện; State Transition ngăn bỏ sót trạng thái và đường chuyển; Error Guessing tận dụng kinh nghiệm để nhắm vào những failure thực tế. Chúng không cạnh tranh với nhau — một tính năng phức tạp thường cần phối hợp cả ba để có coverage tốt hơn.