@relipa/ai-flow-kit 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +253 -91
  2. package/bin/aiflow.js +49 -1
  3. package/custom/skills/ba-skills/skill-ba-phan-tich-ban-dau-v1.md +44 -0
  4. package/custom/skills/ba-skills/skill-ba-prototype-v1.md +35 -0
  5. package/custom/skills/ba-skills/skill-ba-qa-template-v1.md +21 -0
  6. package/custom/skills/ba-skills/skill-ba-qa-v1.md +35 -0
  7. package/custom/skills/ba-skills/skill-ba-template-phan-tich-ban-dau-v1.md +30 -0
  8. package/custom/skills/ba-skills/skill-ba-template-uc-v1.md +83 -0
  9. package/custom/skills/ba-skills/skill-ba-ve-luong-mermaid-v1.md +35 -0
  10. package/custom/skills/ba-skills/skill-ba-viet-spec-uc-v1.md +38 -0
  11. package/custom/skills/ba-skills/skill-ba-xay-dung-business-rules-v1.md +39 -0
  12. package/custom/skills/execute-flow/SKILL.md +27 -36
  13. package/custom/skills/gate-review/SKILL.md +119 -0
  14. package/custom/skills/generate-test-report/SKILL.md +1 -1
  15. package/custom/skills/generate-testcase/SKILL.md +50 -11
  16. package/custom/skills/generate-testcase/templates/testcase.md +50 -59
  17. package/custom/skills/test-analysis/SKILL.md +37 -3
  18. package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +111 -0
  19. package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +24 -0
  20. package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +90 -0
  21. package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +68 -0
  22. package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +30 -0
  23. package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +27 -0
  24. package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +26 -0
  25. package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +26 -0
  26. package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +25 -0
  27. package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +28 -0
  28. package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +29 -0
  29. package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +57 -0
  30. package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +27 -0
  31. package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +27 -0
  32. package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +27 -0
  33. package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +51 -0
  34. package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +44 -0
  35. package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +41 -0
  36. package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +40 -0
  37. package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +43 -0
  38. package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +44 -0
  39. package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +43 -0
  40. package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +43 -0
  41. package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +39 -0
  42. package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +39 -0
  43. package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +42 -0
  44. package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +37 -0
  45. package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +36 -0
  46. package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +38 -0
  47. package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +40 -0
  48. package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +34 -0
  49. package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +35 -0
  50. package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +35 -0
  51. package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +34 -0
  52. package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +33 -0
  53. package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +38 -0
  54. package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +257 -0
  55. package/custom/skills/test-skills/rules/QA_Writing_Standards.md +49 -0
  56. package/custom/skills/test-skills/template/template_testcase.md +83 -0
  57. package/custom/templates/shared/create-spec-workflow.md +435 -0
  58. package/custom/templates/shared/create-testcase-workflow.md +470 -0
  59. package/custom/templates/shared/gate-workflow.md +122 -16
  60. package/docs/common/CHANGELOG.md +47 -0
  61. package/package.json +2 -2
  62. package/scripts/create-score-excel.js +17 -7
  63. package/scripts/init.js +48 -1
  64. package/scripts/review.js +128 -0
  65. package/scripts/update.js +4 -1
  66. package/scripts/use.js +22 -16
@@ -21,6 +21,29 @@ Trước khi tạo bất kỳ testcase nào:
21
21
  - Nếu requirement chưa rõ → hỏi TESTER từng câu một, chờ trả lời
22
22
  - **KHÔNG tạo testcase ở bước này**
23
23
 
24
+ **Bước 1b — Đọc Source Code (nếu workspace có source repos):**
25
+
26
+ Chạy ngay sau khi đọc `test-analysis.md`, trước khi phân tích scenarios.
27
+
28
+ Nếu workspace mở dạng parent folder chứa cả `ak docs` lẫn source code repos:
29
+
30
+ 1. Xác định repo từ `test-analysis.md` (field Repo) hoặc từ ticket context. Nếu không rõ → hỏi 1 câu
31
+ 2. **Nếu GitNexus MCP có sẵn** (`.mcp.json` có entry `gitnexus`):
32
+ - `gitnexus: query("tên màn hình hoặc chức năng")` → tìm code liên quan
33
+ - `gitnexus: context("ClassName")` → xem service/controller đầy đủ
34
+ 3. **Nếu không có GitNexus**: đọc trực tiếp:
35
+ - Validation rules / Form request / DTO — tìm constraint thực tế (max length, regex, required)
36
+ - Service / Business Logic — tìm business rules ẩn không có trong spec
37
+ - API response format — xác định expected result chính xác
38
+ - Data models / DB schema — tìm DB constraint, unique, nullable
39
+ 4. Bổ sung vào phân tích:
40
+ - Validation cases từ code (độ dài max, format regex, required vs optional)
41
+ - Business rules phát hiện trong service layer
42
+ - Edge cases từ DB constraint (unique violation, FK constraint)
43
+ - Điểm không nhất quán giữa spec và code thực tế → đặt câu hỏi với TESTER
44
+
45
+ > ⚠️ Source code chỉ dùng để **mở rộng coverage** — thêm test cases dựa trên code thực tế. Expected result vẫn lấy từ ticket/spec của BA/PM, **không lấy từ code**.
46
+
24
47
  ---
25
48
 
26
49
  ### Bước 2 — Dev Artifacts Check (Phase 2a — trước checklist)
@@ -76,13 +99,11 @@ Liệt kê scenarios theo nhóm, output vào `test-plan/checklist.md`:
76
99
  📙 **Regression** _(nếu Dev Artifacts Check Bước 2 tìm thấy impacted areas)_
77
100
  - Mỗi item ghi rõ: "Regression — [vùng ảnh hưởng] — [lý do từ PR diff]"
78
101
 
79
- ```
80
102
  ⏸️ GATE 2 — PHASE 2a: SCENARIOS READY
81
103
  Scenarios: [N] total
82
104
  - Functional: [N] | Non-functional: [N] | Integration: [N] | Exploratory: [N] | Regression: [N]
83
- → Review: test-plan/checklist.md
105
+ → Review: [test-plan/checklist.md](test-plan/checklist.md)
84
106
  → Type APPROVED to proceed to Phase 2b
85
- ```
86
107
 
87
108
  ---
88
109
 
@@ -155,14 +176,12 @@ Output testcases: `test-plan/test-cases/[ScreenID]-testcases.md`
155
176
  | **Total** | **[S/M/L/XL]** |
156
177
  ```
157
178
 
158
- ```
159
179
  ⏸️ GATE 2 — PHASE 2b: TESTCASES GENERATED
160
180
  Test cases: [N] total ([N] positive / [N] negative / [N] edge)
161
- Test plan: test-plan/test-plan.md
162
- → Review: test-plan/test-cases/
181
+ Test plan: [test-plan/test-plan.md](test-plan/test-plan.md)
182
+ → Review: [test-plan/test-cases/](test-plan/test-cases/)
163
183
  → Type APPROVED to proceed to Phase 2c (Review & Optimize)
164
184
  → Or provide feedback to update
165
- ```
166
185
 
167
186
  ---
168
187
 
@@ -206,13 +225,24 @@ Kiểm tra theo thứ tự, output vào `test-plan/review-report.md`:
206
225
  Priority: High (phải fix trước Phase 2d) / Medium / Low (có thể defer)
207
226
  ```
208
227
 
209
- ```
210
228
  ⏸️ GATE 2 — PHASE 2c: REVIEW COMPLETE
211
229
  Issues: [N] duplicate | [N] problematic | [N] to optimize | [N] missing
212
- Review: test-plan/review-report.md
213
- Type APPROVED to proceed to Phase 2d (Coverage Check & Final Output)
230
+ High priority chưa xử lý: [N]
231
+ Review: [test-plan/review-report.md](test-plan/review-report.md)
232
+ → Type APPROVED to proceed to Phase 2d (chỉ khi High priority = 0)
214
233
  → Or provide specific fixes to apply
215
- ```
234
+
235
+ **Nếu nhận được APPROVED mà còn issues Priority High chưa xử lý → từ chối ngay:**
236
+
237
+ ⛔ PHASE 2c BLOCKED — Còn [N] issues Priority HIGH chưa được xử lý:
238
+
239
+ | TC_ID | Vấn đề | Đề xuất sửa |
240
+ |-------|--------|------------|
241
+ | [TC_ID] | [vấn đề] | [đề xuất] |
242
+
243
+ → Cung cấp fixes cho các issues trên, sau đó gõ APPROVED.
244
+ ❌ APPROVED chỉ được chấp nhận khi không còn issues Priority High.
245
+ Medium và Low có thể defer — không block APPROVED.
216
246
 
217
247
  ---
218
248
 
@@ -301,3 +331,12 @@ Issues: [N] duplicate | [N] problematic | [N] to optimize | [N] missing
301
331
  | **High** | Chức năng chính không hoạt động đúng |
302
332
  | **Medium** | Chức năng phụ bị ảnh hưởng, workaround có thể có |
303
333
  | **Low** | UI/UX nhỏ, cosmetic, không ảnh hưởng chức năng |
334
+
335
+ ---
336
+
337
+ ## Mandatory Rules
338
+
339
+ - ✅ **PHẢI** dừng và chờ APPROVED sau mỗi Phase (2a → 2b → 2c → 2d)
340
+ - ❌ **KHÔNG chấp nhận APPROVED** ở Phase 2c khi còn issues Priority **High** chưa được xử lý — từ chối và hiển thị danh sách issues cần fix
341
+ - ✅ Medium và Low issues không block APPROVED — có thể defer
342
+ - ❌ **KHÔNG** tự động chuyển phase mà không có APPROVED từ TESTER
@@ -11,78 +11,69 @@
11
11
  | **Người kiểm duyệt (Reviewer)** | |
12
12
  | **Ngày kiểm duyệt (Review Date)** | |
13
13
 
14
- ## 2. Kết quả kiểm thử tổng hợp (Test Execution Summary)
14
+ ## 2. Danh sách Test Cases Chi Tiết
15
15
 
16
- | Vòng kiểm thử (Round) | Đạt (Passed) | Lỗi (Failed) | Chưa test (Untest) | Chờ (Pending) | Tổng số (Total) | Tỷ lệ đạt (%) |
17
- |:---|:---:|:---:|:---:|:---:|:---:|:---:|
18
- | Round 1 | 0 | 0 | 0 | 0 | 0 | 0% |
19
- | Round 2 | 0 | 0 | 0 | 0 | 0 | 0% |
16
+ ### 2.1. Kiểm thử Truy cập & Phân quyền (Access & Authorization)
20
17
 
21
- ---
18
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
19
+ |---|---|---|---|---|---|---|---|---|
20
+ | [ID]_001 | Truy cập trực tiếp qua URL khi chưa đăng nhập | High | Người dùng chưa đăng nhập hệ thống | 1. Nhập URL màn hình vào thanh địa chỉ trình duyệt.<br>2. Nhấn Enter. | URL của màn hình | Hệ thống không cho phép truy cập.<br>Tự động chuyển hướng về trang đăng nhập (Login). | | |
21
+ | [ID]_002 | Truy cập trực tiếp qua URL khi đã đăng nhập | Medium | Người dùng đã đăng nhập thành công | 1. Nhập URL màn hình vào thanh địa chỉ trình duyệt.<br>2. Nhấn Enter. | URL của màn hình | Hệ thống cho phép truy cập.<br>Hiển thị đúng giao diện màn hình. | | |
22
+ | [ID]_003 | Truy cập qua button/menu điều hướng | Low | Người dùng đang ở màn hình danh sách | 1. Click vào nút "Thêm mới" hoặc menu tương ứng. | - | Hệ thống mở màn hình đăng ký/thực hiện tương ứng thành công. | | |
22
23
 
23
- ## 3. Danh sách Test Cases Chi Tiết
24
+ ### 2.2. Kiểm thử Giao diện Người dùng (UI/UX)
24
25
 
25
- ### 3.1. Kiểm thử Truy cập & Phân quyền (Access & Authorization)
26
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
27
+ |---|---|---|---|---|---|---|---|---|
28
+ | [ID]_004 | Kiểm tra hiển thị giao diện tổng quan | Low | Màn hình hiển thị bình thường | 1. Quan sát giao diện màn hình.<br>2. Kiểm tra layout, màu sắc, font chữ, khoảng cách giữa các trường. | - | 1. Layout cân đối, font chữ và cỡ chữ đồng nhất.<br>2. Các trường bắt buộc nhập có dấu sao đỏ (*).<br>3. Không có lỗi chính tả.<br>4. Định dạng placeholder hiển thị chính xác theo thiết kế. | | |
26
29
 
27
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
28
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
29
- | [ID]_001 | Truy cập trực tiếp qua URL khi chưa đăng nhập | High | Người dùng chưa đăng nhập hệ thống | 1. Nhập URL màn hình vào thanh địa chỉ trình duyệt.<br>2. Nhấn Enter. | URL của màn hình | Hệ thống không cho phép truy cập.<br>Tự động chuyển hướng về trang đăng nhập (Login). | | | | | | | | |
30
- | [ID]_002 | Truy cập trực tiếp qua URL khi đã đăng nhập | Medium | Người dùng đã đăng nhập thành công | 1. Nhập URL màn hình vào thanh địa chỉ trình duyệt.<br>2. Nhấn Enter. | URL của màn hình | Hệ thống cho phép truy cập.<br>Hiển thị đúng giao diện màn hình. | | | | | | | | |
31
- | [ID]_003 | Truy cập qua button/menu điều hướng | Low | Người dùng đang ở màn hình danh sách | 1. Click vào nút "Thêm mới" hoặc menu tương ứng. | - | Hệ thống mở màn hình đăng ký/thực hiện tương ứng thành công. | | | | | | | | |
32
-
33
- ### 3.2. Kiểm thử Giao diện Người dùng (UI/UX)
34
-
35
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
36
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
37
- | [ID]_004 | Kiểm tra hiển thị giao diện tổng quan | Low | Màn hình hiển thị bình thường | 1. Quan sát giao diện màn hình.<br>2. Kiểm tra layout, màu sắc, font chữ, khoảng cách giữa các trường. | - | 1. Layout cân đối, font chữ và cỡ chữ đồng nhất.<br>2. Các trường bắt buộc nhập có dấu sao đỏ (*).<br>3. Không có lỗi chính tả.<br>4. Định dạng placeholder hiển thị chính xác theo thiết kế. | | | | | | | | |
38
-
39
- ### 3.3. Kiểm thử Validation các trường nhập liệu (Input Validation)
30
+ ### 2.3. Kiểm thử Validation các trường nhập liệu (Input Validation)
40
31
 
41
32
  *(Tạo riêng từng bảng hoặc nhóm theo từng Field để dễ theo dõi)*
42
33
 
43
34
  #### * Đối với Trường [Tên Trường] — Text
44
35
 
45
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
46
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
47
- | [ID]_0xx | Kiểm tra giá trị mặc định | Low | Đã truy cập màn hình | 1. Quan sát trường [Tên Trường]. | - | Giá trị mặc định là trống (blank).<br>Hiển thị đúng Placeholder theo thiết kế. | | | | | | | | |
48
- | [ID]_0xx | Kiểm tra trường bắt buộc nhập để trống | High | Đã truy cập màn hình | 1. Để trống trường [Tên Trường].<br>2. Bấm nút thực hiện (Đăng ký/Lưu). | Empty | 1. Hiển thị thông báo lỗi: "Hãy nhập [Tên Trường]".<br>2. Field bị highlight viền đỏ. | | | | | | | | |
49
- | [ID]_0xx | Kiểm tra nhập ký tự khoảng trắng (Spaces) | Medium | Đã truy cập màn hình | 1. Nhập toàn khoảng trắng vào trường.<br>2. Bấm nút thực hiện hoặc focus out. | `" "` | Hệ thống xem như để trống.<br>Báo lỗi bắt buộc nhập (nếu là trường Required) hoặc tự động trim khoảng trắng. | | | | | | | | |
50
- | [ID]_0xx | Kiểm tra nhập khoảng trắng ở đầu/cuối chuỗi | Low | Đã truy cập màn hình | 1. Nhập chuỗi có khoảng trắng ở đầu/cuối.<br>2. Bấm nút thực hiện (Đăng ký/Lưu). | `" data_test "` | Hệ thống tự động cắt bỏ (trim) khoảng trắng ở đầu và cuối chuỗi trước khi lưu vào DB. | | | | | | | | |
51
- | [ID]_0xx | Kiểm tra nhập độ dài tối thiểu/tối đa (Boundary Value) | Medium | Đã truy cập màn hình, biết Maxlength = N | 1. Nhập chuỗi độ dài N-1 ký tự.<br>2. Nhập chuỗi độ dài N ký tự.<br>3. Nhập chuỗi độ dài > N ký tự. | Chuỗi test tương ứng | - Độ dài <= N: cho phép nhập và lưu bình thường.<br>- Độ dài > N: hệ thống chặn trực tiếp trên UI hoặc báo lỗi hợp lệ. | | | | | | | | |
52
- | [ID]_0xx | Kiểm tra nhập ký tự đặc biệt | Medium | Đã truy cập màn hình | 1. Nhập các ký tự đặc biệt (!@#$%^&*).<br>2. Bấm nút thực hiện. | `"!@#$%"` | Hệ thống lưu trữ đúng định dạng ký tự đã nhập (hoặc báo lỗi nếu có quy định hạn chế định dạng). | | | | | | | | |
53
- | [ID]_0xx | Kiểm tra thao tác Copy/Paste | Low | Đã truy cập màn hình | 1. Copy một chuỗi hợp lệ.<br>2. Paste vào trường thông tin.<br>3. Bấm nút thực hiện. | - | Cho phép paste dữ liệu vào field thành công và xử lý lưu bình thường. | | | | | | | | |
36
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
37
+ |---|---|---|---|---|---|---|---|---|
38
+ | [ID]_0xx | Kiểm tra giá trị mặc định | Low | Đã truy cập màn hình | 1. Quan sát trường [Tên Trường]. | - | Giá trị mặc định là trống (blank).<br>Hiển thị đúng Placeholder theo thiết kế. | | |
39
+ | [ID]_0xx | Kiểm tra trường bắt buộc nhập để trống | High | Đã truy cập màn hình | 1. Để trống trường [Tên Trường].<br>2. Bấm nút thực hiện (Đăng ký/Lưu). | Empty | 1. Hiển thị thông báo lỗi: "Hãy nhập [Tên Trường]".<br>2. Field bị highlight viền đỏ. | | |
40
+ | [ID]_0xx | Kiểm tra nhập ký tự khoảng trắng (Spaces) | Medium | Đã truy cập màn hình | 1. Nhập toàn khoảng trắng vào trường.<br>2. Bấm nút thực hiện hoặc focus out. | `" "` | Hệ thống xem như để trống.<br>Báo lỗi bắt buộc nhập (nếu là trường Required) hoặc tự động trim khoảng trắng. | | |
41
+ | [ID]_0xx | Kiểm tra nhập khoảng trắng ở đầu/cuối chuỗi | Low | Đã truy cập màn hình | 1. Nhập chuỗi có khoảng trắng ở đầu/cuối.<br>2. Bấm nút thực hiện (Đăng ký/Lưu). | `" data_test "` | Hệ thống tự động cắt bỏ (trim) khoảng trắng ở đầu và cuối chuỗi trước khi lưu vào DB. | | |
42
+ | [ID]_0xx | Kiểm tra nhập độ dài tối thiểu/tối đa (Boundary Value) | Medium | Đã truy cập màn hình, biết Maxlength = N | 1. Nhập chuỗi độ dài N-1 ký tự.<br>2. Nhập chuỗi độ dài N ký tự.<br>3. Nhập chuỗi độ dài > N ký tự. | Chuỗi test tương ứng | - Độ dài <= N: cho phép nhập và lưu bình thường.<br>- Độ dài > N: hệ thống chặn trực tiếp trên UI hoặc báo lỗi hợp lệ. | | |
43
+ | [ID]_0xx | Kiểm tra nhập ký tự đặc biệt | Medium | Đã truy cập màn hình | 1. Nhập các ký tự đặc biệt (!@#$%^&*).<br>2. Bấm nút thực hiện. | `"!@#$%"` | Hệ thống lưu trữ đúng định dạng ký tự đã nhập (hoặc báo lỗi nếu có quy định hạn chế định dạng). | | |
44
+ | [ID]_0xx | Kiểm tra thao tác Copy/Paste | Low | Đã truy cập màn hình | 1. Copy một chuỗi hợp lệ.<br>2. Paste vào trường thông tin.<br>3. Bấm nút thực hiện. | - | Cho phép paste dữ liệu vào field thành công và xử lý lưu bình thường. | | |
54
45
 
55
46
  #### * Đối với Trường Số (Number / Price / Quantity)
56
47
 
57
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
58
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
59
- | [ID]_0xx | Kiểm tra nhập chữ cái và ký tự đặc biệt | Medium | Đã truy cập màn hình | 1. Cố gắng nhập chữ cái (a, b, c...) hoặc ký tự đặc biệt.<br>2. Bấm nút thực hiện. | `"abc"`, `"@#$"` | UI ngăn không cho nhập chữ cái/ký tự đặc biệt, chỉ chấp nhận chữ số. | | | | | | | | |
60
- | [ID]_0xx | Kiểm tra nhập số âm | High | Đã truy cập màn hình | 1. Nhập số âm.<br>2. Bấm nút thực hiện. | `-10` | Báo lỗi giá trị phải lớn hơn hoặc bằng 0 (hoặc chặn dấu trừ `-` trực tiếp từ UI). | | | | | | | | |
61
- | [ID]_0xx | Kiểm tra nhập số thập phân | High | Đã truy cập màn hình | 1. Nhập số có dấu phẩy thập phân.<br>2. Bấm nút thực hiện. | `1.5`, `2,3` | Báo lỗi chỉ chấp nhận số nguyên (hoặc chấp nhận số thập phân tùy đặc tả nghiệp vụ). | | | | | | | | |
62
- | [ID]_0xx | Kiểm tra hiển thị định dạng phân tách hàng nghìn | Low | Đã truy cập màn hình | 1. Nhập số lớn.<br>2. Focus out khỏi trường nhập liệu. | `1000000` | Số tự động định dạng phân tách hàng nghìn (VD: `1,000,000`). | | | | | | | | |
48
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
49
+ |---|---|---|---|---|---|---|---|---|
50
+ | [ID]_0xx | Kiểm tra nhập chữ cái và ký tự đặc biệt | Medium | Đã truy cập màn hình | 1. Cố gắng nhập chữ cái (a, b, c...) hoặc ký tự đặc biệt.<br>2. Bấm nút thực hiện. | `"abc"`, `"@#$"` | UI ngăn không cho nhập chữ cái/ký tự đặc biệt, chỉ chấp nhận chữ số. | | |
51
+ | [ID]_0xx | Kiểm tra nhập số âm | High | Đã truy cập màn hình | 1. Nhập số âm.<br>2. Bấm nút thực hiện. | `-10` | Báo lỗi giá trị phải lớn hơn hoặc bằng 0 (hoặc chặn dấu trừ `-` trực tiếp từ UI). | | |
52
+ | [ID]_0xx | Kiểm tra nhập số thập phân | High | Đã truy cập màn hình | 1. Nhập số có dấu phẩy thập phân.<br>2. Bấm nút thực hiện. | `1.5`, `2,3` | Báo lỗi chỉ chấp nhận số nguyên (hoặc chấp nhận số thập phân tùy đặc tả nghiệp vụ). | | |
53
+ | [ID]_0xx | Kiểm tra hiển thị định dạng phân tách hàng nghìn | Low | Đã truy cập màn hình | 1. Nhập số lớn.<br>2. Focus out khỏi trường nhập liệu. | `1000000` | Số tự động định dạng phân tách hàng nghìn (VD: `1,000,000`). | | |
63
54
 
64
55
  #### * Đối với Trường File Upload (Hình ảnh)
65
56
 
66
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
67
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
68
- | [ID]_0xx | Kiểm tra không upload file (Trường tùy chọn) | Medium | Đã truy cập màn hình | 1. Không chọn file upload.<br>2. Bấm nút thực hiện. | - | Hệ thống cho phép thực hiện thành công mà không báo lỗi. | | | | | | | | |
69
- | [ID]_0xx | Kiểm tra upload file sai định dạng | High | Định dạng cho phép: jpeg, png | 1. Chọn upload file có định dạng không được phép (xlsx, gif, pdf...).<br>2. Tiến hành upload. | File `.pdf`, `.xlsx` | Upload không thành công. Hiển thị thông báo lỗi đúng thiết kế: "Hình ảnh phải là định dạng jpeg hoặc png." | | | | | | | | |
70
- | [ID]_0xx | Kiểm tra upload dung lượng vượt quá giới hạn | High | Giới hạn dung lượng: tối đa 10MB | 1. Chọn file có kích thước > 10MB.<br>2. Tiến hành upload. | File kích thước `10.5MB` | Upload thất bại. Hiển thị lỗi cảnh báo: "Dung lượng hình ảnh vượt quá 10MB." | | | | | | | | |
71
- | [ID]_0xx | Kiểm tra upload file giả mạo đuôi mở rộng (Spoofing) | High | Đã truy cập màn hình | 1. Đổi đuôi file thực thi nguy hiểm `.exe` thành `.jpg`.<br>2. Chọn upload file này. | File `.exe` đổi tên thành `.jpg` | Hệ thống kiểm tra phần thân file (MIME type) thực tế và báo lỗi không đúng định dạng. | | | | | | | | |
72
- | [ID]_0xx | Kiểm tra kéo thả file (Drag & Drop) | Low | Đã truy cập màn hình | 1. Kéo file ảnh thả vào vùng upload. | File `.png` hợp lệ | Upload file thành công và hiển thị thumbnail ảnh xem trước trên giao diện. | | | | | | | | |
73
-
74
- ### 3.4. Kiểm thử Logic Nghiệp vụ (Business Rules - BR)
75
-
76
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
77
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
78
- | [ID]_0xx | Kiểm tra ràng buộc trùng lặp dữ liệu duy nhất (Unique) | High | Đã tồn tại bản ghi trong DB | 1. Nhập thông tin trùng khóa chính/mã duy nhất với bản ghi cũ.<br>2. Điền các thông tin hợp lệ khác.<br>3. Bấm Đăng ký. | Mã trùng lặp | Hệ thống báo lỗi trùng lặp: "Mã/Tên này đã tồn tại trong hệ thống. Vui lòng kiểm tra lại." | | | | | | | | |
79
- | [ID]_0xx | Kiểm tra logic liên kết dữ liệu động (Dynamic Form Control) | High | Điều kiện thay đổi hiển thị | 1. Tích chọn/Bỏ tích chọn [Checkbox điều kiện]. | - | Giao diện tự động thay đổi hiển thị ẩn/hiện hoặc disable/enable các trường thông tin liên quan theo đúng mô tả Business Rule. | | | | | | | | |
80
- | [ID]_0xx | Kiểm tra lưu dữ liệu vào Database thành công | Critical | Nhập đầy đủ và chính xác tất cả dữ liệu hợp lệ | 1. Nhập toàn bộ dữ liệu hợp lệ.<br>2. Bấm nút Đăng ký.<br>3. Kiểm tra DB và màn hình danh sách. | Dữ liệu hợp lệ | 1. Lưu bản ghi mới thành công.<br>2. Hiển thị thông báo thành công.<br>3. Dữ liệu trong Database khớp hoàn toàn các trường thông tin đã điền trên UI. | | | | | | | | |
81
-
82
- ### 3.5. Kiểm thử Ngoại lệ & Hệ thống (Exceptions & Systems)
83
-
84
- | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment | R1 Result | R1 Date | R1 Tester | R2 Result | R2 Date | R2 Tester |
85
- |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
86
- | [ID]_0xx | Bấm nút Đăng ký nhiều lần liên tiếp (Double Click) | High | Đã điền đầy đủ dữ liệu hợp lệ | 1. Click liên tiếp nhiều lần vào nút Đăng ký/Lưu. | - | Nút bấm bị disable ngay sau lượt click đầu tiên. Hệ thống chỉ xử lý và tạo duy nhất 1 bản ghi trong DB, không tạo trùng lặp. | | | | | | | | |
87
- | [ID]_0xx | Kiểm tra mất kết nối mạng đột ngột khi bấm Lưu | High | Điền đầy đủ dữ liệu hợp lệ | 1. Bấm nút Lưu.<br>2. Đồng thời ngắt kết nối mạng. | - | Hệ thống hiển thị loading và thông báo lỗi kết nối mạng, không bị crash hoặc treo màn hình trắng. | | | | | | | | |
88
- | [ID]_0xx | Kiểm tra nhấn nút Quay lại | Low | Đã điền một số dữ liệu | 1. Nhập một số thông tin.<br>2. Bấm nút Quay lại. | - | Hệ thống chuyển hướng về màn hình danh sách trước đó.<br>Bản ghi mới không được tạo trong DB. | | | | | | | | |
57
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
58
+ |---|---|---|---|---|---|---|---|---|
59
+ | [ID]_0xx | Kiểm tra không upload file (Trường tùy chọn) | Medium | Đã truy cập màn hình | 1. Không chọn file upload.<br>2. Bấm nút thực hiện. | - | Hệ thống cho phép thực hiện thành công mà không báo lỗi. | | |
60
+ | [ID]_0xx | Kiểm tra upload file sai định dạng | High | Định dạng cho phép: jpeg, png | 1. Chọn upload file có định dạng không được phép (xlsx, gif, pdf...).<br>2. Tiến hành upload. | File `.pdf`, `.xlsx` | Upload không thành công. Hiển thị thông báo lỗi đúng thiết kế: "Hình ảnh phải là định dạng jpeg hoặc png." | | |
61
+ | [ID]_0xx | Kiểm tra upload dung lượng vượt quá giới hạn | High | Giới hạn dung lượng: tối đa 10MB | 1. Chọn file có kích thước > 10MB.<br>2. Tiến hành upload. | File kích thước `10.5MB` | Upload thất bại. Hiển thị lỗi cảnh báo: "Dung lượng hình ảnh vượt quá 10MB." | | |
62
+ | [ID]_0xx | Kiểm tra upload file giả mạo đuôi mở rộng (Spoofing) | High | Đã truy cập màn hình | 1. Đổi đuôi file thực thi nguy hiểm `.exe` thành `.jpg`.<br>2. Chọn upload file này. | File `.exe` đổi tên thành `.jpg` | Hệ thống kiểm tra phần thân file (MIME type) thực tế và báo lỗi không đúng định dạng. | | |
63
+ | [ID]_0xx | Kiểm tra kéo thả file (Drag & Drop) | Low | Đã truy cập màn hình | 1. Kéo file ảnh thả vào vùng upload. | File `.png` hợp lệ | Upload file thành công và hiển thị thumbnail ảnh xem trước trên giao diện. | | |
64
+
65
+ ### 2.4. Kiểm thử Logic Nghiệp vụ (Business Rules - BR)
66
+
67
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
68
+ |---|---|---|---|---|---|---|---|---|
69
+ | [ID]_0xx | Kiểm tra ràng buộc trùng lặp dữ liệu duy nhất (Unique) | High | Đã tồn tại bản ghi trong DB | 1. Nhập thông tin trùng khóa chính/mã duy nhất với bản ghi cũ.<br>2. Điền các thông tin hợp lệ khác.<br>3. Bấm Đăng ký. | Mã trùng lặp | Hệ thống báo lỗi trùng lặp: "Mã/Tên này đã tồn tại trong hệ thống. Vui lòng kiểm tra lại." | | |
70
+ | [ID]_0xx | Kiểm tra logic liên kết dữ liệu động (Dynamic Form Control) | High | Điều kiện thay đổi hiển thị | 1. Tích chọn/Bỏ tích chọn [Checkbox điều kiện]. | - | Giao diện tự động thay đổi hiển thị ẩn/hiện hoặc disable/enable các trường thông tin liên quan theo đúng mô tả Business Rule. | | |
71
+ | [ID]_0xx | Kiểm tra lưu dữ liệu vào Database thành công | Critical | Nhập đầy đủ và chính xác tất cả dữ liệu hợp lệ | 1. Nhập toàn bộ dữ liệu hợp lệ.<br>2. Bấm nút Đăng ký.<br>3. Kiểm tra DB và màn hình danh sách. | Dữ liệu hợp lệ | 1. Lưu bản ghi mới thành công.<br>2. Hiển thị thông báo thành công.<br>3. Dữ liệu trong Database khớp hoàn toàn các trường thông tin đã điền trên UI. | | |
72
+
73
+ ### 2.5. Kiểm thử Ngoại lệ & Hệ thống (Exceptions & Systems)
74
+
75
+ | TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
76
+ |---|---|---|---|---|---|---|---|---|
77
+ | [ID]_0xx | Bấm nút Đăng ký nhiều lần liên tiếp (Double Click) | High | Đã điền đầy đủ dữ liệu hợp lệ | 1. Click liên tiếp nhiều lần vào nút Đăng ký/Lưu. | - | Nút bấm bị disable ngay sau lượt click đầu tiên. Hệ thống chỉ xử lý và tạo duy nhất 1 bản ghi trong DB, không tạo trùng lặp. | | |
78
+ | [ID]_0xx | Kiểm tra mất kết nối mạng đột ngột khi bấm Lưu | High | Điền đầy đủ dữ liệu hợp lệ | 1. Bấm nút Lưu.<br>2. Đồng thời ngắt kết nối mạng. | - | Hệ thống hiển thị loading và thông báo lỗi kết nối mạng, không bị crash hoặc treo màn hình trắng. | | |
79
+ | [ID]_0xx | Kiểm tra nhấn nút Quay lại | Low | Đã điền một số dữ liệu | 1. Nhập một số thông tin.<br>2. Bấm nút Quay lại. | - | Hệ thống chuyển hướng về màn hình danh sách trước đó.<br>Bản ghi mới không được tạo trong DB. | | |
@@ -35,6 +35,31 @@ Một trong hai:
35
35
 
36
36
  ---
37
37
 
38
+ ### Step 1b: Đọc Source Code
39
+
40
+ Chạy ngay sau Step 1, trước khi bắt đầu phân tích requirements.
41
+
42
+ Nếu workspace mở dạng parent folder chứa cả `ak docs` lẫn source code repos:
43
+
44
+ 1. Xác định repo liên quan: đọc field `repo` trong `.aiflow/context/current.json`, hoặc suy từ ticket context (tên module, màn hình). Nếu không rõ → hỏi TESTER 1 câu: "Feature này thuộc repo nào?"
45
+ 2. **Nếu GitNexus MCP có sẵn** (`.mcp.json` có entry `gitnexus`): dùng GitNexus thay vì đọc file trực tiếp:
46
+ - `gitnexus: query("tên màn hình hoặc chức năng")` → tìm code liên quan
47
+ - `gitnexus: context("ClassName")` → xem toàn bộ class/service
48
+ 3. **Nếu không có GitNexus**: đọc trực tiếp các file liên quan trong repo:
49
+ - Routes / API endpoints của màn hình
50
+ - Controller / Service — logic xử lý request
51
+ - Validation rules / Form request / DTO
52
+ - Data models / Entity / DB schema
53
+ 4. Tích hợp vào phân tích:
54
+ - Validation rules thực tế trong code (có thể khác với spec)
55
+ - Business rules ẩn trong service layer
56
+ - API response format thực tế
57
+ - Constraints từ DB schema
58
+
59
+ > ⚠️ Source code chỉ dùng để **mở rộng coverage** (thêm test cases dựa trên code thực tế) và phát hiện điểm không nhất quán giữa spec và implement. Expected result vẫn lấy từ ticket/spec của BA/PM — **không lấy từ code**.
60
+
61
+ ---
62
+
38
63
  ### Step 2: Phân tích Requirements
39
64
 
40
65
  Dựa trên ticket/description, phân tích:
@@ -225,7 +250,6 @@ Tạo `test-plan/test-analysis.md`:
225
250
 
226
251
  ### Step 5: Present to Tester
227
252
 
228
- ```
229
253
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
254
  ⏸️ GATE 1: TEST ANALYSIS READY
231
255
 
@@ -235,13 +259,22 @@ Summary:
235
259
  Approach: [Manual / Automation / Mixed]
236
260
  Estimate: [S / M / L / XL]
237
261
 
238
- → Review: test-plan/test-analysis.md
262
+ → Review: [test-plan/test-analysis.md](test-plan/test-analysis.md)
239
263
  → Type APPROVED to proceed to Gate 2
240
264
  → Or provide feedback to update
241
265
 
242
266
  ⚠️ I will NOT proceed to Gate 2 until I receive "APPROVED".
243
267
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
244
- ```
268
+
269
+ **Nếu nhận được APPROVED mà còn câu hỏi clarify (Step 3) chưa được TESTER trả lời → từ chối ngay:**
270
+
271
+ ⛔ GATE 1 BLOCKED — Còn câu hỏi chưa được trả lời.
272
+
273
+ Câu hỏi đang chờ:
274
+ - [câu hỏi clarify chưa được trả lời]
275
+
276
+ → Vui lòng trả lời câu hỏi trên trước khi gõ APPROVED.
277
+ ❌ APPROVED không được chấp nhận khi còn câu hỏi chưa được làm rõ.
245
278
 
246
279
  ---
247
280
 
@@ -257,6 +290,7 @@ Summary:
257
290
  - ❌ **KHÔNG** tiến sang Gate 2 khi chưa nhận "APPROVED"
258
291
  - ❌ **KHÔNG** hỏi nhiều câu cùng lúc — từng câu một, chờ trả lời
259
292
  - ❌ **KHÔNG** viết code ở Gate 1
293
+ - ❌ **KHÔNG chấp nhận APPROVED** khi còn câu hỏi clarify (Step 3) chưa được TESTER trả lời — từ chối và hiển thị câu hỏi còn lại
260
294
  - ✅ **PHẢI** lưu `test-plan/test-analysis.md`
261
295
  - ✅ **PHẢI** hiển thị Gate 1 prompt và chờ APPROVED
262
296
  - ✅ **PHẢI** xác định scope rõ ràng trước khi liệt kê flows
@@ -0,0 +1,111 @@
1
+ # Mục đích
2
+ Hiểu đúng, đủ, sâu và toàn diện yêu cầu hệ thống dưới góc nhìn của Senior QA Engineer (10+ năm kinh nghiệm) trước khi tiến hành thiết kế kịch bản kiểm thử (test scenarios) hay tạo test case. Quy trình này giúp tránh sót lọt lỗi nghiệp vụ, tối ưu hóa nguồn lực kiểm thử và kiểm soát chặt chẽ phạm vi dự án.
3
+
4
+ # Input
5
+ - Tài liệu yêu cầu nghiệp vụ: SRS, User Story, PRD, hoặc mô tả tính năng.
6
+ - Tài liệu thiết kế giao diện (UI/UX Mockups, Figma, Wireframe - nếu có).
7
+ - Tài liệu kỹ thuật: Mô tả API (API Specs), sơ đồ cơ sở dữ liệu (DB Schema) hoặc tài liệu kiến trúc (nếu có).
8
+ - Phạm vi kiểm thử được chỉ định ban đầu (Module, Màn hình, hoặc Tính năng cụ thể).
9
+ - **Source code** (nếu workspace có source repos): validation rules, service/business logic, DB schema, API endpoints — đọc trực tiếp từ code để bổ sung context thực tế.
10
+
11
+ # Quy trình thực hiện
12
+
13
+ ## 0. Đọc Source Code (nếu workspace có source repos)
14
+
15
+ Thực hiện trước tất cả các bước phân tích.
16
+
17
+ Nếu workspace mở dạng parent folder chứa cả tài liệu lẫn source code repos:
18
+
19
+ 1. Xác định repo liên quan từ ticket hoặc tên module/màn hình. Nếu không rõ → hỏi 1 câu.
20
+ 2. **Nếu GitNexus MCP có sẵn** (`.mcp.json` có entry `gitnexus`):
21
+ - `gitnexus: query("tên màn hình hoặc chức năng")` → tìm code liên quan
22
+ - `gitnexus: context("ClassName")` → xem service/controller/validator đầy đủ
23
+ 3. **Nếu không có GitNexus**: đọc trực tiếp:
24
+ - Validation rules / Form request / DTO — tìm constraint thực tế (max length, regex, required)
25
+ - Service / Business Logic — phát hiện business rules ẩn không có trong spec
26
+ - Data models / DB schema — tìm DB constraint (unique, nullable, FK)
27
+ - API response format — xác định expected output chính xác
28
+ 4. Đưa kết quả vào mục **Validations**, **Business Rules**, và **Risk** trong báo cáo:
29
+ - Ghi rõ nguồn gốc: `[từ code]` để phân biệt với thông tin từ spec
30
+ - Đánh dấu điểm không nhất quán giữa spec và code thực tế vào **Q&A List**
31
+
32
+ > ⚠️ Source code chỉ dùng để **bổ sung context** và mở rộng coverage. Expected result vẫn lấy từ ticket/spec của BA/PM.
33
+
34
+ ## 1. Xác định Phạm vi (Scope Definition)
35
+ - **Feature/Module cụ thể:** Xác định chính xác module, màn hình hoặc tính năng đang thực hiện phân tích kiểm thử.
36
+ - **Ranh giới Scope (Boundary):** Định rõ phần nào nằm trong phạm vi cần kiểm thử (In-scope) và phần nào nằm ngoài phạm vi (Out-of-scope) để tránh kiểm thử tràn lan, lãng phí thời gian.
37
+
38
+ ## 2. Phân tích Chức năng Chi tiết (Functional Analysis)
39
+ - **Feature Overview:** Tóm tắt tổng quan về mục đích và vai trò của tính năng đối với người dùng cuối và hệ thống.
40
+ - **Main Flow (Luồng chính):** Xác định luồng nghiệp vụ đi chuẩn xác (Happy Path) từ đầu tới khi hoàn thành thành công.
41
+ - **Alternative/Exception Flows (Luồng phụ/Ngoại lệ):** Phác thảo các luồng rẽ nhánh, luồng xử lý lỗi, tình huống hủy thao tác, mất kết nối, v.v.
42
+ - **User Roles & Permissions:** Làm rõ các tác nhân (Actor) tham gia vào hệ thống, phân quyền tương ứng của từng vai trò và mức độ ảnh hưởng của quyền hạn lên tính năng.
43
+ - **Business Rules:** Phân tích các quy tắc nghiệp vụ ngầm định, thuật toán tính toán, quy luật kiểm tra logic.
44
+ - **Validations:** Liệt kê đầy đủ các ràng buộc kiểm tra dữ liệu đầu vào (độ dài, định dạng, ký tự đặc biệt, trường bắt buộc) và cấu trúc dữ liệu trả ra (output).
45
+ - **State/Status Transitions:** Theo dõi sơ đồ chuyển trạng thái của đối tượng (nếu có) và điều kiện tiên quyết (Preconditions) cũng như điều kiện đầu ra (Postconditions) để chuyển trạng thái.
46
+ - **API & External Systems:** Nhận diện các cổng API nội bộ hoặc tích hợp từ hệ thống bên ngoài tham gia xử lý dữ liệu.
47
+
48
+ ## 3. Phân tích Phi chức năng (Non-Functional Analysis)
49
+ - **Accessibility Requirements:** Kiểm tra các tiêu chuẩn hỗ trợ tiếp cận (WCAG, hỗ trợ Screen Reader cho người khiếm thị, điều hướng qua bàn phím).
50
+ - **Compatibility:** Xác định các môi trường cần tương thích bao gồm danh sách Trình duyệt (Chrome, Safari, Firefox...), Hệ điều hành (Windows, macOS, iOS, Android...) và Thiết bị (Desktop, Mobile, Tablet...).
51
+
52
+ ## 4. Phân tích Môi trường & Dữ liệu Kiểm thử (Test Environment & Data)
53
+ - **Test Data dependencies:** Xác định các phụ thuộc dữ liệu cần chuẩn bị trước khi test (ví dụ: loại tài khoản, trạng thái dữ liệu nền...).
54
+ - **Third-party integrations:** Các bên thứ ba liên quan (cổng thanh toán, SMS OTP, CRM...) và cách thức mô phỏng (stub/mock) trên môi trường test.
55
+
56
+ ## 5. Phát hiện Rủi ro & Làm rõ thông tin (Clarifications & Risks)
57
+ - **Risks / Điểm dễ lỗi:** Nhận diện các điểm phức tạp, vùng logic dễ xảy ra lỗi hệ thống (deadlock, logic loop, race conditions).
58
+ - **Assumptions (Giả định):** Những giả định được đưa ra đối với các điểm nghiệp vụ chưa rõ ràng để định hướng kiểm thử.
59
+ - **Q&A List:** Tổng hợp các câu hỏi làm rõ đối với các yêu cầu mơ hồ, thiếu logic hoặc mâu thuẫn để thảo luận trực tiếp với BA/Stakeholders.
60
+
61
+ ---
62
+
63
+ # Mẫu Báo cáo Phân tích Yêu cầu (Template)
64
+ *Kết quả phân tích yêu cầu phải được trình bày theo cấu trúc chuẩn dưới dạng **bullet point** ngắn gọn, tập trung hoàn toàn vào các nội dung phục vụ kiểm thử và tuyệt đối **không tạo test case ở bước này**.*
65
+
66
+ ```markdown
67
+ # BÁO CÁO PHÂN TÍCH YÊU CẦU (REQUIREMENT ANALYSIS REPORT)
68
+
69
+ ## 📋 SCOPE DEFINITION
70
+ 1. **Module/Màn hình/Feature cụ thể đang test:** [Tên Module/Feature]
71
+ 2. **Ranh giới scope:**
72
+ - **Bao gồm (In-Scope):** [Các màn hình, luồng nghiệp vụ cụ thể cần test]
73
+ - **Không bao gồm (Out-of-Scope):** [Các phần không test trong đợt này]
74
+
75
+ ## 📋 FUNCTIONAL ANALYSIS
76
+ 3. **Feature Overview:** [Mô tả tổng quan ngắn gọn về tính năng]
77
+ 4. **Main Flow:** [Happy path - các bước thực hiện luồng chính]
78
+ 5. **Alternative Flows:** [Các luồng rẽ nhánh và luồng xử lý ngoại lệ]
79
+ 6. **User Roles / Permissions:** [Các tác nhân và phân quyền thao tác tương ứng]
80
+ 7. **Business Rules:** [Các quy tắc nghiệp vụ và ràng buộc logic bắt buộc]
81
+ 8. **Validations (input/output):** [Các ràng buộc dữ liệu đầu vào và đầu ra]
82
+ 9. **State / Status liên quan:** [Các trạng thái và điều kiện chuyển trạng thái]
83
+ 10. **API / External System liên quan (nếu có):** [Tác động DB, API endpoints, bên thứ ba]
84
+
85
+ ## 📋 NON-FUNCTIONAL ANALYSIS
86
+ 11. **Accessibility Requirements (WCAG, screen reader):** [Yêu cầu về khả năng tiếp cận]
87
+ 12. **Compatibility (Browser/Device/OS support):** [Môi trường cần test tương thích]
88
+
89
+ ## 📋 TEST ENVIRONMENT
90
+ 13. **Test Data dependencies:** [Yêu cầu về dữ liệu cần chuẩn bị trước]
91
+ 14. **Third-party integrations:** [Mô phỏng/Sandbox liên quan đến các bên thứ ba]
92
+
93
+ ## 📋 CLARIFICATION
94
+ 15. **Risk / điểm dễ lỗi:** [Các điểm nóng tiềm ẩn rủi ro phát sinh bug]
95
+ 16. **Q&A / Out of Scope bổ sung:** [Danh sách câu hỏi cần BA/Stakeholders làm rõ]
96
+ ```
97
+
98
+ ---
99
+
100
+ # Output
101
+ Bản phân tích yêu cầu hoàn chỉnh định dạng Markdown bao gồm:
102
+ - **Feature Summary & Business Rules** đã phân tích sâu.
103
+ - **Ranh giới Test Scope** (In-scope và Out-of-scope) rõ ràng.
104
+ - **Dependencies & Risks** (Rủi ro, dữ liệu phụ thuộc, môi trường liên quan).
105
+ - **Q&A List** để làm việc trực tiếp với BA/Stakeholders.
106
+
107
+ ⚠️ **LƯU Ý QUAN TRỌNG KHI THỰC HIỆN:**
108
+ - Trình bày dạng bullet point ngắn gọn nhưng đầy đủ, súc tích.
109
+ - Chỉ tập trung vào SCOPE được chỉ định, không mở rộng phân tích ra ngoài phạm vi.
110
+ - Chỉ tập trung vào các nội dung phục vụ trực tiếp cho testing.
111
+ - **Không tự ý generate testcase ở bước này.**
@@ -0,0 +1,24 @@
1
+ # Mục đích
2
+ Nhận diện, phân loại rủi ro để tối ưu hóa nguồn lực và xác định mức độ ưu tiên kiểm thử.
3
+
4
+ # Input
5
+ - Kết quả từ 00.01 (Requirement Analysis).
6
+ - Sơ đồ kiến trúc hệ thống (nếu có).
7
+
8
+ # Quy trình thực hiện
9
+
10
+ ## 1. Phân tích các yếu tố rủi ro
11
+ - **Tính phức tạp:** Thuật toán khó, logic lồng nhau.
12
+ - **Dữ liệu:** Dữ liệu lớn, cấu trúc phức tạp, rủi ro mất mát/sai lệch dữ liệu.
13
+ - **Tích hợp:** Kết nối API, Third-party, hệ thống Legacy.
14
+ - **Nghiệp vụ:** Ảnh hưởng trực tiếp đến doanh thu, người dùng (Business Impact).
15
+ - **Hệ thống:** Phân quyền, Batch processing, Migration.
16
+
17
+ ## 2. Đánh giá & Phân loại
18
+ - Ưu tiên mức độ dựa trên: **Xác suất xảy ra** x **Mức độ ảnh hưởng**.
19
+
20
+ # Output
21
+ - Risk Matrix (High/Medium/Low).
22
+ - Regression Scope (Phạm vi ảnh hưởng cần test lại).
23
+ - Mitigation Plan (Kế hoạch giảm thiểu rủi ro).
24
+ - Testing Priority (Thứ tự ưu tiên các kịch bản).
@@ -0,0 +1,90 @@
1
+ # Mục đích
2
+
3
+ Thiết kế và xây dựng danh sách các kịch bản kiểm thử (Test Scenarios - High-level) bao phủ toàn bộ các khía cạnh nghiệp vụ, phi chức năng và rủi ro được chỉ ra trong Báo cáo phân tích yêu cầu (16 mục tiêu chuẩn) và Báo cáo phân tích rủi ro, đảm bảo không bỏ sót bất kỳ luồng xử lý nào.
4
+
5
+ # Input
6
+
7
+ - **Báo cáo Phân tích Yêu cầu (Requirement Analysis Report) đã xác định rõ phạm vi (In-Scope)**: Chỉ tập trung xây dựng Test Scenarios/Checklist cho các tính năng và luồng nghiệp vụ nằm trong phạm vi kiểm thử đã được xác định, tuyệt đối không thiết kế lan man ra ngoài phạm vi. Báo cáo này bao gồm thông tin chi tiết về 16 hạng mục dữ liệu sau:
8
+ 1. *Module/Màn hình/Feature cụ thể đang test* (Để bám sát đúng phạm vi)
9
+ 2. *Ranh giới scope* (Xác định rõ In-Scope và Out-of-Scope)
10
+ 3. *Feature Overview*
11
+ 4. *Main Flow*
12
+ 5. *Alternative Flows*
13
+ 6. *User Roles / Permissions*
14
+ 7. *Business Rules*
15
+ 8. *Validations (input/output)*
16
+ 9. *State / Status liên quan*
17
+ 10. *API / External System liên quan (nếu có)*
18
+ 11. *Accessibility Requirements (WCAG, screen reader)*
19
+ 12. *Compatibility (Browser/Device/OS support)*
20
+ 13. *Test Data dependencies*
21
+ 14. *Third-party integrations*
22
+ 15. *Risk / điểm dễ lỗi*
23
+ 16. *Out of Scope*
24
+ - **Báo cáo Phân tích Rủi ro (00.02.risk-analysis.md)**.
25
+ - **Đọc file quy ước chung (QA_Writing_Standards.md)**.
26
+ - **Tài liệu bổ trợ (nếu có):** Thiết kế UI/UX (Figma/Mockups), API Specifications, DB Schema.
27
+
28
+ # Quy trình thực hiện
29
+
30
+ ## 1. Thiết kế Kịch bản Đa chiều dựa trên các mục dữ liệu Phân tích Yêu cầu
31
+
32
+ ### A. Nhóm Chức năng (Functional Scenarios)
33
+
34
+ - **Happy Path (Luồng chạy đúng chuẩn):** Thiết kế dựa trên **Mục 3 (Feature Overview)** và **Mục 4 (Main Flow)** của Báo cáo phân tích yêu cầu. Đảm bảo toàn bộ luồng chính hoạt động đúng khi người dùng nhập đúng dữ liệu và thực hiện đúng trình tự.
35
+ - **Alternative/Exception Flows (Luồng phụ và Luồng lỗi ngoại lệ):** Thiết kế dựa trên **Mục 5 (Alternative Flows)** và **Mục 9 (State / Status liên quan)**. Kịch bản bao gồm việc chuyển đổi trạng thái sai lệch, hủy thao tác giữa chừng, mất kết nối, timeout hoặc nhập sai thông tin ở luồng phụ.
36
+ - **Permission & Role-based (Kịch bản phân quyền):** Thiết kế dựa trên **Mục 6 (User Roles / Permissions)**. Đảm bảo mỗi kịch bản kiểm tra khả năng truy cập hợp lệ, chặn truy cập trái phép và kiểm tra lỗ hổng leo thang đặc quyền.
37
+ - **Business Rules & Data Validations (Quy tắc nghiệp vụ & Kiểm tra dữ liệu):** Thiết kế dựa trên **Mục 7 (Business Rules)** và **Mục 8 (Validations)**. Áp dụng kỹ thuật phân tích biên, phân vùng tương đương để kiểm tra logic tính toán, ràng buộc dữ liệu đầu vào (độ dài, ký tự đặc biệt) và cấu trúc đầu ra.
38
+ - **Integration & E2E (Kịch bản tích hợp):** Thiết kế dựa trên **Mục 10 (API / External System liên quan)**. Đảm bảo tính toàn vẹn dữ liệu truyền giữa các API và cập nhật thông tin chính xác trong Database.
39
+
40
+ ### B. Nhóm Phi chức năng (Non-Functional Scenarios)
41
+
42
+ - **Accessibility (Tính tiếp cận):** Thiết kế dựa trên **Mục 11 (Accessibility Requirements)**. Kiểm tra tính năng tương thích với Screen Reader cho người khiếm thị, khả năng điều hướng bằng bàn phím (tab, enter) và độ tương phản màu sắc theo chuẩn WCAG.
43
+ - **Compatibility (Tính tương thích):** Thiết kế dựa trên **Mục 12 (Compatibility)**. Đảm bảo giao diện hiển thị đúng chuẩn và chức năng hoạt động mượt mà trên nhiều trình duyệt (Chrome, Safari, Firefox), hệ điều hành (iOS, Android, Windows) và kích thước màn hình khác nhau (PC, Mobile, Tablet).
44
+
45
+ ### C. Nhóm Môi trường & Dữ liệu Kiểm thử (Test Environment & Data Scenarios)
46
+
47
+ - **Data-Driven (Dữ liệu đặc biệt):** Thiết kế dựa trên **Mục 13 (Test Data dependencies)**. Kịch bản chạy kiểm thử lặp với các bộ dữ liệu nền/tài khoản đặc thù khác nhau (ví dụ: tài khoản bị khóa, số dư âm, khách hàng VIP).
48
+ - **Third-Party Integration Mocking (Tích hợp bên thứ ba):** Thiết kế dựa trên **Mục 14 (Third-party integrations)**. Kịch bản kiểm tra khả năng xử lý khi API của bên thứ ba trả về lỗi, timeout hoặc trả về phản hồi không mong muốn.
49
+
50
+ ### D. Nhóm Kịch bản Rủi ro (Risk-Based Scenarios)
51
+
52
+ - Thiết kế dựa trên **Mục 15 (Risk / điểm dễ lỗi)** từ Báo cáo phân tích yêu cầu kết hợp với danh sách phân loại rủi ro từ Báo cáo phân tích rủi ro. Tập trung vào kịch bản kiểm tra khả năng tự phục hồi lỗi hệ thống (Error Recovery) và kiểm thử phá hủy (Destructive Testing) ở các vùng nghiệp vụ phức tạp.
53
+
54
+ ## 2. Rà soát Độ bao phủ (Coverage Review)
55
+
56
+ - Xây dựng bảng ma trận để đảm bảo 100% các mục quan trọng (từ mục 1 đến 16 của Báo cáo phân tích yêu cầu) đều được kiểm thử và ánh xạ sang ít nhất một kịch bản kiểm thử tương ứng.
57
+
58
+ ---
59
+
60
+ # Mẫu Bảng Kịch bản Kiểm thử & Traceability Matrix (Template)
61
+
62
+ ```markdown
63
+ # DANH SÁCH KỊCH BẢN KIỂM THỬ (TEST SCENARIOS LIST)
64
+
65
+ | Scenario ID | Feature/Module | Check List | Scenario Type | Target Req ID (1-16) | Priority | Test Data / Dependency |
66
+ |-------------|----------------|------------|---------------|----------------------|----------|------------------------|
67
+ | TS_01_001 | [Tên Feature] | [Mô tả kịch bản] | Happy Path | Req_04 (Main Flow) | High | [Dữ liệu cần thiết] |
68
+ | TS_01_002 | [Tên Feature] | [Mô tả kịch bản] | Negative | Req_08 (Validations) | Medium | [Dữ liệu cần thiết] |
69
+ | TS_01_003 | [Tên Feature] | [Mô tả kịch bản] | Exception | Req_09 (Status) | High | [Dữ liệu cần thiết] |
70
+ | TS_01_004 | [Tên Feature] | [Mô tả kịch bản] | Permission | Req_06 (Roles) | High | [Dữ liệu cần thiết] |
71
+ | TS_01_005 | [Tên Feature] | [Mô tả kịch bản] | Accessibility | Req_11 (Access) | Low | [Screen Reader tool] |
72
+ | TS_01_006 | [Tên Feature] | [Mô tả kịch bản] | Risk-based | Req_15 (Risks) | High | [Dữ liệu giả lập] |
73
+ ```
74
+
75
+ ---
76
+
77
+ # Output
78
+
79
+ Bảng danh sách kịch bản kiểm thử (Test Scenarios) hoàn chỉnh bao gồm:
80
+
81
+ - **Test Scenarios List** chi tiết, đa chiều (Functional, Non-functional, Risk-based).
82
+ - **Traceability Matrix** được tích hợp sẵn thông qua cột ánh xạ nguồn gốc yêu cầu (Target Req ID).
83
+ - **Phân loại Priority** và xác định rõ ràng **Test Data/Dependency** cho từng kịch bản.
84
+
85
+ ⚠️ **LƯU Ý QUAN TRỌNG KHI THỰC HIỆN:**
86
+
87
+ - Trình bày rõ ràng dưới dạng bảng (table).
88
+ - Các mô tả kịch bản (Check List) cần ở mức High-level, tập trung vào mục tiêu kiểm thử thay vì chi tiết từng bước click chuột.
89
+ - Đảm bảo tính bao phủ (Coverage) triệt để đối với cả 16 điểm phân tích từ Báo cáo phân tích yêu cầu.
90
+ - Chỉ tạo các kịch bản nằm trong ranh giới In-scope (đã thống nhất tại Mục 2 của Báo cáo phân tích yêu cầu).
@@ -0,0 +1,68 @@
1
+ # Mục đích
2
+
3
+ Đảm bảo chất lượng, tính chính xác, tính khả thi và độ bao phủ toàn diện của bộ Test Case dựa trên Báo cáo phân tích yêu cầu (16 hạng mục tiêu chuẩn), Báo cáo phân tích rủi ro và phạm vi kiểm thử (Scope) đã được phê duyệt.
4
+
5
+ # Input
6
+
7
+ - Danh sách Test Case cần review.
8
+ - **Báo cáo Phân tích Yêu cầu (Requirement Analysis Report) hoàn chỉnh bao gồm 16 hạng mục dữ liệu:**
9
+ 1. *Module/Màn hình/Feature cụ thể đang test*
10
+ 2. *Ranh giới scope* (Bao gồm gì, không bao gồm gì)
11
+ 3. *Feature Overview*
12
+ 4. *Main Flow*
13
+ 5. *Alternative Flows*
14
+ 6. *User Roles / Permissions*
15
+ 7. *Business Rules*
16
+ 8. *Validations (input/output)*
17
+ 9. *State / Status liên quan*
18
+ 10. *API / External System liên quan (nếu có)*
19
+ 11. *Accessibility Requirements (WCAG, screen reader)*
20
+ 12. *Compatibility (Browser/Device/OS support)*
21
+ 13. *Test Data dependencies*
22
+ 14. *Third-party integrations*
23
+ 15. *Risk / điểm dễ lỗi*
24
+ 16. *Out of Scope*
25
+ - **Báo cáo Phân tích Rủi ro (00.02.risk-analysis.md)**
26
+ - **Đọc file quy ước chung (QA_Writing_Standards.md)**.
27
+
28
+ # Checklist kiểm tra
29
+
30
+ ## 1. Kiểm tra Phạm vi (Scope Definition Review)
31
+
32
+ - ✅ **In-scope Coverage (Bám sát phạm vi):** Tất cả các chức năng thuộc phần In-scope (Mục 1 & 2) đều phải được thiết kế test case tương ứng.
33
+ - ✅ **No Out-of-scope (Không dư thừa):** Tuyệt đối không tạo test case cho các phần nằm trong danh sách Out-of-scope (Mục 16) hoặc các chức năng nằm ngoài biên kiểm thử.
34
+
35
+ ## 2. Kiểm tra Luồng chức năng (Functional Coverage Review)
36
+
37
+ - ✅ **Main Flow (Luồng chính):** Các bước kiểm thử cho luồng chính (Mục 4) có rõ ràng, logic và kết quả mong muốn có chính xác không?
38
+ - ✅ **Alternative/Exception & Status (Luồng phụ/Ngoại lệ & Trạng thái):** Đã bao phủ hết các kịch bản lỗi, hủy thao tác (Mục 5) và các trường hợp chuyển đổi trạng thái của đối tượng (Mục 9)?
39
+ - ✅ **User Roles & Permissions (Tác nhân & Phân quyền):** Đã kiểm thử đủ cho từng vai trò người dùng (Mục 6), bao gồm cả phân quyền hợp lệ, chặn phân quyền không hợp lệ và kiểm tra leo thang đặc quyền (nếu có)?
40
+ - ✅ **Business Rules & Validations (Quy tắc & Ràng buộc):** Đã kiểm thử các quy tắc nghiệp vụ đặc thù (Mục 7) và các ràng buộc dữ liệu đầu vào/ra (Mục 8 - ranh giới biên, kiểu dữ liệu, định dạng)?
41
+ - ✅ **Integration & API (Tích hợp & API):** Đã kiểm thử đầy đủ các điểm giao tiếp API và tính toàn vẹn của dữ liệu lưu vào cơ sở dữ liệu (Mục 10)?
42
+
43
+ ## 3. Kiểm tra Phi chức năng (Non-Functional Review)
44
+
45
+ - ✅ **Accessibility (Khả năng tiếp cận):** Đã có test case kiểm thử hỗ trợ Screen Reader, độ tương phản màu sắc và phím tắt điều hướng theo chuẩn WCAG (Mục 11)?
46
+ - ✅ **Compatibility (Tính tương thích):** Đã có kịch bản chạy thử nghiệm trên các trình duyệt, hệ điều hành và thiết bị đích được yêu cầu (Mục 12)?
47
+
48
+ ## 4. Kiểm tra Môi trường & Dữ liệu Kiểm thử (Environment & Data Review)
49
+
50
+ - ✅ **Test Data (Dữ liệu nền):** Các điều kiện tiên quyết (Prerequisites/Preconditions) và dữ liệu test cần chuẩn bị (Mục 13) có được chỉ ra cụ thể và rõ ràng trong test case không?
51
+ - ✅ **Third-Party (Bên thứ ba):** Đã có giải pháp mô phỏng (stub/mock) hoặc test case kiểm thử các kịch bản tích hợp bên thứ ba (Mục 14)?
52
+
53
+ ## 5. Kiểm tra Rủi ro & Điểm dễ lỗi (Risk-Based Review)
54
+
55
+ - ✅ **High-risk Areas (Vùng rủi ro cao):** Các vùng nghiệp vụ phức tạp, dễ lỗi đã được phân tích (Mục 15) và xếp hạng ưu tiên cao trong Báo cáo phân tích rủi ro có được bao phủ bởi các kịch bản kiểm thử sâu (stress test cục bộ, error recovery...) không?
56
+
57
+ ## 6. Chất lượng Chi tiết của Test Case (Test Case Quality Review)
58
+
59
+ - ✅ **Test Steps (Các bước thực hiện):** Rõ ràng, súc tích, không mơ hồ và có thể tái hiện được?
60
+ - ✅ **Expected Result (Kết quả mong đợi):** Cụ thể, đo lường được (không ghi chung chung như "hệ thống hoạt động đúng").
61
+ - ✅ **Redundancy (Tính tối ưu):** Không trùng lặp nội dung giữa các test case.
62
+
63
+ ---
64
+
65
+ # Output
66
+
67
+ - Báo cáo kết quả Review Test Case (Review Comments & Feedback).
68
+ - Trạng thái phê duyệt (Approved / Need Update / Rejected).