Files
sys-analysis-design/.claude/skills/ba-3-specification/templates/acceptance-criteria.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

5.9 KiB
Raw Blame History

AC — Acceptance Criteria —

Version 1.0
Date YYYY-MM-DD
Author (skill ba-3-specification)
Status 🟡 Draft
Approved by QA: — (QA phải xác nhận mọi AC test được)
Source SRS_… v1.0 · BR_… v1.0
Scope US-0nn

1. Bốn nhóm bắt buộc

Nhóm Nội dung Tối thiểu Số AC đã viết
1. Luồng thành công Đường đi đúng 1/hành động
2. Validation Từng rule kiểm tra dữ liệu 1/rule
3. Lỗi hệ thống Timeout, 5xx, mất mạng giữa chừng ≥1
4. Phân quyền Không đủ quyền, sai trạng thái ≥1/vai trò bị chặn

🔴 Chỉ có nhóm 1 ⇒ spec chưa viết xong, không phải "spec ngắn gọn".


2. Mẫu viết

AC-01 | <Tên ngắn>
Nhóm: Luồng thành công
Liên quan: F01, F02 · BR-021 · SCR-03

  Given  <tiền đề: trạng thái hệ thống + vai trò người dùng + dữ liệu có sẵn>
  When   <hành động cụ thể, một hành động>
  Then   <kết quả quan sát được>
   And   <kết quả phụ: dữ liệu lưu gì, log ghi gì, màn hình đi đâu>

Ba quy tắc viết AC:

# Quy tắc Sai Đúng
1 Given phải nêu vai trò và dữ liệu cụ thể "Given đang ở màn hình danh sách" "Given tôi đăng nhập với ROLE-01 và có 3 bản ghi trạng thái Nháp"
2 When chỉ một hành động "When tôi nhập mã và bấm Lưu và quay lại" Tách thành nhiều AC
3 Then phải quan sát được "Then hệ thống xử lý đúng" "Then hiện toast 'Đã lưu' và danh sách có thêm 1 dòng ở đầu"

Phép thử tính test được: đọc AC và tự hỏi "tôi ngồi trước màn hình, tôi làm gì để kiểm chứng câu này?". Không trả lời được ⇒ AC chưa viết xong.


3. Danh sách AC

Nhóm 1 — Luồng thành công

AC-01 — <tên>

Liên quan SCR-03 · F01, F02 · BR-021
Vai trò ROLE-01
Given  …
When   …
Then   …
 And   …

Dữ liệu mẫu để test:

Field Giá trị

Nhóm 2 — Validation

AC-05 — <tên>

Một AC cho mỗi rule. Gộp nhiều rule vào một AC làm QA không biết rule nào fail.

Given  …
When   …
Then   hiện lỗi `E-STL-0001` dưới field F01 với thông điệp "…"
 And   dữ liệu không được lưu
 And   các field khác giữ nguyên giá trị đã nhập

Nhóm 3 — Lỗi hệ thống

AC-09 — Mất kết nối khi đang lưu

Given  tôi đã điền đầy đủ form hợp lệ
When   tôi bấm Lưu và request bị timeout sau 30 giây
Then   hiện thông báo lỗi "…"
 And   nút Lưu bấm lại được
 And   🔴 toàn bộ dữ liệu tôi đã nhập được giữ nguyên

🔴 AC "giữ nguyên dữ liệu sau lỗi" là AC hay bị quên nhất và gây bực bội nhất cho người dùng. Viết nó cho mọi form.

Ba tình huống tối thiểu của nhóm này:

# Tình huống AC
1 Server trả 5xx
2 Timeout / mất mạng
3 Dữ liệu bị người khác sửa/xoá trong lúc mình đang mở

Nhóm 4 — Phân quyền

AC-12 — <tên>

Một AC cho mỗi vai trò bị chặn, và cho mỗi trạng thái chặn hành động.

Given  tôi đăng nhập với ROLE-03 (không có quyền tạo)
When   tôi mở màn hình danh sách
Then   nút "Tạo mới" không hiển thị

Given  tôi gọi thẳng API POST /api/v1/stores với token của ROLE-03
When   request được gửi
Then   nhận HTTP 403 và ghi log truy cập trái phép

🔴 Chặn ở giao diện là trải nghiệm, chặn ở backend mới là bảo mật. Viết AC cho cả hai.


4. Bảng dữ liệu biên

Bảng QA dùng trực tiếp. Một dòng cho mỗi field có ràng buộc.

Field Dưới ngưỡng Ngưỡng dưới Trong khoảng Ngưỡng trên Trên ngưỡng Rỗng Ký tự đặc biệt Khoảng trắng đầu/cuối
F01 Mã (3–20) 2 ký tự → lỗi 3 ký tự → OK 10 → OK 20 → OK 21 → lỗi → lỗi bắt buộc <script> → ? " ABC " → cắt hay giữ?

Ba cột cuối là ba chỗ hay lộ bug nhất:

Cột Câu hỏi phải trả lời trong spec
Rỗng Chuỗi rỗng và null có khác nhau không?
Ký tự đặc biệt Emoji có được nhập không? Ký tự có dấu tính 1 hay nhiều? HTML/script xử lý sao?
Khoảng trắng Tự cắt (trim) hay giữ nguyên? Ảnh hưởng tới kiểm tra trùng không?

5. Kịch bản kết hợp

Những đường đi qua nhiều màn hình. Ít nhất một kịch bản đầu-cuối cho luồng chính.

# Kịch bản Các bước AC liên quan
S1 Tạo mới rồi tìm lại được SCR-01 → SCR-03 → Lưu → SCR-01 → tìm AC-01, AC-03

6. Truy vết

AC US BR Field/Thành phần Mã lỗi Test case (QA điền) Kết quả (QA điền)
AC-01 US-011 BR-021 F01, F02 — TC-…

Ô "Test case" do QA điền ở GĐ4. Ô trống sau khi QA đã viết test ⇒ AC bị bỏ sót khi test.


7. Xác nhận của QA

Người xác nhận
Ngày
☐ Mọi AC đều test được (không có AC mô tả cảm tính)
☐ Đủ 4 nhóm
☐ Bảng dữ liệu biên đủ dùng để viết test case
☐ Không có AC nào mâu thuẫn với AC khác

AC bị QA từ chối:

AC Lý do từ chối BA sửa thế nào