@educa-corp/sdd-framework 0.5.0 → 0.7.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.
Files changed (243) hide show
  1. package/bin/build.js +113 -19
  2. package/bin/gate-trace.js +487 -0
  3. package/bin/index.js +445 -146
  4. package/bin/lint-trace.js +643 -0
  5. package/bin/self-check.js +804 -2
  6. package/bin/trace-schema.json +621 -10
  7. package/core/FRAMEWORK_VERSION +1 -1
  8. package/core/README.md +20 -0
  9. package/core/commands/amend-prd.md +518 -0
  10. package/core/commands/debug.md +123 -511
  11. package/core/commands/define-product.md +86 -510
  12. package/core/commands/dev-gen-test.md +86 -510
  13. package/core/commands/dev-run-test.md +133 -519
  14. package/core/commands/dev-smoke-test.md +86 -510
  15. package/core/commands/extend-prd.md +128 -522
  16. package/core/commands/fix-bug.md +118 -509
  17. package/core/commands/generate-architecture.md +94 -515
  18. package/core/commands/generate-bdd.md +128 -513
  19. package/core/commands/generate-code.md +119 -510
  20. package/core/commands/generate-design-spec.md +86 -510
  21. package/core/commands/generate-prd.md +89 -510
  22. package/core/commands/generate-spec-manifest.md +86 -510
  23. package/core/commands/generate-tech-docs.md +120 -512
  24. package/core/commands/learn.md +172 -496
  25. package/core/commands/map-testids.md +86 -510
  26. package/core/commands/propose-scenario.md +86 -510
  27. package/core/commands/qc-analyze.md +86 -510
  28. package/core/commands/qc-design-test.md +86 -510
  29. package/core/commands/qc-plan.md +86 -510
  30. package/core/commands/qc-report.md +86 -510
  31. package/core/commands/qc-review.md +86 -510
  32. package/core/commands/qc-run-test.md +115 -513
  33. package/core/commands/refine-prd.md +112 -522
  34. package/core/commands/report-bug.md +86 -510
  35. package/core/commands/review-code.md +123 -511
  36. package/core/commands/review-context.md +136 -522
  37. package/core/commands/review-tech-docs.md +90 -511
  38. package/core/commands/setup-ai-first.md +166 -138
  39. package/core/commands/sync.md +155 -107
  40. package/core/commands/update-framework.md +16 -103
  41. package/core/commands/validate-traces.md +426 -511
  42. package/core/hooks/data-guard.js +174 -83
  43. package/core/hooks/settings.json +2 -1
  44. package/core/rules/workflow.md +64 -4
  45. package/core/steps/capture-lesson.md +34 -1
  46. package/core/steps/context-loader.md +50 -8
  47. package/core/steps/gate.md +92 -35
  48. package/core/steps/report-footer.md +23 -0
  49. package/core/templates/README.md +24 -1
  50. package/core/templates/ci/trace-gate.yml +146 -0
  51. package/core/templates/feature.template +1 -1
  52. package/core/templates/hooks/pre-push +61 -0
  53. package/docs/02-concepts/architecture.md +61 -6
  54. package/docs/02-concepts/traceability.md +57 -0
  55. package/docs/03-guides/architect.md +63 -0
  56. package/docs/04-reference/commands.md +148 -134
  57. package/docs/04-reference/model-selection.md +32 -19
  58. package/docs/04-reference/trace-schema.md +39 -0
  59. package/docs/explain/02b-extend-prd.md +1 -1
  60. package/docs/explain/02c-amend-prd.md +152 -0
  61. package/docs/explain/21-validate-traces.md +2 -1
  62. package/docs/explain/27-learn.md +5 -3
  63. package/docs/explain/28-sync.md +25 -0
  64. package/docs/explain/README.md +136 -135
  65. package/package.json +5 -9
  66. package/commands/debug.md +0 -917
  67. package/commands/debug.tmpl +0 -257
  68. package/commands/define-product.md +0 -862
  69. package/commands/define-product.tmpl +0 -225
  70. package/commands/dev-gen-test.md +0 -1124
  71. package/commands/dev-gen-test.tmpl +0 -490
  72. package/commands/dev-run-test.md +0 -859
  73. package/commands/dev-run-test.tmpl +0 -225
  74. package/commands/dev-smoke-test.md +0 -798
  75. package/commands/dev-smoke-test.tmpl +0 -217
  76. package/commands/extend-prd.md +0 -907
  77. package/commands/extend-prd.tmpl +0 -270
  78. package/commands/fix-bug.md +0 -910
  79. package/commands/fix-bug.tmpl +0 -197
  80. package/commands/generate-architecture.md +0 -775
  81. package/commands/generate-architecture.tmpl +0 -194
  82. package/commands/generate-bdd.md +0 -1347
  83. package/commands/generate-bdd.tmpl +0 -590
  84. package/commands/generate-code.md +0 -1283
  85. package/commands/generate-code.tmpl +0 -649
  86. package/commands/generate-design-spec.md +0 -1161
  87. package/commands/generate-design-spec.tmpl +0 -524
  88. package/commands/generate-prd.md +0 -1143
  89. package/commands/generate-prd.tmpl +0 -223
  90. package/commands/generate-spec-manifest.md +0 -745
  91. package/commands/generate-spec-manifest.tmpl +0 -164
  92. package/commands/generate-tech-docs.md +0 -1344
  93. package/commands/generate-tech-docs.tmpl +0 -273
  94. package/commands/learn.md +0 -723
  95. package/commands/learn.tmpl +0 -63
  96. package/commands/map-testids.md +0 -662
  97. package/commands/map-testids.tmpl +0 -81
  98. package/commands/propose-scenario.md +0 -783
  99. package/commands/propose-scenario.tmpl +0 -202
  100. package/commands/qc-analyze.md +0 -693
  101. package/commands/qc-analyze.tmpl +0 -112
  102. package/commands/qc-design-test.md +0 -650
  103. package/commands/qc-design-test.tmpl +0 -69
  104. package/commands/qc-plan.md +0 -630
  105. package/commands/qc-plan.tmpl +0 -49
  106. package/commands/qc-report.md +0 -641
  107. package/commands/qc-report.tmpl +0 -60
  108. package/commands/qc-review.md +0 -634
  109. package/commands/qc-review.tmpl +0 -53
  110. package/commands/qc-run-test.md +0 -750
  111. package/commands/qc-run-test.tmpl +0 -116
  112. package/commands/refine-prd.md +0 -1074
  113. package/commands/refine-prd.tmpl +0 -278
  114. package/commands/report-bug.md +0 -729
  115. package/commands/report-bug.tmpl +0 -148
  116. package/commands/review-code.md +0 -803
  117. package/commands/review-code.tmpl +0 -143
  118. package/commands/review-context.md +0 -1323
  119. package/commands/review-context.tmpl +0 -527
  120. package/commands/review-tech-docs.md +0 -982
  121. package/commands/review-tech-docs.tmpl +0 -401
  122. package/commands/setup-ai-first.md +0 -574
  123. package/commands/setup-ai-first.tmpl +0 -378
  124. package/commands/sync.md +0 -486
  125. package/commands/sync.tmpl +0 -384
  126. package/commands/update-framework.md +0 -290
  127. package/commands/update-framework.tmpl +0 -188
  128. package/commands/validate-traces.md +0 -1435
  129. package/commands/validate-traces.tmpl +0 -854
  130. package/hooks/data-guard.js +0 -141
  131. package/hooks/settings.json +0 -18
  132. package/modules/android-compose/module.yaml +0 -13
  133. package/modules/android-compose/stack-profile.yaml +0 -57
  134. package/modules/angular/architecture-snippets/component-patterns.md +0 -187
  135. package/modules/angular/module.yaml +0 -6
  136. package/modules/angular/stack-profile.yaml +0 -38
  137. package/modules/context-engineering/architecture-snippets/context-design.md +0 -119
  138. package/modules/context-engineering/module.yaml +0 -9
  139. package/modules/context-engineering/stack-profile.yaml +0 -61
  140. package/modules/dotnet/architecture-snippets/clean-arch.md +0 -160
  141. package/modules/dotnet/module.yaml +0 -6
  142. package/modules/dotnet/stack-profile.yaml +0 -50
  143. package/modules/flutter/module.yaml +0 -14
  144. package/modules/flutter/stack-profile.yaml +0 -59
  145. package/modules/golang/architecture-snippets/domain-layout.md +0 -283
  146. package/modules/golang/module.yaml +0 -6
  147. package/modules/golang/stack-profile.yaml +0 -40
  148. package/modules/ios-swiftui/module.yaml +0 -13
  149. package/modules/ios-swiftui/stack-profile.yaml +0 -55
  150. package/modules/java-spring/architecture-snippets/layered-arch.md +0 -201
  151. package/modules/java-spring/module.yaml +0 -15
  152. package/modules/java-spring/stack-profile.yaml +0 -28
  153. package/modules/nextjs/architecture-snippets/app-router-patterns.md +0 -269
  154. package/modules/nextjs/module.yaml +0 -14
  155. package/modules/nextjs/stack-profile.yaml +0 -74
  156. package/modules/nuxt/module.yaml +0 -14
  157. package/modules/nuxt/stack-profile.yaml +0 -58
  158. package/modules/phaser-game/architecture-snippets/phaser-scene-patterns.md +0 -646
  159. package/modules/phaser-game/module.yaml +0 -15
  160. package/modules/phaser-game/stack-profile.yaml +0 -90
  161. package/modules/php-laravel/architecture-snippets/service-repository.md +0 -302
  162. package/modules/php-laravel/module.yaml +0 -15
  163. package/modules/php-laravel/stack-profile.yaml +0 -56
  164. package/modules/qc-playwright/stack-profile.yaml +0 -66
  165. package/modules/react/architecture-snippets/hooks-query-patterns.md +0 -254
  166. package/modules/react/module.yaml +0 -14
  167. package/modules/react/stack-profile.yaml +0 -63
  168. package/modules/react-native/module.yaml +0 -14
  169. package/modules/react-native/stack-profile.yaml +0 -56
  170. package/modules/vue/module.yaml +0 -14
  171. package/modules/vue/stack-profile.yaml +0 -65
  172. package/rules/data-protection.md +0 -80
  173. package/rules/workflow.md +0 -73
  174. package/scripts/init.sh +0 -49
  175. package/scripts/upgrade.sh +0 -94
  176. package/skills/code/SKILL.md +0 -19
  177. package/skills/code/SKILL.tmpl +0 -19
  178. package/skills/debug/SKILL.md +0 -19
  179. package/skills/debug/SKILL.tmpl +0 -19
  180. package/skills/design-spec/SKILL.md +0 -11
  181. package/skills/design-spec/SKILL.tmpl +0 -11
  182. package/skills/discovery/SKILL.md +0 -14
  183. package/skills/discovery/SKILL.tmpl +0 -14
  184. package/skills/prd/SKILL.md +0 -19
  185. package/skills/prd/SKILL.tmpl +0 -19
  186. package/skills/qc/qa-analyst/DOC_GAPS.template.md +0 -63
  187. package/skills/qc/qa-analyst/acceptance-criteria.md +0 -60
  188. package/skills/qc/qa-analyst/business-rules.md +0 -59
  189. package/skills/qc/qa-analyst/data-flow.md +0 -64
  190. package/skills/qc/qa-analyst/spec-breakdown.md +0 -61
  191. package/skills/qc/qa-designer/e2e/journey.md +0 -41
  192. package/skills/qc/qa-designer/exploratory/charter.md +0 -68
  193. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +0 -43
  194. package/skills/qc/qa-designer/functional/api.md +0 -45
  195. package/skills/qc/qa-designer/functional/gui-feature.md +0 -46
  196. package/skills/qc/qa-designer/functional/gui-screen.md +0 -52
  197. package/skills/qc/qa-designer/integration/api.md +0 -42
  198. package/skills/qc/qa-designer/integration/db.md +0 -39
  199. package/skills/qc/qa-designer/integration/gui.md +0 -40
  200. package/skills/qc/qa-designer/integration/kafka.md +0 -40
  201. package/skills/qc/qa-designer/non-functional.md +0 -40
  202. package/skills/qc/qa-planner/test-plan.md +0 -120
  203. package/skills/qc/qa-reviewer/script/e2e.md +0 -87
  204. package/skills/qc/qa-reviewer/script/exploratory.md +0 -45
  205. package/skills/qc/qa-reviewer/script/functional.md +0 -101
  206. package/skills/qc/qa-reviewer/script/integration.md +0 -91
  207. package/skills/qc/qa-reviewer/script/non-functional.md +0 -126
  208. package/skills/qc/qa-reviewer/test-case/e2e.md +0 -73
  209. package/skills/qc/qa-reviewer/test-case/exploratory.md +0 -43
  210. package/skills/qc/qa-reviewer/test-case/functional.md +0 -76
  211. package/skills/qc/qa-reviewer/test-case/integration.md +0 -69
  212. package/skills/qc/qa-reviewer/test-case/non-functional.md +0 -73
  213. package/skills/qc/qa-runner/e2e.md +0 -49
  214. package/skills/qc/qa-runner/exploratory/session.md +0 -36
  215. package/skills/qc/qa-runner/functional/api.md +0 -35
  216. package/skills/qc/qa-runner/functional/gui-feature.md +0 -51
  217. package/skills/qc/qa-runner/functional/gui-screen.md +0 -55
  218. package/skills/qc/qa-runner/integration.md +0 -47
  219. package/skills/qc/qa-runner/non-functional.md +0 -49
  220. package/skills/qc/qa-runner/report/report.md +0 -37
  221. package/skills/setup-ai-first/SKILL.md +0 -19
  222. package/skills/setup-ai-first/SKILL.tmpl +0 -19
  223. package/skills/spec/SKILL.md +0 -19
  224. package/skills/spec/SKILL.tmpl +0 -19
  225. package/skills/test/SKILL.md +0 -18
  226. package/skills/test/SKILL.tmpl +0 -18
  227. package/steps/business-language.md +0 -56
  228. package/steps/capture-lesson.md +0 -79
  229. package/steps/context-loader.md +0 -385
  230. package/steps/gate.md +0 -94
  231. package/steps/report-footer.md +0 -102
  232. package/steps/review-fanout.md +0 -159
  233. package/steps/spawn-agent.md +0 -129
  234. package/steps/trace-mirror.md +0 -53
  235. package/templates/README.md +0 -47
  236. package/templates/architecture.template.md +0 -394
  237. package/templates/design-spec.template.md +0 -217
  238. package/templates/feature.template +0 -123
  239. package/templates/platform-guide.template.md +0 -145
  240. package/templates/prd.template.md +0 -283
  241. package/templates/product-definition.template.md +0 -188
  242. package/templates/project-context.yaml +0 -212
  243. package/templates/tech-design.template.md +0 -490
@@ -1,41 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — E2E Journey
8
-
9
- Skill **tự chứa** để viết TC end-to-end: hành trình đầu→cuối xuyên nhiều màn/module
10
- (mở → nhập → submit → verify tạo + định tuyến + đồng bộ + hiển thị). Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - "viết E2E cho [feature]" / nở danh sách journey trong TEST_PLAN thành TC chi tiết đầu-cuối
14
-
15
- ## Khi KHÔNG trigger
16
- - Test 1 màn/field → `functional/*` · test riêng 1 điểm tích hợp → `integration/*`
17
-
18
- ---
19
-
20
- ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
- - **Test Data** dạng list (tài khoản/role, dữ liệu lớp/buổi…) · **Steps** `[Action]`/`[Verify]` xuyên các màn ·
23
- **Expected** 1 bullet = chuỗi verify point (tạo thành công, mã đúng, định tuyến đúng, đồng bộ đúng, hiển thị danh sách).
24
- - ID journey `E2E-<FEATURE>-NN` · cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
25
-
26
- ## Kỹ thuật áp dụng
27
- - **Use Case/Scenario:** mỗi journey = main + alternate + exception flow.
28
- - **Decision Table** để chọn journey đại diện cho mỗi nhánh của **trục bao phủ** (vd Đối tượng × Bộ phận xử lý × lớp/buổi × role × CRM).
29
- - **Verify points chung** (V1…Vn) áp cho mọi journey · **end-to-end data** (nhập màn A → hiện đúng màn B/DB/hệ thống ngoài).
30
-
31
- ## Phase 1 — Clarify
32
- Lấy danh sách journey + trục bao phủ + verify points từ TEST_PLAN · mỗi journey: actor/role, tiền điều kiện
33
- (data + tài khoản), bước chính, kết quả/định tuyến kỳ vọng · journey nào phụ thuộc gap Blocker.
34
-
35
- ## Phase 2 — Write
36
- Mỗi journey → 1 TC bám Format; Expected = chuỗi verify point; chuẩn bị tiền điều kiện & cleanup, mỗi journey độc lập.
37
- **Journey phụ thuộc gap vẫn viết + 🚫 Block: GAP-xx**, định tuyến ghi "dự kiến theo BR". Trace BR.
38
-
39
- ## Output
40
- File TC e2e (hoặc nhóm E2E trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
41
- In bảng `E2E-ID | Journey | Pri | Trace | Block` + bảng TC block. Bàn giao `qa-reviewer`.
@@ -1,68 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Gen Test Charter — Exploratory
8
-
9
- Sinh bộ test charter + SFDIPOT test ideas + What-If scenarios cho exploratory session.
10
-
11
- ## Khi nào trigger
12
- - "generate charter cho [Feature]" / "chuẩn bị exploratory session"
13
- - Trước khi bắt đầu exploratory session
14
- - Feature mới chưa ai khám phá, hoặc feature có risk cao
15
-
16
- ## Khi KHÔNG trigger
17
- - Cần sinh functional TC từ spec → dùng qa-designer-gui-screen / qa-designer-gui-feature
18
- - Cần khám phá feature rồi CHUYỂN ĐỔI thành functional TC → dùng explore-to-functional
19
- - Cần review charter đã viết → dùng qa-reviewer/test-case/exploratory
20
-
21
- ---
22
-
23
- ## Phase 1 — Clarify
24
-
25
- Thu thập:
26
- 1. Feature name + mô tả ngắn
27
- 2. Tester level — junior / mid / senior (ảnh hưởng charter complexity)
28
- 3. Time-box — 30 / 60 / 90 phút
29
- 4. Môi trường — staging / production-like
30
- 5. Đã có functional TC coverage chưa (nếu có → exploratory focus vào edge case NGOÀI spec)
31
-
32
- ---
33
-
34
- ## Phase 2 — Analyze
35
-
36
- Áp dụng SFDIPOT 7 dimension:
37
- S - Structure: thành phần/module/page liên quan
38
- F - Function: chức năng chính + phụ + ẩn
39
- D - Data: edge data, boundary, empty, max, special chars
40
- I - Interface: UI, API, integration point
41
- P - Platform: browser, OS, device, network
42
- O - Operations: ai dùng, khi nào, tần suất
43
- T - Time: timeout, expiry, concurrent, timezone
44
-
45
- Với mỗi dimension: 3-5 test idea CỤ THỂ.
46
-
47
- Brainstorm 15-20 "What If" scenarios bất thường:
48
- double click, network drop, 2 tab, back button, idle 2h, emoji input, device rotate...
49
-
50
- ---
51
-
52
- ## Phase 3 — Write
53
-
54
- Sinh 3-5 charter, mỗi charter gồm:
55
- - Format: "Explore <target> With <resource> To discover <information>"
56
- - Whittaker Tour phù hợp (Money/FedEx/Saboteur/Couch Potato/Intellectual/...)
57
- - Risk level: HIGH / MEDIUM / LOW
58
- - Time-box: 30 / 60 / 90 phút
59
-
60
- Sinh 10-15 câu hỏi cho dev/BA (assumptions, edge case, error handling, security)
61
-
62
- ---
63
-
64
- ## Output
65
-
66
- Charter files: {paths.qc_dir}/exploratory/charters/<feature>_01.md, _02.md...
67
- Ideas file: {paths.qc_dir}/exploratory/ideas/<feature>.md
68
- Bảng tổng kết: STT | Charter | Tour | Risk | Time-box
@@ -1,43 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Explore-to-Functional Pipeline
8
-
9
- Skill **tự chứa**: khám phá feature (chưa/thiếu spec) → draft TC → QC review → feed
10
- requirement → chuyển thành functional TC chính thức. Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - Feature KHÔNG có tài liệu/spec (legacy, take-over) hoặc spec mơ hồ/thiếu
14
- - Cần bootstrap bộ TC nhanh cho hệ thống đang chạy · "khám phá [X] rồi tạo TC"
15
-
16
- ## Khi KHÔNG trigger
17
- - Feature có spec rõ → `functional/gui-screen`/`gui-feature` trực tiếp
18
- - Chỉ cần charter cho session → `exploratory/charter`
19
-
20
- ---
21
-
22
- ## Phase 1 — Explore (AI tự chạy)
23
- Dựa trên mô tả feature: list TẤT CẢ chức năng (visible + ẩn + integration point) · mỗi chức năng
24
- identify input/output/state/side-effect · sinh DRAFT TC (1 happy + 2–3 edge mỗi chức năng) ·
25
- "what if" mỗi chức năng · list chức năng liên quan QC chưa nêu. → ĐỢI QC phản hồi.
26
-
27
- ## Phase 2 — QC Review + Bổ sung
28
- Đợi QC confirm đúng/sai, thêm business edge case, cung cấp context → sửa → draft v2. → ĐỢI QC confirm/paste requirement.
29
-
30
- ## Phase 3 — Feed Requirement (nếu có)
31
- So requirement vs draft: requirement chưa phủ → thêm TC · TC sai logic → sửa expected · thêm Trace BR ·
32
- chỉnh Priority theo business. Không có requirement → giữ draft Phase 2.
33
-
34
- ## Phase 4 — Convert to Functional (format chuẩn)
35
- Chuyển draft → TC chính thức bám **format file `TC_<FEATURE>.md`**:
36
- - Metadata **list**: Title · Feature · Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags ·
37
- **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có BR → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx]` nếu chặn.
38
- - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet cụ thể.
39
- - Phân nhóm GUI/Functional · cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
40
- - Đặt file `{paths.qc_dir}/{UC-ID}/test-cases/TC_<FEATURE>.md`.
41
-
42
- ## Output
43
- File TC functional + bảng `TC_ID | Title | Priority | Technique | Trace`. Bàn giao `qa-reviewer`.
@@ -1,45 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Functional API (không qua UI)
8
-
9
- Skill **tự chứa** để viết TC kiểm thử một API endpoint ở mức chức năng (request → response).
10
- Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - "viết test case cho API [method] [path]" — verify contract, validation, mã lỗi của endpoint
14
-
15
- ## Khi KHÔNG trigger
16
- - Test qua giao diện → `functional/gui-screen`/`gui-feature`
17
- - Luồng dữ liệu API ↔ DB/service khác → `integration/api` · message/event → `integration/kafka`
18
-
19
- ---
20
-
21
- ## Format file `TC_<FEATURE>.md` (bắt buộc)
22
- - 1 file/feature · mỗi TC **1 concept** · metadata **list** (không bảng/emoji): Title · Feature ·
23
- Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags · Trace · 🚫 Block(nếu có).
24
- - **Trace:** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)`; không có BR → `⚠️ Chưa có Business Rule`.
25
- - **🚫 Block:** TC phụ thuộc gap vẫn viết đủ + `[GAP-xx](DOC_GAPS.md) — lý do`.
26
- - **Test Data:** dạng **list** (request cụ thể: method/path/headers/body). **Steps:** `[Action]`/`[Verify]`.
27
- **Expected:** 1 bullet nêu rõ **status code + field response cần chốt** (không ✅/❌).
28
- - Cuối file: **Trace matrix** (BR↔TC, ⚠️ TC thiếu BR) + **bảng TC bị block** · bỏ nội dung gạch ngang.
29
-
30
- ## Kỹ thuật áp dụng
31
- - Mỗi field request → **EP** (phân vùng valid/invalid) + **BVA** (biên độ dài/giá trị).
32
- - Tổ hợp điều kiện (auth × param × state) → **Decision Table**.
33
-
34
- ## Phase 1 — Clarify
35
- Endpoint (method/path/auth/role/content-type) · request (path/query/body schema: field, kiểu, bắt buộc, ràng buộc) ·
36
- response (schema thành công + các mã lỗi 4xx/5xx + body lỗi) · side-effect (nếu cần verify → cân nhắc `integration/api`).
37
-
38
- ## Phase 2 — Write
39
- - Nhóm TC: happy (200 + schema đúng) → validation (400 từng field, dùng EP/BVA) → auth (401/403)
40
- → not found (404) → edge (payload lớn, ký tự đặc biệt, rate limit).
41
- - Mỗi TC bám khối Format; Expected ghi status code + phần body verify; trace BR; gap chặn → 🚫 Block.
42
-
43
- ## Output
44
- File TC (`TC_<FEATURE>_API.md` hoặc gộp trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
45
- In bảng TC + Trace matrix. Bàn giao `qa-reviewer`.
@@ -1,46 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Functional GUI Feature (đa màn hình)
8
-
9
- Skill **tự chứa** để viết TC functional cho feature có luồng span ≥ 2 màn hình
10
- (wizard, master-detail, popup→list). Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - "viết test case cho feature [X]" mà flow đi qua nhiều màn/route, truyền state giữa bước
14
-
15
- ## Khi KHÔNG trigger
16
- - Gọn trong 1 màn → `functional/gui-screen` · API thuần → `functional/api`
17
- - Hành trình nghiệp vụ đầu-cuối + đồng bộ hệ thống → `e2e/journey`
18
-
19
- ---
20
-
21
- ## Format file `TC_<FEATURE>.md` (bắt buộc)
22
- - 1 file/feature · mỗi TC **1 concept** · metadata **list** (không bảng/emoji): Title · Feature ·
23
- Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags · Trace · 🚫 Block(nếu có).
24
- - **Trace:** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)`; không có BR → `⚠️ Chưa có Business Rule`.
25
- - **🚫 Block:** TC phụ thuộc gap vẫn viết đủ + `[GAP-xx](DOC_GAPS.md) — lý do`.
26
- - **Test Data:** dạng **list** (không bảng). **Steps:** `[Action]`/`[Verify]`, không `*Expected:*`/bước. **Expected:** 1 bullet cụ thể.
27
- - Cuối file: **Trace matrix** (BR↔TC, ⚠️ TC thiếu BR) + **bảng TC bị block** · không `#### Python Test Mapping` · bỏ nội dung gạch ngang.
28
-
29
- ## Kỹ thuật áp dụng
30
- - **Use Case** cho flow tổng: main (P0) → alternate (P1) → exception (negative).
31
- - **Decision Table** cho điểm rẽ nhánh (điều kiện qua bước/nhảy màn).
32
- - **State Transition** nếu có trạng thái xuyên bước (draft→submitted…).
33
- - **EP/BVA** cho field trên từng màn.
34
-
35
- ## Phase 1 — Clarify
36
- Liệt kê các màn/route + thứ tự điều hướng · state/dữ liệu truyền giữa màn (giữ/reset khi back) ·
37
- điểm rẽ nhánh · platform · CRUD scope · cleanup.
38
-
39
- ## Phase 2 — Write
40
- - Nhóm TC: GUI từng màn → **điều hướng** (forward/back/giữ-reset state, deep-link) → happy path xuyên flow → negative.
41
- - Đặc biệt phủ: back có mất dữ liệu không, dữ liệu bắt buộc để qua bước sau, hủy giữa flow.
42
- - Mỗi TC bám khối Format; trace BR; gap chặn → 🚫 Block.
43
-
44
- ## Output
45
- File `TC_<FEATURE>.md` trong `{paths.qc_dir}/{UC-ID}/test-cases/`. In bảng TC + Trace matrix + bảng TC block.
46
- Bàn giao `qa-reviewer` (test-case).
@@ -1,52 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Functional GUI Screen (1 màn hình)
8
-
9
- Skill **tự chứa** để viết TC functional cho 1 màn hình đơn lẻ (web/mobile). Chỉ cần load file này.
10
-
11
- ## Khi nào trigger
12
- - "viết test case cho màn hình [X]" — feature gọn trong 1 screen (1 page web / 1 Activity/VC)
13
-
14
- ## Khi KHÔNG trigger
15
- - Flow span ≥ 2 màn → `functional/gui-feature`
16
- - API không qua UI → `functional/api`
17
- - Tích hợp 2+ module → `integration/*` · hành trình đầu-cuối → `e2e/journey`
18
-
19
- ---
20
-
21
- ## Format file `TC_<FEATURE>.md` (bắt buộc)
22
- - 1 file/feature · mỗi TC **1 concept** · metadata **list** (mỗi trường 1 dòng, không bảng/emoji):
23
- Title · Feature · Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags · Trace · 🚫 Block(nếu có).
24
- - **Trace:** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)`; TC không có BR → `⚠️ Chưa có Business Rule`.
25
- - **🚫 Block:** TC phụ thuộc gap **vẫn viết đủ** + `[GAP-xx](DOC_GAPS.md) — lý do`; chưa chạy tới khi gap Answered.
26
- - **Test Data:** dạng **list** (`- **Trường:** giá trị`), không bảng.
27
- - **Test Steps:** `**[Action]**` / `**[Verify]**`, KHÔNG `- *Expected:*` sau bước. **Expected:** 1 bullet cụ thể (không ✅/❌).
28
- - Phân nhóm GUI/Functional · cuối file: **Trace matrix** (BR↔TC, ⚠️ TC thiếu BR) + **bảng TC bị block** · KHÔNG `#### Python Test Mapping` · bỏ nội dung gạch ngang.
29
-
30
- ## Kỹ thuật áp dụng
31
- - Field có ràng buộc (độ dài/số/ngày) → **EP** (mỗi phân vùng 1 TC, tag `ep`) + **BVA** (4 TC min−1/min/max/max+1, tag `bva`).
32
- - Logic nhiều điều kiện / cascade dropdown / permission → **Decision Table** (mỗi rule = 1 TC).
33
- - Element/đối tượng có trạng thái enabled/disabled, vòng đời → **State Transition** (chuyển đổi hợp lệ + cấm).
34
- - Luồng thao tác trên màn → **Use Case** (main P0 → alternate P1 → exception negative).
35
-
36
- ## Phase 1 — Clarify
37
- Platform (web Playwright/mobile) · screen+route · domain (form-crud/listing/auth/settings) · CRUD scope ·
38
- mutating actions OK? · cleanup policy. Thiếu → hỏi trước khi viết.
39
-
40
- ## Phase 2 — Explore
41
- Dump element: buttons, inputs, dropdowns, table headers, modal states. Mỗi element →
42
- chức năng (input/action/display/nav) · constraint (required/min-max/format/enabled) · state change · câu hỏi "what if".
43
-
44
- ## Phase 3 — Write
45
- - **Nhóm 1 GUI:** title → buttons → inputs → date picker → dropdowns → bảng (header→row count→checkbox→từng cột) → pagination.
46
- - **Nhóm 2 Functional:** filter (đơn→combined) → search → reset → pagination → data integrity → actions → negative.
47
- - Phủ implicit: rate limit, concurrent, session, empty state, max data, special chars.
48
- - Mỗi TC bám khối Format trên; trace BR; TC chặn bởi gap → 🚫 Block.
49
-
50
- ## Output
51
- File `TC_<FEATURE>.md` trong `{paths.qc_dir}/{UC-ID}/test-cases/`. In bảng `TC_ID | Title | Priority | Tags | Trace`
52
- + Trace matrix + bảng TC block. Bàn giao `qa-reviewer` (test-case).
@@ -1,42 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Integration API
8
-
9
- Skill **tự chứa** để viết TC tích hợp qua API: caller → API → service/DB/hệ thống ngoài,
10
- verify luồng dữ liệu & contract giữa các thành phần. Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - Test điểm tích hợp API ↔ service backend / hệ thống ngoài (vd LMS ↔ CRM)
14
- - Verify dữ liệu sau gọi API lan tới chặng tiếp (DB/event)
15
-
16
- ## Khi KHÔNG trigger
17
- - Chỉ verify request/response 1 endpoint → `functional/api`
18
- - Verify riêng trạng thái DB → `integration/db` · message/event → `integration/kafka`
19
-
20
- ---
21
-
22
- ## Format file TC (bắt buộc)
23
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)` (TC chặn vẫn viết đủ).
24
- - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet nêu rõ chặng verify (response/bản ghi/event).
25
- - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
26
-
27
- ## Kỹ thuật áp dụng
28
- - **Interface/Contract:** verify schema request/response giữa caller↔callee.
29
- - **Data flow verification:** theo sơ đồ data flow, mỗi chặng verify dữ liệu biến đổi đúng.
30
- - **Decision Table** khi định tuyến/đồng bộ phụ thuộc nhiều điều kiện.
31
- - **Error/Retry/Timeout/Concurrency:** failure point, thao tác đồng thời (sinh số không trùng).
32
-
33
- ## Phase 1 — Clarify
34
- Chuỗi tích hợp (caller→API→service/DB/API ngoài) · contract mỗi interface · điều kiện định tuyến/đồng bộ
35
- (vd điều kiện đổ CRM) · failure point (timeout, lỗi service ngoài, partial commit).
36
-
37
- ## Phase 2 — Write
38
- Nhóm TC: happy (dữ liệu đúng đầu→cuối) → contract negative (input sai → mã lỗi đúng) → failure/timeout/retry
39
- → concurrency → điều kiện đồng bộ (đổ/không đổ). Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
40
-
41
- ## Output
42
- File TC integration trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Ưu tiên P0 cho định tuyến & tiền-dữ liệu. Bàn giao `qa-reviewer`.
@@ -1,39 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Integration DB
8
-
9
- Skill **tự chứa** để viết TC verify **trạng thái dữ liệu trong DB** sau action:
10
- insert/update/soft-delete đúng giá trị, side-effect, toàn vẹn. Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - Kiểm tra bản ghi DB sau thao tác (tạo ticket → ghi đúng bảng/cột); soft-delete, default, audit log
14
-
15
- ## Khi KHÔNG trigger
16
- - Chỉ verify response API → `functional/api`/`integration/api` · message/event → `integration/kafka`
17
-
18
- ---
19
-
20
- ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
- - **Test Data** dạng list (giá trị input) · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet nêu rõ **bảng.cột = giá trị**.
23
- - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
24
-
25
- ## Kỹ thuật áp dụng
26
- - **State/DB verification:** verify bản ghi sau action (giá trị từng cột, flag, timestamp).
27
- - **Data flow:** dữ liệu từ input lan tới DB đúng. **Decision Table** nếu ghi phụ thuộc điều kiện.
28
-
29
- ## Phase 1 — Clarify
30
- Bảng & cột bị ảnh hưởng + giá trị kỳ vọng · loại thao tác (insert/update/soft-delete/cascade) ·
31
- side-effect (audit log, timestamp, người tạo/sửa) · cleanup/rollback dữ liệu test.
32
-
33
- ## Phase 2 — Write
34
- Nhóm TC: ghi đúng giá trị (happy) → default/null đúng → update không đụng cột khác → soft-delete (flag đúng)
35
- → audit log → ràng buộc/unique (negative). Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
36
-
37
- ## Output
38
- File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Ghi rõ query kiểm tra DB + yêu cầu cleanup;
39
- không hardcode ID, chuẩn bị/dọn data qua fixture. Bàn giao `qa-reviewer`.
@@ -1,40 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Integration GUI ↔ Backend
8
-
9
- Skill **tự chứa** để viết TC tích hợp UI ↔ backend: UI gọi API đúng, render đúng kết quả/
10
- lỗi từ server, đồng bộ trạng thái hai chiều. Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - UI phản ánh đúng dữ liệu/lỗi backend (lookup, list, validate server-side); UI gọi đúng API + xử lý response
14
-
15
- ## Khi KHÔNG trigger
16
- - Chỉ test layout/element tĩnh 1 màn → `functional/gui-screen`
17
- - Chỉ test API không qua UI → `functional/api`/`integration/api`
18
-
19
- ---
20
-
21
- ## Format file TC (bắt buộc)
22
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
23
- - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet (API liên quan + biểu hiện UI kỳ vọng).
24
- - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
25
-
26
- ## Kỹ thuật áp dụng
27
- - **Data flow UI→API→UI:** verify request gửi đúng + render response đúng.
28
- - **Error handling:** lỗi server (4xx/5xx) → message UI đúng. **State:** loading/empty/error.
29
-
30
- ## Phase 1 — Clarify
31
- Điểm UI gọi backend (action→API) · mapping response→hiển thị (list/dropdown/message) ·
32
- trạng thái loading/empty/error · debounce/cancel khi đổi input.
33
-
34
- ## Phase 2 — Write
35
- Nhóm TC: UI render đúng dữ liệu backend (happy) → empty state → lỗi server → message đúng → loading state
36
- → đổi input reset/cancel request → đồng bộ sau action (tạo xong → list cập nhật). Locator ưu tiên data-testid/role.
37
- Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
38
-
39
- ## Output
40
- File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC nêu API liên quan + biểu hiện UI. Bàn giao `qa-reviewer`.
@@ -1,40 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Integration Kafka (Message/Event)
8
-
9
- Skill **tự chứa** để viết TC tích hợp qua Kafka: producer phát event đúng, consumer xử lý
10
- đúng, đảm bảo ordering/idempotency/retry. Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - Action sinh event Kafka (vd tạo ticket → phát event sang service/CRM); verify topic/payload/thứ tự/khử trùng
14
-
15
- ## Khi KHÔNG trigger
16
- - Tích hợp đồng bộ qua API → `integration/api` · verify DB → `integration/db`
17
-
18
- ---
19
-
20
- ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
- - **Test Data** dạng list (payload) · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet nêu **topic + field payload / hành vi consumer**.
23
- - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
24
-
25
- ## Kỹ thuật áp dụng
26
- - **Message/event:** verify topic, key, payload schema, điều kiện phát.
27
- - **Ordering & idempotency:** thứ tự theo key, message trùng/out-of-order.
28
- - **Error/Retry:** consumer lỗi → retry/DLQ.
29
-
30
- ## Phase 1 — Clarify
31
- Topic/key/payload + điều kiện phát (khi nào phát/không) · consumer xử lý gì + side-effect + idempotent ·
32
- yêu cầu ordering · xử lý trùng/out-of-order/lỗi (retry, DLQ).
33
-
34
- ## Phase 2 — Write
35
- Nhóm TC: phát đúng topic+payload (happy) → điều kiện không phát → consumer xử lý đúng → message trùng (idempotent)
36
- → out-of-order → consumer lỗi → retry/DLQ → ordering theo key. Setup/teardown consumer test.
37
- Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
38
-
39
- ## Output
40
- File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC ghi topic, key, payload cần verify + hành vi consumer. Bàn giao `qa-reviewer`.
@@ -1,40 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Test Case — Non-Functional
8
-
9
- Skill **tự chứa** để viết TC phi chức năng: performance, security, accessibility, compatibility.
10
- Trọng tâm "hệ thống hoạt động TỐT thế nào". Chỉ cần load file này.
11
-
12
- ## Khi nào trigger
13
- - Yêu cầu hiệu năng/tải, bảo mật, accessibility, tương thích; feature có SLA, dữ liệu nhạy cảm, hoặc data lớn
14
-
15
- ## Khi KHÔNG trigger
16
- - Kiểm thử chức năng theo đặc tả → `functional/*` · tích hợp module → `integration/*`
17
-
18
- ---
19
-
20
- ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
- - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet có **ngưỡng đo cụ thể** (không "nhanh/ổn định").
23
- - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
24
-
25
- ## Kỹ thuật / loại
26
- - **Performance:** response time dưới tải mục tiêu; danh sách lớn (max data); pagination; concurrency.
27
- - **Security:** authZ/role (truy cập trái phép → chặn), injection, PII (SĐT) không lộ, session/timeout, rate limit.
28
- - **Accessibility:** keyboard nav, focus, label/aria, contrast (WCAG).
29
- - **Compatibility:** trình duyệt/thiết bị/độ phân giải mục tiêu.
30
-
31
- ## Phase 1 — Clarify
32
- Loại non-functional + tiêu chí đo (ngưỡng cụ thể: thời gian, số user, WCAG level) · môi trường & công cụ
33
- (load tool, scanner, axe/lighthouse) · dữ liệu/tải mẫu.
34
-
35
- ## Phase 2 — Write
36
- Mỗi TC bám Format; **Expected có ngưỡng pass + công cụ đo**; đánh dấu TC cần môi trường/data đặc biệt.
37
- Trace BR; gap chặn → 🚫 Block.
38
-
39
- ## Output
40
- File TC non-functional trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC ghi tiêu chí đo + ngưỡng + công cụ. Bàn giao `qa-reviewer`.
@@ -1,120 +0,0 @@
1
- ---
2
- version: 1.0
3
- updated: 2026-06-11
4
- ported_from: ai-automation-qc-base
5
- ---
6
-
7
- # Lập Test Plan
8
-
9
- Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
10
-
11
- **Đầu vào (bắt buộc, chỉ 2 nguồn — đúng 2 file qa-analyst trả ra):**
12
- 1. `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md` — chức năng, BR-xx, AC-xx, data flow (qa-analyst).
13
- 2. `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md` — bảng gap GAP-xx, mức độ, gap Blocker (qa-analyst).
14
-
15
- ## Khi nào trigger
16
- - "lập test plan cho [Feature]" / "viết test plan"
17
- - Sau khi qa-analyst xong (đã có REQUIREMENT_ANALYSIS + DOC_GAPS)
18
- - Trước khi qa-designer thiết kế chi tiết TC — test plan là khung định hướng
19
-
20
- ## Khi KHÔNG trigger
21
- - Chưa có REQUIREMENT_ANALYSIS / DOC_GAPS → chạy qa-analyst trước
22
- - Thiết kế test case chi tiết (.Test.md) → dùng qa-designer
23
- - Bóc tách yêu cầu/spec, lập danh sách gap → dùng qa-analyst
24
-
25
- ---
26
-
27
- ## Phase 1 — Thu thập đầu vào
28
-
29
- 1. Đọc `REQUIREMENT_ANALYSIS.md`: nắm chức năng, các BR-xx và AC-xx, data flow,
30
- integration/failure point.
31
- 2. Đọc `DOC_GAPS.md`: lấy danh sách gap, đặc biệt **gap Blocker còn Open** → đây là
32
- nguồn cho cột "Phụ thuộc" và cho Entry criteria.
33
- 3. Map mỗi nhóm BR sang **layer test** của qa-designer: functional/gui-screen,
34
- gui-feature, api, integration, e2e/journey, non-functional.
35
- 4. **Bỏ qua nội dung gạch ngang** (đã loại ở qa-analyst) — không đưa vào plan.
36
-
37
- ---
38
-
39
- ## Phase 2 — Lập Test Plan
40
-
41
- Điền đủ template bên dưới. Nguyên tắc:
42
- - Mỗi **vùng test** map về BR-xx cụ thể, gắn **Layer + Loại test + Priority + ước lượng TC**;
43
- hiển thị **rule chi tiết** ngay trong bảng (cột riêng, dùng `<br>` cho nhiều rule).
44
- - **Priority theo rủi ro suy ra từ BR + gap:** core function / logic định tuyến / sinh
45
- mã / tiền-dữ liệu = P0.
46
- - Vùng/journey còn phụ thuộc **gap Blocker** → ghi rõ cột "Phụ thuộc" (GAP#); Entry
47
- criteria yêu cầu đóng các gap đó trước khi thiết kế TC.
48
- - Liệt kê **E2E journey** đầy đủ (mỗi journey: tiền điều kiện, kết quả/định tuyến kỳ
49
- vọng, BR, phụ thuộc, priority) + bộ **verify point chung** sau submit.
50
- - Mục Rủi ro: rút trực tiếp từ gap Blocker + các BR logic phức tạp.
51
-
52
- ---
53
-
54
- ## Output — Template `TEST_PLAN.md`
55
-
56
- Đặt tại `{paths.qc_dir}/{UC-ID}/TEST_PLAN.md`:
57
-
58
- ```markdown
59
- # Test Plan – <Feature>
60
-
61
- | Trường | Giá trị |
62
- |---|---|
63
- | Feature / Project / Module | … |
64
- | Người lập | qa-planner |
65
- | Ngày / Phiên bản | … |
66
- | Nguồn | REQUIREMENT_ANALYSIS · DOC_GAPS |
67
-
68
- ## 1. Mục tiêu
69
- Mục tiêu test của feature (1–3 câu).
70
-
71
- ## 2. Phạm vi
72
- - **In scope:** chức năng/BR được test.
73
- - **Out of scope:** phần để tài liệu/feature khác; nội dung gạch ngang đã loại.
74
-
75
- ## 3. Test items theo vùng & độ ưu tiên
76
- Bảng — mỗi vùng kèm rule chi tiết + metadata:
77
-
78
- | # | Vùng test | Rule chi tiết | Layer (qa-designer) | Loại test | Pri | Ước lượng |
79
- |---|---|---|---|---|---|---|
80
- | ① | <vùng> | **BR-xx:** … <br>**BR-yy:** … | functional/gui-screen | Functional/Negative | P0 | n |
81
- | … | … | … | … | … | … | … |
82
-
83
- > Tổng ước lượng sơ bộ: ~N test case (+ E2E).
84
-
85
- ### 3.1 Danh sách E2E đầy đủ
86
- Verify points chung (sau Submit): V1 tạo thành công · V2 mã/ID đúng · V3 hiển thị danh
87
- sách · V4… · Trục bao phủ: <các chiều tổ hợp>.
88
-
89
- | ID | Journey | Tiền điều kiện | Kết quả kỳ vọng | BR | Phụ thuộc | Pri |
90
- |---|---|---|---|---|---|---|
91
- | E2E-XX-01 | … | … | … | BR-… | GAP# | P0 |
92
-
93
- ## 4. Cách tiếp cận (Test approach)
94
- Kỹ thuật áp dụng: EP+BVA, Decision Table (cho logic điều kiện), state/lookup,
95
- integration, negative/exploratory; tự động hoá theo `CLAUDE.md` (Playwright + pytest-playwright + Trace + pytest-html).
96
-
97
- ## 5. Tiêu chí Vào / Ra
98
- - **Entry:** gap Blocker (trong DOC_GAPS) đã Answered; doc phụ thuộc sẵn sàng; môi trường + tài khoản role.
99
- - **Exit:** pass P0=100%, P1≥95%; không còn defect Blocker/Critical; mọi BR/AC được trace; báo cáo pytest-html + Playwright Trace.
100
-
101
- ## 6. Rủi ro (risk-based)
102
- | Rủi ro | Ảnh hưởng | Mức | Giảm thiểu |
103
- (rút từ gap Blocker + BR logic phức tạp)
104
-
105
- ## 7. Dữ liệu & Môi trường
106
- Tài khoản các role, dữ liệu mẫu (biên/edge), môi trường staging.
107
-
108
- ## 8. Deliverables
109
- Test case `.Test.md`, script Playwright/pytest + Page Object, báo cáo pytest-html + Playwright Trace.
110
-
111
- ## 9. Lịch trình (milestone phụ thuộc gap)
112
- | Mốc | Điều kiện | Trạng thái |
113
- M0 phân tích → M1 đóng gap → M2 thiết kế TC → M3 review TC → M4 chạy → M5 review script.
114
-
115
- ## 10. Trạng thái hiện tại
116
- Blocked/Ready + phần có thể làm sớm (không phụ thuộc gap Blocker).
117
- ```
118
-
119
- Kết thúc bằng: tóm tắt số vùng test + tổng TC ước lượng + trạng thái (Ready/Blocked dựa
120
- trên gap Blocker còn Open) và gợi ý bước kế tiếp (bàn giao qa-designer khi đã Ready).