@relipa/ai-flow-kit 0.1.4-beta.0 → 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.
- package/README.md +185 -136
- package/custom/skills/execute-flow/SKILL.md +5 -34
- package/custom/skills/gate-review/SKILL.md +29 -105
- package/custom/skills/generate-testcase/SKILL.md +0 -8
- package/custom/skills/generate-testcase/templates/testcase.md +50 -59
- package/custom/skills/test-analysis/SKILL.md +0 -4
- package/custom/skills/test-skills/template/template_testcase.md +50 -59
- package/custom/templates/shared/create-spec-workflow.md +0 -6
- package/docs/common/CHANGELOG.md +47 -0
- package/package.json +1 -1
- package/scripts/review.js +83 -46
|
@@ -159,7 +159,6 @@ Nhận về: danh sách kết quả per TC.
|
|
|
159
159
|
|
|
160
160
|
### Hiển thị kết quả
|
|
161
161
|
|
|
162
|
-
```
|
|
163
162
|
⏸️ GATE 2: SCRIPT SYNC COMPLETE
|
|
164
163
|
|
|
165
164
|
Gen mới: {N} | Updated: {N} | Skipped: {N}
|
|
@@ -170,7 +169,6 @@ Blocked: {N} TCs — xem lý do bên trên
|
|
|
170
169
|
→ Type APPROVED to run tests
|
|
171
170
|
→ Type SKIP: {TC_ID} để đánh dấu Pending và tiếp tục
|
|
172
171
|
→ Or provide feedback to fix scripts
|
|
173
|
-
```
|
|
174
172
|
|
|
175
173
|
Dừng. Chờ APPROVED.
|
|
176
174
|
|
|
@@ -307,26 +305,7 @@ Với mỗi TC failed, tạo `ak-test/{repo}/results/{screenId}/run-{N}/bugs/BUG
|
|
|
307
305
|
|
|
308
306
|
BUG số: đếm file trong `bugs/` folder, +1. Format: `001`, `002`,...
|
|
309
307
|
|
|
310
|
-
### Bước 6:
|
|
311
|
-
|
|
312
|
-
Ghi kết quả vào các cột R1/R2 trong TC file:
|
|
313
|
-
|
|
314
|
-
- R1 = lần chạy đầu tiên (run-1). Nếu R1 đã có giá trị → ghi vào R2.
|
|
315
|
-
- R1 Tester = `AI-R1`, R2 Tester = `AI-R2`
|
|
316
|
-
|
|
317
|
-
```markdown
|
|
318
|
-
| AD10_001 | ... | ✅ Pass | {YYYY-MM-DD} | AI-R1 | | | |
|
|
319
|
-
| AD10_005 | ... | ❌ Fail | {YYYY-MM-DD} | AI-R1 | | | |
|
|
320
|
-
| AD10_023 | ... | ⏭️ Untest | - | - | | | |
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
Cập nhật Section 2 — Test Execution Summary table:
|
|
324
|
-
|
|
325
|
-
```markdown
|
|
326
|
-
| Round {N} | {passed} | {failed} | {untest} | {pending} | {total} | {passed/total*100}% |
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
### Bước 7: Hiển thị Gate 3
|
|
308
|
+
### Bước 6: Hiển thị Gate 3
|
|
330
309
|
|
|
331
310
|
```
|
|
332
311
|
⏸️ GATE 3: EXECUTION COMPLETE
|
|
@@ -361,8 +340,7 @@ Khi tester gõ `RETEST: AD10_005, AD10_008`:
|
|
|
361
340
|
```
|
|
362
341
|
3. Xác định run number mới (run-{N+1})
|
|
363
342
|
4. Tổ chức evidence vào `run-{N+1}/` (không xóa run cũ)
|
|
364
|
-
5. Cập nhật
|
|
365
|
-
6. Cập nhật bug status:
|
|
343
|
+
5. Cập nhật bug status:
|
|
366
344
|
- TC pass sau retest → ghi `RESOLVED` vào bug file: `**Status:** ✅ Resolved`
|
|
367
345
|
- TC vẫn fail → ghi `**Retest {N}:** Still OPEN` vào bug file
|
|
368
346
|
|
|
@@ -382,11 +360,7 @@ Chỉ chạy sau Gate 3 APPROVED.
|
|
|
382
360
|
|
|
383
361
|
Đọc `bugs/BUG-*.md` trong run folder: phân loại severity + status (Open/Resolved).
|
|
384
362
|
|
|
385
|
-
### Bước 2:
|
|
386
|
-
|
|
387
|
-
Cập nhật bảng Test Execution Summary với số liệu từ R1 và R2.
|
|
388
|
-
|
|
389
|
-
### Bước 3: Sinh testreport.md
|
|
363
|
+
### Bước 2: Sinh testreport.md
|
|
390
364
|
|
|
391
365
|
Tạo `ak-test/{repo}/results/{screenId}/run-{N}/testreport.md` theo template chuẩn:
|
|
392
366
|
|
|
@@ -422,7 +396,7 @@ Tạo `ak-test/{repo}/results/{screenId}/run-{N}/testreport.md` theo template ch
|
|
|
422
396
|
- Còn Critical hoặc High Open → No-go
|
|
423
397
|
- Chỉ còn Medium/Low Open → Conditional go
|
|
424
398
|
|
|
425
|
-
### Bước
|
|
399
|
+
### Bước 3: Bug logging flow
|
|
426
400
|
|
|
427
401
|
Hỏi từng bug theo thứ tự severity (Critical → High → Medium → Low):
|
|
428
402
|
|
|
@@ -443,9 +417,8 @@ Nếu tester gõ `Y`:
|
|
|
443
417
|
|
|
444
418
|
Nếu `n` hoặc `SKIP-BUG`: ghi `Not logged` trong testreport.md Bug Summary.
|
|
445
419
|
|
|
446
|
-
### Bước
|
|
420
|
+
### Bước 4: Hiển thị Gate 4
|
|
447
421
|
|
|
448
|
-
```
|
|
449
422
|
⏸️ GATE 4: REPORT READY
|
|
450
423
|
|
|
451
424
|
Overall: {Pass / Fail / Conditional}
|
|
@@ -456,7 +429,6 @@ Recommendation: {Go / No-go / Conditional go}
|
|
|
456
429
|
→ Review: [ak-test/{repo}/results/{screenId}/run-{N}/testreport.md](ak-test/{repo}/results/{screenId}/run-{N}/testreport.md)
|
|
457
430
|
→ Type APPROVED to sign off
|
|
458
431
|
→ Type NO-GO: {reason} to reject release
|
|
459
|
-
```
|
|
460
432
|
|
|
461
433
|
Dừng. Chờ APPROVED hoặc NO-GO.
|
|
462
434
|
|
|
@@ -493,7 +465,6 @@ SKIP-BUG: BUG-{NNN} # bỏ qua không log bug này
|
|
|
493
465
|
|
|
494
466
|
- ✅ Dừng ở mỗi gate, chờ APPROVED trước khi proceed
|
|
495
467
|
- ✅ `run-{N}` không bao giờ bị xóa hay overwrite — luôn tạo folder mới
|
|
496
|
-
- ✅ R1/R2 trong TC file gốc được cập nhật sau mỗi lần chạy
|
|
497
468
|
- ✅ Hỏi từng bug một — không auto-log toàn bộ
|
|
498
469
|
- ❌ Không lấy expected result từ PR/code — chỉ từ TC file
|
|
499
470
|
- ❌ Không skip gate kể cả khi "chỉ có 1 TC"
|
|
@@ -44,93 +44,45 @@ Tester Gate 2 produces multiple review files — one per sub-phase. Use a letter
|
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
|
-
## Mode 1: GENERATE —
|
|
47
|
+
## Mode 1: GENERATE — Prepare Inline Review & Output Document
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
When generating the output for a gate (e.g. `requirement.md` or `plan.md`), follow these steps:
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
### Step 1: Ensure review directories and comments database exist
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- Maximum 12 items per gate. If more than 12 sections, group related ones.
|
|
57
|
-
- The summary is the actual content, not a description of the category. ✅ "Scope: Auth module + User management (payment OUT of scope)" not ❌ "Scope: the scope section"
|
|
53
|
+
1. Always create the directory `.aiflow/review/` if it doesn't exist.
|
|
54
|
+
2. Check if `.aiflow/review/comments-[ticket-id].json` exists (where `[ticket-id]` comes from `.aiflow/context/current.json` → `ticketId` field).
|
|
55
|
+
3. If the JSON file does not exist, initialize it by writing an empty array `[]` (or `{ "comments": [] }`) to it. This ensures that the CLI verification commands do not fail due to a missing file when there are no comments.
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Dev Gate 1 (requirement.md has 4 sections → 4 items):
|
|
62
|
-
```
|
|
63
|
-
- [ ] **Requirements Summary**: Add batch export endpoint returning signed S3 URL, triggered by POST /exports
|
|
64
|
-
- [ ] **Proposed Solution**: New ExportService + S3Adapter; reuse existing AuthMiddleware for permissions
|
|
65
|
-
- [ ] **Impact Analysis**: Medium — touches ExportController, UserService (permission check added)
|
|
66
|
-
- [ ] **Effort Estimate**: M (3–4 days)
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Tester Gate 1 (test-analysis.md):
|
|
70
|
-
```
|
|
71
|
-
- [ ] **Scope**: Auth module + User management only; payment and notifications OUT of scope
|
|
72
|
-
- [ ] **Functional Analysis**: Login, logout, session management, password reset, role-based access (3 roles)
|
|
73
|
-
- [ ] **Risk Areas**: High — session token handling; Medium — email format validation
|
|
74
|
-
- [ ] **Test Approach**: 60% automation (Playwright), 40% manual; ~18 TCs estimated
|
|
75
|
-
- [ ] **Effort Estimate**: M (2–3 days)
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Step 2: Write the review file
|
|
79
|
-
|
|
80
|
-
**File path:** `.aiflow/review/gate-[N]-[ticket-id].md`
|
|
81
|
-
|
|
82
|
-
For Tester Gate 2 sub-phases, use the lettered form: `.aiflow/review/gate-2a-[ticket-id].md`, `.aiflow/review/gate-2b-[ticket-id].md`, etc.
|
|
83
|
-
|
|
84
|
-
Where `[ticket-id]` comes from `.aiflow/context/current.json` → `ticketId` field. If ticketId is unavailable, use `unknown`.
|
|
85
|
-
|
|
86
|
-
**File template:**
|
|
87
|
-
|
|
88
|
-
```markdown
|
|
89
|
-
# Gate [N] Review — [TICKET-ID]
|
|
90
|
-
> Status: PENDING | Generated: YYYY-MM-DD
|
|
91
|
-
|
|
92
|
-
## How to review
|
|
93
|
-
- Toggle `[ ]` → `[x]` for each item you have read and agree with
|
|
94
|
-
- Add a comment under any item you want changed: `<!-- your comment here -->`
|
|
95
|
-
- Type `APPROVED` in chat when done
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Checklist
|
|
100
|
-
|
|
101
|
-
- [ ] **[Section]**: [one-line summary]
|
|
102
|
-
- [ ] **[Section]**: [one-line summary]
|
|
103
|
-
(... one per section, max 12)
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Review Notes
|
|
108
|
-
<!-- Optional: overall notes -->
|
|
109
|
-
```
|
|
57
|
+
### Step 2: Write the gate output file
|
|
58
|
+
Write the gate output file (e.g. `plan/[ticket-id]/requirement.md`, `plan/[ticket-id]/plan.md`, or `docs/ak-[project]/...`) as specified by the gate instructions.
|
|
110
59
|
|
|
111
60
|
### Step 3: Display gate pause message
|
|
112
61
|
|
|
113
|
-
|
|
62
|
+
Instruct the user to review the generated document. Tell them that they can hover over any line and add inline comments in VS Code using the native commenting UI, or edit the file to add standard HTML comments `<!-- comment -->` if they are not using the VS Code extension.
|
|
63
|
+
|
|
64
|
+
Display in chat:
|
|
114
65
|
|
|
115
66
|
```
|
|
116
67
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
117
68
|
⏸️ GATE [N] PAUSED — REVIEW REQUIRED
|
|
118
69
|
|
|
119
|
-
📋 Open in
|
|
70
|
+
📋 Open in VS Code: [path/to/generated/file.md](path/to/generated/file.md)
|
|
120
71
|
|
|
121
|
-
•
|
|
122
|
-
•
|
|
123
|
-
•
|
|
72
|
+
• Review the generated document content directly.
|
|
73
|
+
• Hover over any line to add specific comments (inline review).
|
|
74
|
+
• Mark comments as "Resolved" in VS Code once addressed.
|
|
75
|
+
• Type APPROVED when done.
|
|
124
76
|
|
|
125
|
-
⚠️ APPROVED will not be accepted until all
|
|
77
|
+
⚠️ APPROVED will not be accepted until all inline comments are resolved.
|
|
126
78
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
127
79
|
```
|
|
128
80
|
|
|
129
81
|
---
|
|
130
82
|
|
|
131
|
-
## Mode 2: VERIFY — Check
|
|
83
|
+
## Mode 2: VERIFY — Check Comments and Checklist on APPROVED
|
|
132
84
|
|
|
133
|
-
When the developer types `APPROVED`, run this
|
|
85
|
+
When the developer types `APPROVED`, run this check:
|
|
134
86
|
|
|
135
87
|
### Step 1: Run CLI check
|
|
136
88
|
|
|
@@ -138,58 +90,30 @@ When the developer types `APPROVED`, run this before accepting:
|
|
|
138
90
|
ak review check --gate [N] --ticket [ticket-id]
|
|
139
91
|
```
|
|
140
92
|
|
|
141
|
-
For Tester Gate 2 sub-phases, pass the lettered gate identifier:
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
ak review check --gate 2a --ticket [ticket-id]
|
|
145
|
-
ak review check --gate 2b --ticket [ticket-id]
|
|
146
|
-
```
|
|
147
|
-
|
|
148
93
|
### Step 2: Interpret result
|
|
149
94
|
|
|
150
|
-
**Exit code 0 — all checked:**
|
|
95
|
+
**Exit code 0 — all checked & resolved:**
|
|
151
96
|
- Gate proceeds normally
|
|
152
97
|
- Run telemetry: `ak gate [N] approved --ticket [ticket-id]`
|
|
153
98
|
- Continue to next gate
|
|
154
99
|
|
|
155
100
|
**Exit code 1 — file missing:**
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
AI response:
|
|
160
|
-
> "The review file wasn't found. Let me regenerate it."
|
|
161
|
-
Then re-run Mode 1 (generate) and display the gate pause message again.
|
|
101
|
+
- AI response: "The review session files weren't found. Let me prepare them."
|
|
102
|
+
- Re-run Mode 1 (initialize `comments-[ticket-id].json` and output file) and display pause message.
|
|
162
103
|
|
|
163
104
|
**Exit code 1 — items with comments (need revision):**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
AI response:
|
|
170
|
-
1. Read each comment
|
|
171
|
-
2. Update the specific section in the gate output file
|
|
172
|
-
3. Rewrite only the flagged items in the review file (keep already-checked `[x]` items as-is)
|
|
173
|
-
4. Display updated gate pause message
|
|
174
|
-
|
|
175
|
-
**Exit code 1 — unchecked items, no comment:**
|
|
176
|
-
```
|
|
177
|
-
Items unchecked (no comment):
|
|
178
|
-
• **Scope**: Auth module only
|
|
179
|
-
```
|
|
180
|
-
AI response:
|
|
181
|
-
> "Item(s) are unchecked without a comment. Please either:
|
|
182
|
-
> - Check `[x]` if you agree with the content, or
|
|
183
|
-
> - Add `<!-- your comment -->` on the next line if you want changes."
|
|
184
|
-
Do NOT re-generate. Wait for developer to update the file.
|
|
105
|
+
If the CLI reports unresolved comments, the AI must:
|
|
106
|
+
1. Read the unresolved comments returned by the CLI (which include file path, line number, and comment text).
|
|
107
|
+
2. Read the source file at those line numbers to understand the context.
|
|
108
|
+
3. Update the specific sections of the document to address the comments.
|
|
109
|
+
4. Tell the user what was updated, ask them to mark the comment thread as resolved in VS Code, and type `APPROVED`.
|
|
185
110
|
|
|
186
111
|
---
|
|
187
112
|
|
|
188
113
|
## Mandatory Rules
|
|
189
114
|
|
|
190
115
|
- ❌ **NEVER** accept `APPROVED` without first running `ak review check`
|
|
191
|
-
-
|
|
192
|
-
- ✅ **ALWAYS**
|
|
116
|
+
- ✅ **ALWAYS** ensure `.aiflow/review/` directory exists (use `mkdir -p`)
|
|
117
|
+
- ✅ **ALWAYS** initialize `.aiflow/review/comments-[ticket-id].json` with `[]` if not present when starting a gate pause.
|
|
193
118
|
- ✅ **ALWAYS** use the ticket ID from `.aiflow/context/current.json` in the file name
|
|
194
|
-
- ✅ **ALWAYS** keep review items specific to the actual content — not generic category names
|
|
195
119
|
- ✅ **ALWAYS** use lettered suffixes (`gate-2a`, `gate-2b`, …) for Tester Gate 2 sub-phases — never plain `gate-2`
|
|
@@ -99,13 +99,11 @@ Liệt kê scenarios theo nhóm, output vào `test-plan/checklist.md`:
|
|
|
99
99
|
📙 **Regression** _(nếu Dev Artifacts Check Bước 2 tìm thấy impacted areas)_
|
|
100
100
|
- Mỗi item ghi rõ: "Regression — [vùng ảnh hưởng] — [lý do từ PR diff]"
|
|
101
101
|
|
|
102
|
-
```
|
|
103
102
|
⏸️ GATE 2 — PHASE 2a: SCENARIOS READY
|
|
104
103
|
Scenarios: [N] total
|
|
105
104
|
- Functional: [N] | Non-functional: [N] | Integration: [N] | Exploratory: [N] | Regression: [N]
|
|
106
105
|
→ Review: [test-plan/checklist.md](test-plan/checklist.md)
|
|
107
106
|
→ Type APPROVED to proceed to Phase 2b
|
|
108
|
-
```
|
|
109
107
|
|
|
110
108
|
---
|
|
111
109
|
|
|
@@ -178,14 +176,12 @@ Output testcases: `test-plan/test-cases/[ScreenID]-testcases.md`
|
|
|
178
176
|
| **Total** | **[S/M/L/XL]** |
|
|
179
177
|
```
|
|
180
178
|
|
|
181
|
-
```
|
|
182
179
|
⏸️ GATE 2 — PHASE 2b: TESTCASES GENERATED
|
|
183
180
|
Test cases: [N] total ([N] positive / [N] negative / [N] edge)
|
|
184
181
|
Test plan: [test-plan/test-plan.md](test-plan/test-plan.md)
|
|
185
182
|
→ Review: [test-plan/test-cases/](test-plan/test-cases/)
|
|
186
183
|
→ Type APPROVED to proceed to Phase 2c (Review & Optimize)
|
|
187
184
|
→ Or provide feedback to update
|
|
188
|
-
```
|
|
189
185
|
|
|
190
186
|
---
|
|
191
187
|
|
|
@@ -229,18 +225,15 @@ Kiểm tra theo thứ tự, output vào `test-plan/review-report.md`:
|
|
|
229
225
|
Priority: High (phải fix trước Phase 2d) / Medium / Low (có thể defer)
|
|
230
226
|
```
|
|
231
227
|
|
|
232
|
-
```
|
|
233
228
|
⏸️ GATE 2 — PHASE 2c: REVIEW COMPLETE
|
|
234
229
|
Issues: [N] duplicate | [N] problematic | [N] to optimize | [N] missing
|
|
235
230
|
High priority chưa xử lý: [N]
|
|
236
231
|
→ Review: [test-plan/review-report.md](test-plan/review-report.md)
|
|
237
232
|
→ Type APPROVED to proceed to Phase 2d (chỉ khi High priority = 0)
|
|
238
233
|
→ Or provide specific fixes to apply
|
|
239
|
-
```
|
|
240
234
|
|
|
241
235
|
**Nếu nhận được APPROVED mà còn issues Priority High chưa xử lý → từ chối ngay:**
|
|
242
236
|
|
|
243
|
-
```
|
|
244
237
|
⛔ PHASE 2c BLOCKED — Còn [N] issues Priority HIGH chưa được xử lý:
|
|
245
238
|
|
|
246
239
|
| TC_ID | Vấn đề | Đề xuất sửa |
|
|
@@ -250,7 +243,6 @@ High priority chưa xử lý: [N]
|
|
|
250
243
|
→ Cung cấp fixes cho các issues trên, sau đó gõ APPROVED.
|
|
251
244
|
❌ APPROVED chỉ được chấp nhận khi không còn issues Priority High.
|
|
252
245
|
Medium và Low có thể defer — không block APPROVED.
|
|
253
|
-
```
|
|
254
246
|
|
|
255
247
|
---
|
|
256
248
|
|
|
@@ -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.
|
|
14
|
+
## 2. Danh sách Test Cases Chi Tiết
|
|
15
15
|
|
|
16
|
-
|
|
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
|
-
|
|
24
|
+
### 2.2. Kiểm thử Giao diện Người dùng (UI/UX)
|
|
24
25
|
|
|
25
|
-
|
|
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
|
-
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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
|
-
###
|
|
75
|
-
|
|
76
|
-
| TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
|
|
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
|
-
###
|
|
83
|
-
|
|
84
|
-
| TC ID | Test Case Name | Severity | Pre-condition | Steps | Data Test | Expected Result | Ticket ID | Comment |
|
|
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. | | |
|
|
@@ -250,7 +250,6 @@ Tạo `test-plan/test-analysis.md`:
|
|
|
250
250
|
|
|
251
251
|
### Step 5: Present to Tester
|
|
252
252
|
|
|
253
|
-
```
|
|
254
253
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
255
254
|
⏸️ GATE 1: TEST ANALYSIS READY
|
|
256
255
|
|
|
@@ -266,11 +265,9 @@ Summary:
|
|
|
266
265
|
|
|
267
266
|
⚠️ I will NOT proceed to Gate 2 until I receive "APPROVED".
|
|
268
267
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
269
|
-
```
|
|
270
268
|
|
|
271
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:**
|
|
272
270
|
|
|
273
|
-
```
|
|
274
271
|
⛔ GATE 1 BLOCKED — Còn câu hỏi chưa được trả lời.
|
|
275
272
|
|
|
276
273
|
Câu hỏi đang chờ:
|
|
@@ -278,7 +275,6 @@ Câu hỏi đang chờ:
|
|
|
278
275
|
|
|
279
276
|
→ Vui lòng trả lời câu hỏi trên trước khi gõ APPROVED.
|
|
280
277
|
❌ APPROVED không được chấp nhận khi còn câu hỏi chưa được làm rõ.
|
|
281
|
-
```
|
|
282
278
|
|
|
283
279
|
---
|
|
284
280
|
|