# ✅ CHECKLIST KIỂM TRA REQUIREMENT & VIẾT TEST SCENARIO

**Dành cho:** Tester / QA Engineer
**Mục đích:** Đảm bảo đọc hiểu requirement đúng và đầy đủ trước khi viết test scenario
**Phiên bản:** 1.0

---

**Thông tin phiên làm việc**

| Mục | Nội dung |
|-----|----------|
| Tên tính năng / Story | |
| Người thực hiện | |
| Ngày kiểm tra | |
| Sprint / Release | |

---

## PHẦN 1 — KIỂM TRA HIỂU REQUIREMENT

> 🎯 **Mục tiêu:** Xác nhận bạn đã hiểu đúng và đủ requirement trước khi bắt tay viết test.

Đánh dấu ✅ nếu đã trả lời được, ❌ nếu chưa rõ và cần hỏi lại.

---

**Câu hỏi 1 — WHO: Ai sẽ dùng tính năng này?**

- [ ] Tôi đã xác định được người dùng chính (end user, admin, hệ thống khác...)
- [ ] Tôi biết quyền hạn / role của từng nhóm người dùng liên quan
- [ ] Tôi hiểu hành vi có thể khác nhau giữa các role khác nhau

```
Ghi chú:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 2 — WHAT: Tính năng này làm gì chính xác?**

- [ ] Tôi mô tả lại được tính năng bằng lời của mình (không copy nguyên văn requirement)
- [ ] Tôi hiểu input đầu vào là gì và output đầu ra mong đợi là gì
- [ ] Tôi biết tính năng này **không** làm gì (phạm vi ngoài)

```
Ghi chú:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 3 — WHY: Tại sao tính năng này tồn tại?**

- [ ] Tôi hiểu business value / lý do nghiệp vụ của tính năng
- [ ] Tôi biết vấn đề gì đang được giải quyết
- [ ] Tôi hiểu tại sao nó quan trọng với người dùng cuối

```
Ghi chú:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 4 — WHEN/WHERE: Tính năng hoạt động trong ngữ cảnh nào?**

- [ ] Tôi biết điều kiện tiên quyết (precondition) để tính năng hoạt động
- [ ] Tôi xác định được tính năng xuất hiện ở màn hình / module nào
- [ ] Tôi biết các trạng thái hệ thống ảnh hưởng đến tính năng (logged in, empty data, v.v.)

```
Ghi chú:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 5 — ACCEPTANCE CRITERIA: Tiêu chí chấp nhận có đủ và rõ không?**

- [ ] Acceptance criteria được viết rõ ràng, không mơ hồ
- [ ] Tôi hiểu **tất cả** các tiêu chí (không có dòng nào tôi chưa hiểu)
- [ ] Tôi đã xác nhận với BA / PO nếu có điểm mâu thuẫn hoặc thiếu sót

```
Ghi chú - Liệt kê điểm còn mơ hồ (nếu có):
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 6 — DEPENDENCY: Tính năng này phụ thuộc vào đâu?**

- [ ] Tôi biết tính năng này liên kết với module / API / service nào khác
- [ ] Tôi hiểu dữ liệu được lấy từ đâu và lưu vào đâu
- [ ] Tôi biết có thay đổi nào ảnh hưởng đến tính năng cũ (regression risk) không

```
Ghi chú:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

### 📊 Kết quả Phần 1

| | |
|---|---|
| Tổng số checkbox | 18 |
| Số checkbox đã tích ✅ | / 18 |
| Đánh giá | ⬜ Sẵn sàng viết test &nbsp;&nbsp; ⬜ Cần làm rõ thêm |

---

## PHẦN 2 — KIỂM TRA TEST SCENARIO ĐÃ VIẾT

> 🎯 **Mục tiêu:** Review lại bộ test scenario của bạn đã đủ, đúng và có chất lượng chưa.

---

**Câu hỏi 1 — HAPPY PATH: Luồng thành công đã được cover chưa?**

- [ ] Tôi đã viết scenario cho luồng chính (main flow) hoạt động đúng
- [ ] Scenario happy path phản ánh đúng acceptance criteria đã thỏa mãn
- [ ] Dữ liệu test trong happy path là dữ liệu hợp lệ, điển hình

```
Ghi chú - Số lượng happy path scenario:
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 2 — ERROR CASE: Các trường hợp lỗi đã được bao phủ chưa?**

- [ ] Tôi đã viết scenario khi người dùng nhập sai dữ liệu (invalid input)
- [ ] Tôi có scenario cho lỗi từ hệ thống / server / network
- [ ] Tôi có scenario cho trường hợp thiếu dữ liệu bắt buộc (required fields)
- [ ] Thông báo lỗi hiển thị đúng, đủ, đúng vị trí đã được kiểm tra

```
Ghi chú - Liệt kê các loại lỗi đã cover:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 3 — EDGE CASE: Các trường hợp biên đã được xem xét chưa?**

- [ ] Tôi đã kiểm tra giá trị tối thiểu và tối đa (min/max boundary)
- [ ] Tôi có scenario cho dữ liệu trống, null, khoảng trắng
- [ ] Tôi có scenario cho ký tự đặc biệt, emoji, số âm, số rất lớn
- [ ] Tôi xem xét trường hợp người dùng thao tác nhanh bất thường (double click, rapid submit...)

```
Ghi chú - Liệt kê edge case đặc biệt cần lưu ý:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 4 — KẾT QUẢ MONG ĐỢI: Expected result có rõ ràng không?**

- [ ] Mỗi scenario đều có expected result cụ thể (không viết chung chung như "hoạt động đúng")
- [ ] Expected result có thể kiểm chứng được (verifiable) — quan sát bằng mắt hoặc đo đếm được
- [ ] Expected result bao gồm cả UI response lẫn data change (nếu có)

```
Ghi chú:
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 5 — COVERAGE: Bộ test có bao phủ đủ không?**

- [ ] Tôi đã map từng scenario với acceptance criteria tương ứng
- [ ] Không có acceptance criteria nào bị bỏ sót (không có scenario nào cover)
- [ ] Tôi có xem xét test cho các browser / device / OS khác nhau nếu cần

```
Ghi chú - Acceptance criteria chưa có scenario (nếu có):
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 6 — NEGATIVE TESTING: Test tiêu cực có đầy đủ không?**

- [ ] Tôi có scenario cho người dùng cố tình phá vỡ flow (bỏ qua bước, back browser giữa chừng...)
- [ ] Tôi test quyền truy cập sai (user thường cố truy cập chức năng của admin)
- [ ] Tôi có scenario submit form 2 lần hoặc refresh giữa chừng

```
Ghi chú:
_______________________________________________
_______________________________________________
```

---

**Câu hỏi 7 — REGRESSION: Tính năng cũ có bị ảnh hưởng không?**

- [ ] Tôi đã xác định tính năng nào hiện có liên quan cần regression test
- [ ] Tôi đã thêm scenario kiểm tra tính năng cũ không bị broken
- [ ] Tôi đã thông báo với team về vùng regression risk nếu phạm vi rộng

```
Ghi chú - Danh sách tính năng cần regression:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

### 📊 Kết quả Phần 2

| | |
|---|---|
| Tổng số checkbox | 22 |
| Số checkbox đã tích ✅ | / 22 |
| Tổng số scenario đã viết | |
| Tỉ lệ happy path / negative | : |
| Đánh giá | ⬜ Bộ test đủ tốt &nbsp;&nbsp; ⬜ Cần bổ sung thêm |

---

## PHẦN 3 — CÂU HỎI TỰ KIỂM TRA CUỐI

> 🎯 **Mục tiêu:** Dừng lại, nhìn toàn cảnh và tự hỏi những câu hỏi quan trọng nhất.
> Viết câu trả lời bằng lời của bạn — không có đúng sai, chỉ cần trả lời thật.

---

**Câu hỏi mở 1 🤔**
### *"Nếu tôi là người dùng cuối, tôi sẽ làm gì khác với tính năng này mà developer không nghĩ tới?"*

```
Trả lời của tôi:
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi mở 2 💥**
### *"Điều tệ nhất có thể xảy ra nếu tính năng này bị lỗi trên production là gì?"*

```
Trả lời của tôi:
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
```

---

**Câu hỏi mở 3 🔍**
### *"Có điều gì trong requirement khiến tôi vẫn còn thấy chưa chắc chắn không? Tôi cần hỏi ai?"*

```
Trả lời của tôi:
_______________________________________________
_______________________________________________
_______________________________________________

Người tôi cần hỏi:  ___________________________
Deadline cần làm rõ: ___________________________
```

---

## 📝 GHI CHÚ TỔNG HỢP

> Dùng phần này để ghi lại bất kỳ điểm quan trọng nào không thuộc các mục trên.

```
Rủi ro / Risk đã nhận diện:
_______________________________________________
_______________________________________________
_______________________________________________

Câu hỏi cần hỏi BA / PO / Dev:
1. _______________________________________________
2. _______________________________________________
3. _______________________________________________

Tài liệu tham khảo liên quan:
_______________________________________________
_______________________________________________

Ghi chú khác:
_______________________________________________
_______________________________________________
_______________________________________________
```

---

## ✅ XÁC NHẬN HOÀN THÀNH

| Mục | Trạng thái |
|-----|-----------|
| Phần 1 - Hiểu requirement | ⬜ Hoàn thành &nbsp; ⬜ Chưa xong |
| Phần 2 - Kiểm tra test scenario | ⬜ Hoàn thành &nbsp; ⬜ Chưa xong |
| Phần 3 - Tự kiểm tra cuối | ⬜ Hoàn thành &nbsp; ⬜ Chưa xong |
| Đã làm rõ tất cả điểm mơ hồ | ⬜ Có &nbsp; ⬜ Không &nbsp; ⬜ Đang chờ |
| **Sẵn sàng bắt đầu test** | ⬜ **CÓ** &nbsp; ⬜ **CHƯA** |

**Chữ ký / Xác nhận:**

```
Tester:  _______________________  Ngày: ________

Review bởi: ____________________ Ngày: ________
```

---

*📌 Lưu ý: Checklist này nên được hoàn thành TRƯỚC khi bắt đầu viết test case chi tiết. Lưu file lại cùng với test plan của sprint.*