@relipa/ai-flow-kit 0.1.2 → 0.1.4-beta.0
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.
- package/README.md +139 -0
- package/bin/aiflow.js +89 -2
- package/custom/harness/playwright/.env.example +10 -0
- package/custom/harness/playwright/playwright.config.ts +34 -0
- package/custom/harness/playwright/tests/e2e/auth.setup.ts +25 -0
- package/custom/harness/playwright/tests/e2e/fixtures/test.ts +6 -0
- package/custom/harness/playwright/tests/e2e/pages/BasePage.ts +9 -0
- package/custom/harness/playwright/tests/e2e/support/auth.ts +5 -0
- package/custom/mcp-presets/playwright.json +8 -0
- package/custom/rules/test-patterns.md +70 -0
- package/custom/skills/automation-testing/SKILL.md +239 -0
- package/custom/skills/automation-testing/templates/BasePage.ts +29 -0
- package/custom/skills/automation-testing/templates/PageObject.example.ts +29 -0
- package/custom/skills/automation-testing/templates/playwright.config.ts +39 -0
- package/custom/skills/automation-testing/templates/spec.example.ts +29 -0
- package/custom/skills/ba-skills/skill-ba-phan-tich-ban-dau-v1.md +44 -0
- package/custom/skills/ba-skills/skill-ba-prototype-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-qa-template-v1.md +21 -0
- package/custom/skills/ba-skills/skill-ba-qa-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-template-phan-tich-ban-dau-v1.md +30 -0
- package/custom/skills/ba-skills/skill-ba-template-uc-v1.md +83 -0
- package/custom/skills/ba-skills/skill-ba-ve-luong-mermaid-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-viet-spec-uc-v1.md +38 -0
- package/custom/skills/ba-skills/skill-ba-xay-dung-business-rules-v1.md +39 -0
- package/custom/skills/coverage-check/SKILL.md +202 -0
- package/custom/skills/evidence-aggregation/SKILL.md +246 -0
- package/custom/skills/execute-flow/SKILL.md +499 -0
- package/custom/skills/execute-flow/templates/playwright.config.ts +39 -0
- package/custom/skills/gate-review/SKILL.md +195 -0
- package/custom/skills/generate-test-report/SKILL.md +99 -0
- package/custom/skills/generate-test-report/templates/test-report.md +58 -0
- package/custom/skills/generate-testcase/SKILL.md +350 -0
- package/custom/skills/generate-testcase/templates/testcase.md +88 -0
- package/custom/skills/log-bug/SKILL.md +131 -0
- package/custom/skills/pr-impact-analysis/SKILL.md +180 -0
- package/custom/skills/retest-orchestration/SKILL.md +191 -0
- package/custom/skills/script-sync/SKILL.md +208 -0
- package/custom/skills/test-analysis/SKILL.md +300 -0
- package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +111 -0
- package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +24 -0
- package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +90 -0
- package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +68 -0
- package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +30 -0
- package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +27 -0
- package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +26 -0
- package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +26 -0
- package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +25 -0
- package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +28 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +29 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +57 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +27 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +27 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +27 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +51 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +44 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +41 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +40 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +43 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +44 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +43 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +43 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +39 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +39 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +42 -0
- package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +37 -0
- package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +36 -0
- package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +38 -0
- package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +40 -0
- package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +34 -0
- package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +35 -0
- package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +35 -0
- package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +34 -0
- package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +33 -0
- package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +38 -0
- package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +257 -0
- package/custom/skills/test-skills/rules/QA_Writing_Standards.md +49 -0
- package/custom/skills/test-skills/template/template_testcase.md +92 -0
- package/custom/templates/shared/create-spec-workflow.md +441 -0
- package/custom/templates/shared/create-testcase-workflow.md +470 -0
- package/custom/templates/shared/gate-workflow.md +421 -11
- package/docs/common/CHANGELOG.md +52 -0
- package/docs/common/QUICK_START.md +30 -0
- package/docs/common/cli-reference.md +48 -7
- package/package.json +2 -2
- package/scripts/create-score-excel.js +37 -14
- package/scripts/detect.js +10 -0
- package/scripts/guide.js +9 -0
- package/scripts/init.js +48 -1
- package/scripts/prompt.js +36 -0
- package/scripts/review.js +91 -0
- package/scripts/scaffold-playwright.js +106 -0
- package/scripts/task.js +21 -7
- package/scripts/update.js +127 -124
- package/scripts/use.js +36 -12
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
## [QA] 4-Gate TestCase Creation Workflow
|
|
2
|
+
|
|
3
|
+
> **For:** `create-testcase`
|
|
4
|
+
> **Persona:** Quality Assurance (QA)
|
|
5
|
+
> **Goal:** Chuyển đổi yêu cầu thô (SRS / Backlog / Jira / Spec file) thành bộ Test Case hoàn chỉnh sẵn sàng thực thi, tuân theo quy trình QA Workflow chuẩn.
|
|
6
|
+
> **Interaction Rules:** Hỏi ONE câu hỏi tại một thời điểm — đợi QA trả lời trước khi tiếp tục. KHÔNG hỏi nhiều câu cùng lúc.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
### QA Skills
|
|
11
|
+
|
|
12
|
+
Các skill sau đây được cài tự động vào `.claude/skills/test-skills/` khi chạy `ak init` hoặc `ak up`.
|
|
13
|
+
|
|
14
|
+
| Skill | File |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `QA Writing Standards` | `.claude/skills/test-skills/rules/QA_Writing_Standards.md` |
|
|
17
|
+
| `Directory & Naming Convention` | `.claude/skills/test-skills/rules/Directory_and_Naming_Convention.md` |
|
|
18
|
+
| `Template TestCase` | `.claude/skills/test-skills/template/template_testcase.md` |
|
|
19
|
+
| `00.01 Requirement Analysis` | `.claude/skills/test-skills/categories/00-core/00.01.requirement-analysis.md` |
|
|
20
|
+
| `00.02 Risk Analysis` | `.claude/skills/test-skills/categories/00-core/00.02.risk-analysis.md` |
|
|
21
|
+
| `00.03 Test Scenario Builder` | `.claude/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md` |
|
|
22
|
+
| `00.04 TestCase Review` | `.claude/skills/test-skills/categories/00-core/00.04.testcase-review.md` |
|
|
23
|
+
| `01.01 BVA` | `.claude/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md` |
|
|
24
|
+
| `01.02 EP` | `.claude/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md` |
|
|
25
|
+
| `01.03 Decision Table` | `.claude/skills/test-skills/categories/01-test-design/01.03.decision-table.md` |
|
|
26
|
+
| `01.04 State Transition` | `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md` |
|
|
27
|
+
| `01.05 Pairwise` | `.claude/skills/test-skills/categories/01-test-design/01.05.pairwise.md` |
|
|
28
|
+
| `01.06 Error Guessing` | `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md` |
|
|
29
|
+
| `02.01 UI Layout` | `.claude/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md` |
|
|
30
|
+
| `02.02 Form Validation` | `.claude/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md` |
|
|
31
|
+
| `02.03 Navigation` | `.claude/skills/test-skills/categories/02-ui-testing/02.03.navigation.md` |
|
|
32
|
+
| `02.04 Localization` | `.claude/skills/test-skills/categories/02-ui-testing/02.04.localization.md` |
|
|
33
|
+
| `03.01 CRUD Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md` |
|
|
34
|
+
| `03.02 Workflow Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md` |
|
|
35
|
+
| `03.03 Permission Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md` |
|
|
36
|
+
| `03.04 Dependency Validation` | `.claude/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md` |
|
|
37
|
+
| `03.05 Notification Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md` |
|
|
38
|
+
| `03.06 Calculation Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md` |
|
|
39
|
+
| `04.01 Database Testing` | `.claude/skills/test-skills/categories/04-data-testing/04.01.database-testing.md` |
|
|
40
|
+
| `04.04 Duplicate Handling` | `.claude/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md` |
|
|
41
|
+
| `05.04 File Upload/Download` | `.claude/skills/test-skills/categories/05-integration/05.04.file-upload-download.md` |
|
|
42
|
+
| `99.01 Coverage Review` | `.claude/skills/test-skills/categories/99-review/99.01.coverage-review.md` |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### Cấu trúc thư mục đầu ra
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
docs/ak-{project}/testcase/
|
|
50
|
+
├── Result/
|
|
51
|
+
│ ├── [functionId]_01_Requirement_Analysis_Result.md ← Gate 1 tạo
|
|
52
|
+
│ ├── [functionId]_02_Test_Scenarios_Result.md ← Gate 2 tạo
|
|
53
|
+
│ ├── [functionId]_03_Test_Cases_Draft_Result.md ← Gate 3 tạo
|
|
54
|
+
│ └── [functionId]_04_Test_Cases_Final_Result.md ← Gate 4 tạo (đồng thời với TestCase)
|
|
55
|
+
├── QA/
|
|
56
|
+
│ ├── [functionId]_01_Requirement_Analysis_QA.md ← Gate 1 tạo (nếu có issue)
|
|
57
|
+
│ ├── [functionId]_02_Scenario_Building_QA.md ← Gate 2 tạo (nếu có issue)
|
|
58
|
+
│ ├── [functionId]_03_Test_Design_QA.md ← Gate 3 tạo (nếu có issue)
|
|
59
|
+
│ └── [functionId]_04_Test_Review_QA.md ← Gate 4 tạo
|
|
60
|
+
└── TestCase/
|
|
61
|
+
└── [functionId]_TestCase.md ← Gate 4 tạo đồng thời với 04_Final_Result
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Ví dụ: `functionId = AD06`, `project = kcandy` → thư mục gốc là `docs/ak-kcandy/testcase/`
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Quy trình tổng quan 4 Gates
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
(testcase/ = docs/ak-{project}/testcase/ — viết tắt cho ngắn gọn)
|
|
72
|
+
|
|
73
|
+
[Input: SRS / Jira / Backlog / Spec file] → Pre-flight: xác định functionId + thư mục đầu ra
|
|
74
|
+
↓
|
|
75
|
+
Gate 1: Phân tích yêu cầu & Đánh giá rủi ro → testcase/Result/ + testcase/QA/
|
|
76
|
+
↓ APPROVED
|
|
77
|
+
Gate 2: Xây dựng Kịch bản (Scenario Building) → testcase/Result/ + testcase/QA/
|
|
78
|
+
↓ APPROVED
|
|
79
|
+
Gate 3: Thiết kế Test Case chi tiết → testcase/Result/ + testcase/QA/
|
|
80
|
+
↓ APPROVED
|
|
81
|
+
Gate 4: Review & Tối ưu hóa → testcase/Result/ + testcase/QA/
|
|
82
|
+
+ testcase/TestCase/[functionId]_TestCase.md
|
|
83
|
+
↓ APPROVED (Fully / Conditionally)
|
|
84
|
+
Sẵn sàng thực thi kiểm thử
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### GATE 1 — Phân tích yêu cầu & Đánh giá rủi ro (auto-start)
|
|
90
|
+
|
|
91
|
+
**Mục tiêu:** Tiếp nhận đầu vào, hiểu nghiệp vụ, xác định phạm vi kiểm thử, nhận diện rủi ro và phát hiện vấn đề cần làm rõ trước khi xây dựng kịch bản.
|
|
92
|
+
|
|
93
|
+
**Đầu ra (Outputs):**
|
|
94
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
|
|
95
|
+
- `docs/ak-{project}/testcase/QA/[functionId]_01_Requirement_Analysis_QA.md` (nếu có issue)
|
|
96
|
+
|
|
97
|
+
**Bước thực hiện:**
|
|
98
|
+
|
|
99
|
+
#### Bước 0: Pre-flight — Xác định functionId và thư mục đầu ra
|
|
100
|
+
|
|
101
|
+
**Xác định `functionId`:**
|
|
102
|
+
|
|
103
|
+
Kiểm tra theo thứ tự ưu tiên:
|
|
104
|
+
1. Trường `functionId` hoặc `screenId` trong `.aiflow/context/current.json`
|
|
105
|
+
2. Rút gọn từ `ticketId` — bỏ dấu gạch, giữ ký hiệu (ví dụ: `AD-06` → `AD06`)
|
|
106
|
+
3. Nếu không tìm thấy → **hỏi QA ngay**:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Không tìm thấy functionId trong context.
|
|
110
|
+
Vui lòng cung cấp mã định danh cho chức năng này (ví dụ: AD06, TC-LOGIN, PM-003):
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
→ Đợi QA trả lời, ghi nhận giá trị, dùng cho toàn bộ workflow.
|
|
114
|
+
|
|
115
|
+
**Xác định `{project}` và thư mục đầu ra:**
|
|
116
|
+
|
|
117
|
+
1. Lấy `{project}` theo thứ tự ưu tiên:
|
|
118
|
+
- Trường `project` trong `.aiflow/context/current.json`
|
|
119
|
+
- Tên thư mục gốc workspace (chuyển lowercase, thay space bằng `-`)
|
|
120
|
+
|
|
121
|
+
2. Kiểm tra tồn tại thư mục `docs/ak-{project}/testcase/` trong root dự án:
|
|
122
|
+
- **Tìm thấy** → thông báo xác nhận:
|
|
123
|
+
```
|
|
124
|
+
✓ Thư mục đầu ra: docs/ak-{project}/testcase/
|
|
125
|
+
✓ functionId: [functionId]
|
|
126
|
+
→ Bắt đầu Gate 1...
|
|
127
|
+
```
|
|
128
|
+
- **Không tìm thấy** → **hỏi QA**:
|
|
129
|
+
```
|
|
130
|
+
Không tìm thấy thư mục docs/ak-{project}/testcase/.
|
|
131
|
+
Tên project là gì? (ví dụ: kcandy, crm-app)
|
|
132
|
+
```
|
|
133
|
+
→ Nhận tên project từ QA → chuyển lowercase → tạo toàn bộ cây thư mục:
|
|
134
|
+
```
|
|
135
|
+
docs/ak-{project}/testcase/Result/
|
|
136
|
+
docs/ak-{project}/testcase/QA/
|
|
137
|
+
docs/ak-{project}/testcase/TestCase/
|
|
138
|
+
```
|
|
139
|
+
→ Thông báo:
|
|
140
|
+
```
|
|
141
|
+
✓ Đã tạo thư mục: docs/ak-{project}/testcase/
|
|
142
|
+
✓ functionId: [functionId]
|
|
143
|
+
→ Bắt đầu Gate 1...
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### Bước 1: Đọc và tổng hợp đầu vào
|
|
147
|
+
- Đọc `.aiflow/context/current.json` — tiêu đề, mô tả, acceptance criteria, liên kết tài liệu
|
|
148
|
+
- Nếu description có URL → chạy `ak fetch-links <url>` để tải nội dung
|
|
149
|
+
- Nếu có `supplementaryContext[]` → đọc từng item (SRS file, Figma link, API spec, spec MD file)
|
|
150
|
+
- Nếu có file yêu cầu thô được chỉ định → đọc file đó
|
|
151
|
+
|
|
152
|
+
#### Bước 2: Phân tích yêu cầu và đánh giá rủi ro
|
|
153
|
+
- **READ skill:** `.claude/skills/test-skills/rules/QA_Writing_Standards.md` — đọc trước để nắm quy ước chung
|
|
154
|
+
- **READ skill:** `.claude/skills/test-skills/categories/00-core/00.01.requirement-analysis.md`
|
|
155
|
+
- **READ skill:** `.claude/skills/test-skills/categories/00-core/00.02.risk-analysis.md`
|
|
156
|
+
- Phân tích đầy đủ **16 mục** theo skill 00.01:
|
|
157
|
+
1. Module/Màn hình/Feature cụ thể
|
|
158
|
+
2. Ranh giới scope (In-Scope / Out-of-Scope)
|
|
159
|
+
3. Feature Overview
|
|
160
|
+
4. Main Flow (Happy Path)
|
|
161
|
+
5. Alternative Flows / Ngoại lệ
|
|
162
|
+
6. User Roles / Permissions
|
|
163
|
+
7. Business Rules
|
|
164
|
+
8. Validations (Required, Maxlength, Unique, Format, v.v.)
|
|
165
|
+
9. State / Status
|
|
166
|
+
10. API / External System
|
|
167
|
+
11. Accessibility
|
|
168
|
+
12. Compatibility (Browser/Device)
|
|
169
|
+
13. Test Data dependencies
|
|
170
|
+
14. Third-party integrations
|
|
171
|
+
15. Risk / điểm dễ lỗi
|
|
172
|
+
16. Q&A / Out of Scope
|
|
173
|
+
- Đánh giá rủi ro theo skill 00.02: kỹ thuật, dữ liệu, nghiệp vụ, hệ thống
|
|
174
|
+
- **Issue Handling:**
|
|
175
|
+
- Critical/Major → DỪNG, tạo QA artifact, chờ phản hồi (không sinh Result artifact)
|
|
176
|
+
- Minor → Ghi TBD marker (`[TBD — <issue-id>: mô tả]`), tiếp tục, carry-forward sang gate sau
|
|
177
|
+
|
|
178
|
+
#### Bước 3: Soạn thảo kết quả phân tích yêu cầu
|
|
179
|
+
- Artifact đầu ra phải có: Feature Summary, Actor & Persona, Business Rules (16 mục), Risk Matrix, Test Scope
|
|
180
|
+
- Lưu: `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
|
|
181
|
+
|
|
182
|
+
#### Bước 4: Soạn thảo QA Artifact (nếu có issue)
|
|
183
|
+
- Cấu trúc: Metadata, Detected Issues (Severity), Clarification Questions, Assumptions, Resolution Tracking
|
|
184
|
+
- Lưu: `docs/ak-{project}/testcase/QA/[functionId]_01_Requirement_Analysis_QA.md`
|
|
185
|
+
|
|
186
|
+
#### Bước 5: Gate Review & Pause
|
|
187
|
+
- **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-1-[functionId].md`
|
|
188
|
+
- Hiển thị gate pause message — đợi **APPROVED**
|
|
189
|
+
|
|
190
|
+
**Khi APPROVED:**
|
|
191
|
+
→ **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 1 --ticket [functionId]`
|
|
192
|
+
→ Nếu passed: `ak gate 1 approved --ticket [functionId]` → chuyển Gate 2
|
|
193
|
+
→ Nếu blocked: làm theo gate-review skill response protocol
|
|
194
|
+
|
|
195
|
+
**Definition of Done:**
|
|
196
|
+
- [ ] `functionId` và `{project}` đã được xác định, thư mục đầu ra đã sẵn sàng
|
|
197
|
+
- [ ] File `01_Requirement_Analysis_Result.md` có đủ 16 mục + Risk Matrix + Test Scope
|
|
198
|
+
- [ ] File `01_Requirement_Analysis_QA.md` đã tạo nếu có issue (Critical/Major đã giải quyết)
|
|
199
|
+
- [ ] Không có giả định nào được tự ý chốt thành fact mà không đưa vào QA
|
|
200
|
+
|
|
201
|
+
> **Telemetry:** Run `ak gate 1 start --ticket [functionId]` khi bắt đầu gate này.
|
|
202
|
+
> Run `ak gate 1 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### GATE 2 — Xây dựng Kịch bản kiểm thử (Scenario Building)
|
|
207
|
+
|
|
208
|
+
**Mục tiêu:** Phác thảo các kịch bản kiểm thử mức cao (High-level Scenarios) bao phủ toàn bộ luồng nghiệp vụ, trường hợp ngoại lệ và các rủi ro đã nhận diện ở Gate 1.
|
|
209
|
+
|
|
210
|
+
**Điều kiện vào Gate 2:** Gate 1 đã **APPROVED** và `01_Requirement_Analysis_Result.md` đã hoàn chỉnh.
|
|
211
|
+
|
|
212
|
+
**Đầu vào (Inputs):**
|
|
213
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
|
|
214
|
+
|
|
215
|
+
**Đầu ra (Outputs):**
|
|
216
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
|
|
217
|
+
- `docs/ak-{project}/testcase/QA/[functionId]_02_Scenario_Building_QA.md` (nếu có issue)
|
|
218
|
+
|
|
219
|
+
**Bước thực hiện:**
|
|
220
|
+
|
|
221
|
+
#### Bước 1: Đọc artifact đầu vào
|
|
222
|
+
- Đọc `[functionId]_01_Requirement_Analysis_Result.md` — nắm toàn bộ 16 mục, Risk Matrix, Business Rules
|
|
223
|
+
|
|
224
|
+
#### Bước 2: Áp dụng skills xây dựng kịch bản (luôn áp dụng)
|
|
225
|
+
- **READ skill:** `.claude/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md`
|
|
226
|
+
- **READ skill:** `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md`
|
|
227
|
+
- **READ skill:** `.claude/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md`
|
|
228
|
+
- Kiểm tra có domain skill applicable: `.claude/skills/test-skills/categories/08-domain-skills/`
|
|
229
|
+
- Xây dựng kịch bản đa chiều:
|
|
230
|
+
- Happy Path (Main Flow)
|
|
231
|
+
- Negative scenarios
|
|
232
|
+
- Boundary conditions
|
|
233
|
+
- Exception scenarios (double-click, timeout, mất mạng)
|
|
234
|
+
- Permission / Role-based scenarios
|
|
235
|
+
- E2E (End-to-End) business flow
|
|
236
|
+
|
|
237
|
+
#### Bước 3: Áp dụng skills có điều kiện
|
|
238
|
+
- **[Nếu có status/lifecycle field]** READ: `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md` — thiết kế kịch bản cho mọi transition hợp lệ và không hợp lệ
|
|
239
|
+
- **[Nếu phụ thuộc feature/service khác]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md` — kịch bản khi dependency lỗi
|
|
240
|
+
- **[Nếu có notification trigger]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md`
|
|
241
|
+
|
|
242
|
+
#### Bước 4: Soạn thảo kết quả Scenario Building
|
|
243
|
+
- Bảng Scenarios với format:
|
|
244
|
+
- Scenario ID: `TS_<SCREEN_NUMBER>_<SEQ>` (vd: `TS_06_001` cho AD06)
|
|
245
|
+
- Cột: Scenario ID, Feature/Module, Check List, Scenario Type, Target Req ID, Priority, Test Data
|
|
246
|
+
- Business Flow Mapping (E2E diagram dạng text)
|
|
247
|
+
- Draft RTM (Scenario ID → Requirement ID từ `01_Requirement_Analysis_Result.md`)
|
|
248
|
+
- Lưu: `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
|
|
249
|
+
|
|
250
|
+
#### Bước 5: Soạn thảo QA Artifact (nếu có issue)
|
|
251
|
+
- Lưu: `docs/ak-{project}/testcase/QA/[functionId]_02_Scenario_Building_QA.md`
|
|
252
|
+
- Minor issues → TBD marker + carry-forward, tiếp tục workflow
|
|
253
|
+
|
|
254
|
+
#### Bước 6: Gate Review & Pause
|
|
255
|
+
- **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-2-[functionId].md`
|
|
256
|
+
- Hiển thị gate pause message — đợi **APPROVED**
|
|
257
|
+
|
|
258
|
+
**Khi APPROVED:**
|
|
259
|
+
→ **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 2 --ticket [functionId]`
|
|
260
|
+
→ Nếu passed: `ak gate 2 approved --ticket [functionId]` → chuyển Gate 3
|
|
261
|
+
→ Nếu blocked: làm theo gate-review skill response protocol
|
|
262
|
+
|
|
263
|
+
**Definition of Done:**
|
|
264
|
+
- [ ] 100% luồng Happy Path từ 16 mục đã bao phủ
|
|
265
|
+
- [ ] Có đủ Negative / Boundary / Exception / Permission scenarios
|
|
266
|
+
- [ ] Scenario ID format `TS_<SCREEN_NUMBER>_<SEQ>` đúng quy ước
|
|
267
|
+
- [ ] Draft RTM mapping Scenario → Requirement ID đầy đủ
|
|
268
|
+
- [ ] Critical/Major issues trong QA file đã giải quyết
|
|
269
|
+
|
|
270
|
+
> **Telemetry:** Run `ak gate 2 start --ticket [functionId]` khi bắt đầu gate này.
|
|
271
|
+
> Run `ak gate 2 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
### GATE 3 — Thiết kế Test Case chi tiết
|
|
276
|
+
|
|
277
|
+
**Mục tiêu:** Cụ thể hóa các kịch bản thành Test Case chi tiết với đầy đủ bước thực hiện, dữ liệu test và kết quả mong đợi cụ thể, đo được — bất kỳ ai cũng có thể thực thi được.
|
|
278
|
+
|
|
279
|
+
**Điều kiện vào Gate 3:** Gate 2 đã **APPROVED** và `02_Test_Scenarios_Result.md` đã hoàn chỉnh.
|
|
280
|
+
|
|
281
|
+
**Đầu vào (Inputs):**
|
|
282
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
|
|
283
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
|
|
284
|
+
|
|
285
|
+
**Đầu ra (Outputs):**
|
|
286
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
|
|
287
|
+
- `docs/ak-{project}/testcase/QA/[functionId]_03_Test_Design_QA.md` (nếu có issue)
|
|
288
|
+
|
|
289
|
+
**Bước thực hiện:**
|
|
290
|
+
|
|
291
|
+
#### Bước 1: Đọc template và quy ước bắt buộc
|
|
292
|
+
- **READ template:** `.claude/skills/test-skills/template/template_testcase.md` — **BẮT BUỘC** tuân thủ 100%
|
|
293
|
+
- **READ skill:** `.claude/skills/test-skills/rules/QA_Writing_Standards.md`
|
|
294
|
+
|
|
295
|
+
#### Bước 2: Áp dụng kỹ thuật thiết kế TC cơ bản (luôn áp dụng)
|
|
296
|
+
- **READ:** `.claude/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md` — BVA cho tất cả trường số/text có giới hạn
|
|
297
|
+
- **READ:** `.claude/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md` — EP phân nhóm giá trị tương đương
|
|
298
|
+
- **READ:** `.claude/skills/test-skills/categories/01-test-design/01.03.decision-table.md` — Decision Table cho logic có nhiều điều kiện
|
|
299
|
+
- **READ:** `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md` — Error Guessing → toàn bộ section 3.5 Exceptions
|
|
300
|
+
|
|
301
|
+
#### Bước 3: Thiết kế TC UI (luôn áp dụng)
|
|
302
|
+
- **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md` — đối chiếu layout, spacing, font với Figma
|
|
303
|
+
- **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md` — **MANDATORY** — ma trận validation TẤT CẢ trường input (cả Required và Optional)
|
|
304
|
+
- **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.03.navigation.md` — TC truy cập URL, nút Back/Forward, Deep Link
|
|
305
|
+
- **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.04.localization.md` — TC ký tự Kanji, Halfwidth/Fullwidth, đa ngôn ngữ
|
|
306
|
+
|
|
307
|
+
#### Bước 4: Thiết kế TC Business và Data (luôn áp dụng)
|
|
308
|
+
- **READ:** `.claude/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md` — CRUD flows
|
|
309
|
+
- **READ:** `.claude/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md` — phân quyền theo Actor
|
|
310
|
+
- **READ:** `.claude/skills/test-skills/categories/04-data-testing/04.01.database-testing.md` — xác minh dữ liệu lưu đúng vào DB
|
|
311
|
+
- **READ:** `.claude/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md` — ràng buộc Unique
|
|
312
|
+
|
|
313
|
+
#### Bước 5: Áp dụng skills có điều kiện
|
|
314
|
+
- **[Nếu có file upload field]** READ: `.claude/skills/test-skills/categories/05-integration/05.04.file-upload-download.md` — định dạng, dung lượng, MIME spoofing, drag & drop
|
|
315
|
+
- **[Nếu có status/lifecycle field]** READ: `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md`
|
|
316
|
+
- **[Nếu nhiều tham số đầu vào cần tổ hợp]** READ: `.claude/skills/test-skills/categories/01-test-design/01.05.pairwise.md`
|
|
317
|
+
- **[Nếu có notification trigger]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md`
|
|
318
|
+
- **[Nếu có calculated/computed fields]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md`
|
|
319
|
+
|
|
320
|
+
#### Bước 6: Soạn thảo Draft Test Cases
|
|
321
|
+
- Viết TC theo đúng template chuẩn — **không tự định nghĩa cấu trúc mới**
|
|
322
|
+
- TC ID format: `TC-<FEATURE>-<SEQ>` (vd: `TC-TAG-001`, `TC-LOGIN-005`)
|
|
323
|
+
- Naming convention section 3.3 (Validation): TC Name **bắt buộc** bắt đầu bằng `"Kiểm tra trường [Tên Trường]..."`
|
|
324
|
+
- Cấu trúc output theo 5 sections của template:
|
|
325
|
+
- **Section 3.1**: Access & Authorization
|
|
326
|
+
- **Section 3.2**: UI/UX (layout, giao diện)
|
|
327
|
+
- **Section 3.3**: Input Validation (sub-table riêng cho từng field)
|
|
328
|
+
- **Section 3.4**: Business Rules (CRUD, logic nghiệp vụ, DB verify)
|
|
329
|
+
- **Section 3.5**: Exceptions & Systems (Error Guessing cases)
|
|
330
|
+
- Bổ sung: Coverage Matrix (Scenario ID → TC ID), Test Data tổng hợp
|
|
331
|
+
- Ghi TBD marker khi thiếu thông tin: `[TBD — <issue-id>: mô tả ngắn]`
|
|
332
|
+
- Lưu: `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
|
|
333
|
+
|
|
334
|
+
#### Bước 7: Soạn thảo QA Artifact (nếu có issue)
|
|
335
|
+
- Lưu: `docs/ak-{project}/testcase/QA/[functionId]_03_Test_Design_QA.md`
|
|
336
|
+
- Cấu trúc: Metadata, Detected Issues, Clarification Questions, Assumptions, Resolution Tracking
|
|
337
|
+
|
|
338
|
+
#### Bước 8: Gate Review & Pause
|
|
339
|
+
- **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-3-[functionId].md`
|
|
340
|
+
- Hiển thị gate pause message — đợi **APPROVED**
|
|
341
|
+
|
|
342
|
+
**Khi APPROVED:**
|
|
343
|
+
→ **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 3 --ticket [functionId]`
|
|
344
|
+
→ Nếu passed: `ak gate 3 approved --ticket [functionId]` → chuyển Gate 4
|
|
345
|
+
→ Nếu blocked: làm theo gate-review skill response protocol
|
|
346
|
+
|
|
347
|
+
**Definition of Done:**
|
|
348
|
+
- [ ] 100% tuân thủ `template_testcase.md` — không tự định nghĩa cấu trúc mới
|
|
349
|
+
- [ ] Mọi trường input (cả Required và Optional) đã qua ma trận skill 02.02
|
|
350
|
+
- [ ] TC Name section 3.3 bắt đầu bằng `"Kiểm tra trường [Tên Trường]..."`
|
|
351
|
+
- [ ] Coverage Matrix mapping Scenario ID → TC ID đầy đủ
|
|
352
|
+
- [ ] TBD marker ghi đúng format khi thiếu thông tin
|
|
353
|
+
- [ ] Critical/Major issues trong QA file đã giải quyết
|
|
354
|
+
|
|
355
|
+
> **Telemetry:** Run `ak gate 3 start --ticket [functionId]` khi bắt đầu gate này.
|
|
356
|
+
> Run `ak gate 3 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
### GATE 4 — Review & Tối ưu hóa
|
|
361
|
+
|
|
362
|
+
**Mục tiêu:** Chốt chặn chất lượng toàn bộ bộ Test Case — bao phủ 100% yêu cầu, không trùng lặp, loại bỏ out-of-scope, và sinh artifact giao nộp hoàn chỉnh.
|
|
363
|
+
|
|
364
|
+
**Điều kiện vào Gate 4:** Gate 3 đã **APPROVED** và `03_Test_Cases_Draft_Result.md` đã hoàn chỉnh.
|
|
365
|
+
|
|
366
|
+
**Đầu vào (Inputs):**
|
|
367
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
|
|
368
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
|
|
369
|
+
|
|
370
|
+
**Đầu ra (Outputs) — sinh ĐỒNG THỜI:**
|
|
371
|
+
- `docs/ak-{project}/testcase/Result/[functionId]_04_Test_Cases_Final_Result.md`
|
|
372
|
+
- `docs/ak-{project}/testcase/QA/[functionId]_04_Test_Review_QA.md`
|
|
373
|
+
- `docs/ak-{project}/testcase/TestCase/[functionId]_TestCase.md`
|
|
374
|
+
|
|
375
|
+
> **Quy tắc Gate 4:** Ba artifact trên phải được sinh ĐỒNG THỜI. Không tạo một file mà thiếu file kia.
|
|
376
|
+
|
|
377
|
+
**Bước thực hiện:**
|
|
378
|
+
|
|
379
|
+
#### Bước 1: Review nội dung và đánh giá bao phủ
|
|
380
|
+
- **READ skill:** `.claude/skills/test-skills/categories/00-core/00.04.testcase-review.md`
|
|
381
|
+
- **READ skill:** `.claude/skills/test-skills/categories/99-review/99.01.coverage-review.md`
|
|
382
|
+
- Checklist review bắt buộc:
|
|
383
|
+
- [ ] 100% Requirement (16 mục) có TC tương ứng?
|
|
384
|
+
- [ ] Không có TC test item Out-of-Scope (mục 2 trong 16 mục)?
|
|
385
|
+
- [ ] Steps rõ ràng, có thể reproduce (không mơ hồ)?
|
|
386
|
+
- [ ] Expected Result cụ thể và đo được (tránh "hoạt động đúng")?
|
|
387
|
+
- [ ] Không có TC trùng lặp logic?
|
|
388
|
+
- [ ] TBD markers ghi đúng `[TBD — <issue-ref>: mô tả]`?
|
|
389
|
+
- [ ] Minor issues carry-forward đã ghi nhận vào QA file?
|
|
390
|
+
|
|
391
|
+
#### Bước 2: Tối ưu hóa bộ Test Case
|
|
392
|
+
- Loại bỏ TC trùng lặp, gộp luồng nếu hợp lý
|
|
393
|
+
- Phát hiện TC test item Out-of-Scope → sửa và ghi vào Findings
|
|
394
|
+
- Kiểm tra traceability xuyên suốt: Req ID → Scenario ID → Draft TC ID → Final TC ID
|
|
395
|
+
|
|
396
|
+
#### Bước 3: Soạn thảo Final Result (gồm review metadata)
|
|
397
|
+
- Artifact `[functionId]_04_Test_Cases_Final_Result.md` gồm:
|
|
398
|
+
- Review Summary (số TC tổng, pass/fail trong review)
|
|
399
|
+
- Review Findings (danh sách issue phát hiện)
|
|
400
|
+
- Coverage Validation (đối chiếu Req → TC)
|
|
401
|
+
- Final Test Cases (Approved, đã loại trùng và out-of-scope)
|
|
402
|
+
- RTM Final (Req ID → Scenario ID → TC ID)
|
|
403
|
+
- Sign-off Status (xem bảng bên dưới)
|
|
404
|
+
- Lưu: `docs/ak-{project}/testcase/Result/[functionId]_04_Test_Cases_Final_Result.md`
|
|
405
|
+
|
|
406
|
+
#### Bước 4: Soạn thảo QA Artifact
|
|
407
|
+
- Artifact `[functionId]_04_Test_Review_QA.md` gồm: Metadata, Findings, Issues, Sign-off Status
|
|
408
|
+
- Lưu: `docs/ak-{project}/testcase/QA/[functionId]_04_Test_Review_QA.md`
|
|
409
|
+
|
|
410
|
+
#### Bước 5: Sinh TestCase Artifact — BẮT BUỘC đồng thời với Bước 3 & 4
|
|
411
|
+
- Artifact `[functionId]_TestCase.md` theo `template_testcase.md` — **chỉ gồm:**
|
|
412
|
+
- **Mục 1**: Thông tin chung (điền functionId, ngày tạo)
|
|
413
|
+
- **Mục 2**: Kết quả kiểm thử tổng hợp (reset về 0 chờ execution)
|
|
414
|
+
- **Mục 3**: Danh sách Test Cases Chi Tiết (toàn bộ 5 sections đã Approved)
|
|
415
|
+
- **KHÔNG chứa:** Review Summary, Findings, RTM, Coverage Matrix, Sign-off (thuộc `04_Final_Result.md`)
|
|
416
|
+
- Lưu: `docs/ak-{project}/testcase/TestCase/[functionId]_TestCase.md`
|
|
417
|
+
|
|
418
|
+
#### Bước 6: Xác nhận Sign-off Status
|
|
419
|
+
|
|
420
|
+
| Status | Điều kiện |
|
|
421
|
+
|---|---|
|
|
422
|
+
| ✅ **Fully Approved** | 0 Critical / 0 Major / 0 Minor còn mở, 0 TBD |
|
|
423
|
+
| ✅ **Conditionally Approved** | 0 Critical / 0 Major, còn Minor/TBD — được phép thực thi trừ TC có TBD |
|
|
424
|
+
| ⚠️ **Need Update** | Còn Major issue chưa giải quyết |
|
|
425
|
+
| ❌ **Rejected** | Còn Critical issue, coverage < 100%, hoặc vi phạm template |
|
|
426
|
+
|
|
427
|
+
#### Bước 7: Gate Review & Pause
|
|
428
|
+
- **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-4-[functionId].md`
|
|
429
|
+
- Hiển thị gate pause message — đợi **APPROVED**
|
|
430
|
+
|
|
431
|
+
**Khi APPROVED:**
|
|
432
|
+
→ **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 4 --ticket [functionId]`
|
|
433
|
+
→ Nếu passed: `ak gate 4 approved --ticket [functionId]` → Bộ Test Case hoàn thành, sẵn sàng thực thi
|
|
434
|
+
→ Nếu blocked: làm theo gate-review skill response protocol
|
|
435
|
+
|
|
436
|
+
**Definition of Done:**
|
|
437
|
+
- [ ] `[functionId]_04_Test_Cases_Final_Result.md` có đủ Review Summary, Findings, Coverage Validation, RTM Final, Sign-off
|
|
438
|
+
- [ ] `[functionId]_TestCase.md` chỉ chứa Section 1+2+3 theo template chuẩn, không có review metadata
|
|
439
|
+
- [ ] Ba file sinh ĐỒNG THỜI — không tạo một thiếu file kia
|
|
440
|
+
- [ ] Traceability xuyên suốt: Req ID → Scenario ID → Draft TC ID → Final TC ID
|
|
441
|
+
- [ ] Sign-off status đã xác định (Fully / Conditionally / Need Update / Rejected)
|
|
442
|
+
|
|
443
|
+
> **Telemetry:** Run `ak gate 4 start --ticket [functionId]` khi bắt đầu gate này.
|
|
444
|
+
> Run `ak gate 4 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
### Bản đồ Skills theo Gate
|
|
449
|
+
|
|
450
|
+
| Gate | Skills đọc | Output |
|
|
451
|
+
|---|---|---|
|
|
452
|
+
| Gate 1 | `QA_Writing_Standards`, `00.01 Requirement Analysis`, `00.02 Risk Analysis` | `01_Requirement_Analysis_Result.md`, `01_QA.md` |
|
|
453
|
+
| Gate 2 | `00.03 Scenario Builder`, `01.06 Error Guessing`, `03.02 Workflow Testing`, Domain skills | `02_Test_Scenarios_Result.md`, `02_QA.md` |
|
|
454
|
+
| Gate 3 | `template_testcase`, `01.01 BVA`, `01.02 EP`, `01.03 Decision Table`, `01.06 Error Guessing`, `02.01`–`02.04`, `03.01`, `03.03`, `04.01`, `04.04` | `03_Test_Cases_Draft_Result.md`, `03_QA.md` |
|
|
455
|
+
| Gate 4 | `00.04 TC Review`, `99.01 Coverage Review` | `04_Final_Result.md`, `04_QA.md`, `[functionId]_TestCase.md` |
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
### Quy tắc bắt buộc
|
|
460
|
+
|
|
461
|
+
- ❌ **KHÔNG** bỏ qua thứ tự Gate — luôn đi từ Gate 1 → 2 → 3 → 4
|
|
462
|
+
- ❌ **KHÔNG** tự suy diễn nghiệp vụ — ghi rõ Assumption và TBD khi thiếu thông tin
|
|
463
|
+
- ❌ **KHÔNG** sinh `04_Final_Result.md` mà thiếu `[functionId]_TestCase.md` (hoặc ngược lại)
|
|
464
|
+
- ❌ **KHÔNG** tiến gate tiếp theo khi còn issue Critical hoặc Major chưa giải quyết
|
|
465
|
+
- ✅ **BẮT BUỘC** chạy Bước 0 ở Gate 1 — xác nhận `functionId` và thư mục đầu ra trước khi làm bất cứ điều gì
|
|
466
|
+
- ✅ **BẮT BUỘC** đọc skill từ `.claude/skills/test-skills/` — không suy luận từ bộ nhớ
|
|
467
|
+
- ✅ **BẮT BUỘC** invoke `gate-review` cuối mỗi gate và chờ APPROVED
|
|
468
|
+
- ✅ **BẮT BUỘC** tuân thủ 100% `template_testcase.md` ở Gate 3 và Gate 4
|
|
469
|
+
- ✅ **BẮT BUỘC** ba artifact Gate 4 sinh ĐỒNG THỜI
|
|
470
|
+
- ✅ **BẮT BUỘC** Issue Critical/Major phải giải quyết xong trước khi sinh Result artifact
|