Chương 34: BA & QA: viết test case cơ bản, UAT — mẫu UAT checklist

Mục tiêu học

34.1 BA và QA — ai làm gì, tránh trùng lặp

BA QA
Trọng tâm Yêu cầu có đúng ý định nghiệp vụ không (Validation — Chương 17) Sản phẩm có đúng theo đặc tả không (Verification), có lỗi kỹ thuật không
Loại kiểm tra chính UAT (mục 34.3) Unit test, Integration test, System test, Regression test
Nguồn thông tin Acceptance Criteria, ý định nghiệp vụ thật SRS, test case chi tiết kỹ thuật
Câu hỏi đặc trưng "Đây có phải điều khách hàng thực sự cần không?" "Chức năng này có hoạt động đúng như đặc tả trong mọi trường hợp không, kể cả các edge case kỹ thuật?"

BA và QA không làm thay việc của nhau, nhưng cần phối hợp chặt chẽ: BA cung cấp Acceptance Criteria rõ ràng để QA viết test case chính xác; QA phát hiện các trường hợp kỹ thuật mà BA có thể chưa nghĩ tới (ví dụ: điều gì xảy ra nếu mất kết nối mạng giữa chừng khi thanh toán) và hỏi lại BA để làm rõ ý định nghiệp vụ cho trường hợp đó.

34.2 Từ Acceptance Criteria đến Test Case

Chương 23 đã giới thiệu Acceptance Criteria theo Gherkin — đây gần như là "bản nháp" của test case. QA (hoặc BA hỗ trợ QA) chuyển hoá thành test case có cấu trúc chi tiết hơn:

Trường Nội dung
Test Case ID TC-PAY-05
Liên kết yêu cầu FR-PAY-04, US-106 (liên hệ RTM — Chương 16)
Mô tả Kiểm tra áp dụng mã giảm giá hợp lệ khi thanh toán
Điều kiện tiên quyết Giỏ hàng có tổng 200.000đ; mã "FOODNOW10" đang hiệu lực, giảm 10%
Các bước thực hiện 1. Vào màn hình thanh toán. 2. Nhập mã "FOODNOW10". 3. Bấm "Áp dụng"
Kết quả mong đợi Tổng tiền hiển thị giảm còn 180.000đ; thông báo "Đã áp dụng mã giảm giá FOODNOW10" xuất hiện
Kết quả thực tế (QA điền khi thực hiện test)
Đạt/Không đạt (QA điền khi thực hiện test)

Nhận thấy: Test Case TC-PAY-05 gần như là bản mở rộng trực tiếp từ "Scenario 1" trong Acceptance Criteria đã viết ở Chương 23 — đây chính là giá trị của việc viết Acceptance Criteria rõ ràng ngay từ đầu.

34.3 UAT (User Acceptance Testing) là gì?

UAT là vòng kiểm thử cuối cùng, thực hiện bởi (hoặc đại diện cho) người dùng thực tế/ người có thẩm quyền nghiệp vụ — không phải bởi Dev hay QA kỹ thuật — nhằm xác nhận sản phẩm sẵn sàng để đưa vào sử dụng thật. Đây là bước hiện thực hoá khái niệm Validation đã học ở Chương 17 ở giai đoạn cuối cùng trước khi go-live.

flowchart LR
    Unit["Unit Test<br/>(Dev viết,<br/>kiểm tra từng hàm/module nhỏ)"] --> Integration["Integration Test<br/>(kiểm tra các module<br/>hoạt động cùng nhau)"]
    Integration --> System["System Test<br/>(QA, kiểm tra<br/>toàn hệ thống theo SRS)"]
    System --> UAT["UAT<br/>(người dùng/BA đại diện,<br/>xác nhận đúng ý định nghiệp vụ)"]
    UAT --> GoLive["Go-live"]

Khác biệt quan trọng nhất giữa System Test và UAT: System Test hỏi "hệ thống có đúng theo SRS không" (Verification); UAT hỏi "SRS (và sản phẩm dựa trên đó) có thực sự đúng ý định nghiệp vụ, dùng được trong thực tế không" (Validation) — một tính năng có thể pass System Test hoàn toàn (đúng 100% theo SRS) nhưng vẫn fail UAT nếu bản thân SRS đã hiểu sai ý định nghiệp vụ từ đầu.

34.4 Vai trò của BA trong UAT

34.5 Mẫu UAT Checklist

Một mẫu UAT checklist đầy đủ cho Increment 1 của FoodNow (module Đặt món & Thanh toán) được lưu tại:

templates/uat/FoodNow-UAT-Checklist.md

Bài tập

  1. Dựa vào Acceptance Criteria "Scenario 2" đã viết ở Chương 23 (mã giảm giá hết hạn), viết một Test Case đầy đủ theo cấu trúc ở mục 34.2.
  2. Với module "Theo dõi đơn hàng" (Epic B), đề xuất 3 người/nhóm người bạn sẽ mời tham gia UAT, và giải thích vì sao chọn họ (không chỉ chọn người trong đội dự án).

Sai lầm thường gặp

Tóm tắt & tiếp theo

BA và QA bổ sung cho nhau: QA tập trung Verification (đúng đặc tả), BA tập trung Validation (đúng ý định nghiệp vụ) qua UAT — vòng kiểm thử cuối cùng với người dùng thực tế trước go-live. Chương 35 sẽ học bước tiếp theo sau khi UAT đạt yêu cầu: quy trình Sign-off và nghiệm thu chính thức.