Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Tuần 5 • Buổi 1 — User Story & Acceptance Criteria

Business Analyst Fundamentals — 8 tuần (Học Nhanh) Bài 9/16

User Story & Acceptance Criteria

Trong phát triển phần mềm hiện đại theo Agile, user story là công cụ chủ lực để diễn đạt yêu cầu từ góc nhìn người dùng. Không phải đặc tả kỹ thuật khô khan — mà là cuộc hội thoại được ghi lại.

---

1. Cấu trúc User Story: As a / I want / So that

Một user story chuẩn gồm ba phần:

As a [loại người dùng],
I want [hành động / tính năng],
So that [lợi ích / mục tiêu kinh doanh].

Ví dụ thực tế — ứng dụng đặt xe nội địa (kiểu Grab):

As a hành khách đang ở Hà Nội,
I want xem ước tính giá chuyến đi trước khi xác nhận đặt xe,
So that tôi có thể so sánh và quyết định có nên đặt hay không.
As a tài xế đối tác,
I want nhận thông báo đơn hàng mới kèm điểm đón và ước tính quãng đường,
So that tôi có thể chấp nhận hoặc từ chối đơn phù hợp với vị trí của mình.

Lỗi phổ biến: Viết 'As a user' — quá chung chung. Cần xác định rõ loại người dùng cụ thể (hành khách VIP, tài xế mới, admin vùng, v.v.).

---

2. INVEST — Tiêu chí đánh giá User Story tốt

ChữÝ nghĩaKiểm tra nhanh
I — IndependentKhông phụ thuộc story khác để testCó thể đưa lên sprint độc lập?
N — NegotiableKhông phải hợp đồng cứng nhắcTeam có thể thảo luận thay đổi?
V — ValuableTạo giá trị cho người dùng hoặc businessNếu bỏ qua, ai bị ảnh hưởng?
E — EstimableTeam có thể ước lượng effortĐủ rõ để estimate story points?
S — SmallHoàn thành trong 1 sprintCó thể deliver trong 2 tuần?
T — TestableCó thể viết AC để kiểm traBiết khi nào gọi là 'done'?
Ví dụ vi phạm INVEST:

> 'As a user, I want the app to be fast.'

  • Không Estimable (fast là bao nhiêu?)
  • Không Testable (không có số đo cụ thể)
  • Không Small (bao gồm cả hệ thống)
Sửa lại:

As a hành khách,
I want màn hình danh sách tài xế gần đây tải trong vòng 2 giây,
So that tôi không bỏ app khi đang vội.

---

3. Acceptance Criteria (AC) — Tiêu chí chấp nhận

AC trả lời câu hỏi: 'Story này hoàn thành khi nào?'

Có hai dạng phổ biến:

Dạng bullet (checklist):

Story: Hành khách xem ước tính giá trước khi đặt xe.

AC:

  • [ ] Giá ước tính hiển thị trước khi user nhấn 'Đặt ngay'
  • [ ] Giá tính theo loại xe (Tiêu chuẩn / 7 chỗ / VIP)
  • [ ] Nếu giá thay đổi >10% so với ước tính ban đầu, app cảnh báo user
  • [ ] Hiển thị được trên cả iOS 15+ và Android 11+
  • [ ] Nếu không có kết nối mạng, hiển thị thông báo lỗi rõ ràng

Dạng Gherkin — Given / When / Then:

---

4. Gherkin: Given / When / Then

Gherkin là ngôn ngữ mô tả hành vi (BDD — Behavior-Driven Development). Rất hữu ích khi làm việc với QA và dev.

Feature: Ước tính giá chuyến đi

Scenario: Hành khách xem giá trước khi đặt Given hành khách đã nhập điểm đón tại 'Hoàn Kiếm, Hà Nội' And đã nhập điểm đến 'Sân bay Nội Bài' When hành khách chọn loại xe 'Tiêu chuẩn' Then app hiển thị ước tính giá từ 250.000đ đến 300.000đ And nút 'Đặt ngay' được kích hoạt

Scenario: Giá tăng đột biến do giờ cao điểm Given hành khách đang xem ước tính giá 200.000đ When hệ thống cập nhật giá do surge pricing tăng lên 260.000đ Then app hiển thị popup cảnh báo 'Giá đã tăng 30%' And hành khách phải xác nhận lại trước khi đặt

Scenario: Không có mạng Given hành khách đã tắt dữ liệu di động When hành khách nhấn 'Tính giá' Then app hiển thị thông báo 'Không có kết nối mạng. Vui lòng thử lại.' And không navigate sang màn hình đặt xe

---

5. Story Splitting — Tách Story lớn thành nhỏ

Khi story quá lớn (epic), cần tách theo một trong các cách:

  • Theo workflow: Đặt xe → Thanh toán → Đánh giá (3 stories riêng)
  • Theo loại dữ liệu: Tìm kiếm theo tên → Tìm kiếm theo vùng → Tìm kiếm theo giá
  • Theo happy path trước: Đặt xe thành công → Sau đó mới làm story hủy đơn
  • Theo vai trò: Hành khách xem lịch sử → Tài xế xem lịch sử (2 stories)
Ví dụ tách epic 'Quản lý tài khoản':

EpicStories con
Quản lý tài khoản người dùng1. Đăng ký bằng SĐT • 2. Đăng nhập bằng SĐT+OTP • 3. Cập nhật ảnh đại diện • 4. Đổi số điện thoại • 5. Xóa tài khoản
---

Tự luyện

  • Chọn một app bạn dùng hàng ngày (ví dụ: MoMo, Shopee, Zalo). Viết 3 user story theo chuẩn As a / I want / So that.
  • Kiểm tra từng story theo INVEST — đánh dấu các tiêu chí nào chưa đạt.
  • Viết AC dạng Gherkin cho 1 story bạn vừa viết, tối thiểu 2 scenario (happy path + error case).