qa-skills 3.0.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 (262) hide show
  1. package/README.md +168 -0
  2. package/bin/cli.js +42 -0
  3. package/dist/agents/registry.d.ts +5 -0
  4. package/dist/agents/registry.d.ts.map +1 -0
  5. package/dist/agents/registry.js +101 -0
  6. package/dist/agents/registry.js.map +1 -0
  7. package/dist/agents/types.d.ts +9 -0
  8. package/dist/agents/types.d.ts.map +1 -0
  9. package/dist/agents/types.js +2 -0
  10. package/dist/agents/types.js.map +1 -0
  11. package/dist/dependencies.d.ts +21 -0
  12. package/dist/dependencies.d.ts.map +1 -0
  13. package/dist/dependencies.js +125 -0
  14. package/dist/dependencies.js.map +1 -0
  15. package/dist/installer.d.ts +25 -0
  16. package/dist/installer.d.ts.map +1 -0
  17. package/dist/installer.js +437 -0
  18. package/dist/installer.js.map +1 -0
  19. package/dist/scaffold.d.ts +27 -0
  20. package/dist/scaffold.d.ts.map +1 -0
  21. package/dist/scaffold.js +182 -0
  22. package/dist/scaffold.js.map +1 -0
  23. package/package.json +40 -0
  24. package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
  28. package/skills/qa-api-contract-curator/SKILL.md +104 -0
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
  31. package/skills/qa-browser-data-collector/SKILL.md +132 -0
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
  34. package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
  38. package/skills/qa-changelog-analyzer/SKILL.md +134 -0
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
  41. package/skills/qa-clickup-integration/SKILL.md +166 -0
  42. package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
  43. package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
  44. package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
  46. package/skills/qa-codeceptjs-writer/references/config.md +255 -0
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
  48. package/skills/qa-coverage-analyzer/SKILL.md +166 -0
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
  51. package/skills/qa-coverage-analyzer/references/tools.md +204 -0
  52. package/skills/qa-cypress-writer/SKILL.md +134 -0
  53. package/skills/qa-cypress-writer/references/assertions.md +121 -0
  54. package/skills/qa-cypress-writer/references/best-practices.md +82 -0
  55. package/skills/qa-cypress-writer/references/config.md +121 -0
  56. package/skills/qa-cypress-writer/references/patterns.md +170 -0
  57. package/skills/qa-data-factory/SKILL.md +126 -0
  58. package/skills/qa-data-factory/references/factory-patterns.md +164 -0
  59. package/skills/qa-data-factory/references/faker-guide.md +131 -0
  60. package/skills/qa-diagram-generator/SKILL.md +125 -0
  61. package/skills/qa-diagram-generator/references/c4-model.md +53 -0
  62. package/skills/qa-diagram-generator/references/charts.md +58 -0
  63. package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
  64. package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
  65. package/skills/qa-diagram-generator/references/flowchart.md +92 -0
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
  67. package/skills/qa-diagram-generator/references/gantt.md +49 -0
  68. package/skills/qa-diagram-generator/references/journey.md +50 -0
  69. package/skills/qa-diagram-generator/references/mindmap.md +75 -0
  70. package/skills/qa-diagram-generator/references/sequence.md +69 -0
  71. package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
  72. package/skills/qa-discovery-interview/SKILL.md +182 -0
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
  75. package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
  77. package/skills/qa-environment-checker/SKILL.md +142 -0
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
  79. package/skills/qa-environment-checker/references/health-checks.md +209 -0
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
  81. package/skills/qa-flaky-detector/SKILL.md +153 -0
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
  84. package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
  88. package/skills/qa-httpx-writer/SKILL.md +138 -0
  89. package/skills/qa-httpx-writer/references/assertions.md +195 -0
  90. package/skills/qa-httpx-writer/references/best-practices.md +140 -0
  91. package/skills/qa-httpx-writer/references/config.md +212 -0
  92. package/skills/qa-httpx-writer/references/patterns.md +262 -0
  93. package/skills/qa-jest-writer/SKILL.md +131 -0
  94. package/skills/qa-jest-writer/references/assertions.md +125 -0
  95. package/skills/qa-jest-writer/references/best-practices.md +136 -0
  96. package/skills/qa-jest-writer/references/config.md +134 -0
  97. package/skills/qa-jest-writer/references/patterns.md +172 -0
  98. package/skills/qa-jira-integration/SKILL.md +135 -0
  99. package/skills/qa-jira-integration/references/api-patterns.md +143 -0
  100. package/skills/qa-jira-integration/references/field-mapping.md +79 -0
  101. package/skills/qa-jira-integration/references/xray-integration.md +85 -0
  102. package/skills/qa-jmeter-writer/SKILL.md +171 -0
  103. package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
  104. package/skills/qa-jmeter-writer/references/config.md +204 -0
  105. package/skills/qa-jmeter-writer/references/patterns.md +242 -0
  106. package/skills/qa-junit5-writer/SKILL.md +157 -0
  107. package/skills/qa-junit5-writer/references/assertions.md +118 -0
  108. package/skills/qa-junit5-writer/references/config.md +97 -0
  109. package/skills/qa-junit5-writer/references/patterns.md +162 -0
  110. package/skills/qa-k6-writer/SKILL.md +155 -0
  111. package/skills/qa-k6-writer/references/best-practices.md +236 -0
  112. package/skills/qa-k6-writer/references/config.md +219 -0
  113. package/skills/qa-k6-writer/references/patterns.md +304 -0
  114. package/skills/qa-linear-integration/SKILL.md +137 -0
  115. package/skills/qa-linear-integration/references/api-patterns.md +249 -0
  116. package/skills/qa-linear-integration/references/field-mapping.md +121 -0
  117. package/skills/qa-locust-writer/SKILL.md +151 -0
  118. package/skills/qa-locust-writer/references/best-practices.md +126 -0
  119. package/skills/qa-locust-writer/references/config.md +170 -0
  120. package/skills/qa-locust-writer/references/patterns.md +235 -0
  121. package/skills/qa-manual-test-designer/SKILL.md +145 -0
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
  123. package/skills/qa-manual-test-designer/references/personas.md +146 -0
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
  126. package/skills/qa-mobile-test-writer/SKILL.md +144 -0
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
  128. package/skills/qa-mobile-test-writer/references/config.md +309 -0
  129. package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
  130. package/skills/qa-nfr-analyst/SKILL.md +177 -0
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
  136. package/skills/qa-orchestrator/SKILL.md +132 -0
  137. package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
  140. package/skills/qa-pact-writer/SKILL.md +133 -0
  141. package/skills/qa-pact-writer/references/best-practices.md +100 -0
  142. package/skills/qa-pact-writer/references/config.md +135 -0
  143. package/skills/qa-pact-writer/references/patterns.md +161 -0
  144. package/skills/qa-plan-creator/SKILL.md +139 -0
  145. package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
  146. package/skills/qa-plan-creator/references/migration-plan.md +44 -0
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
  148. package/skills/qa-plan-creator/references/performance-plan.md +44 -0
  149. package/skills/qa-plan-creator/references/regression-plan.md +45 -0
  150. package/skills/qa-plan-creator/references/release-plan.md +45 -0
  151. package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
  152. package/skills/qa-plan-creator/references/test-plan.md +59 -0
  153. package/skills/qa-plan-creator/references/uat-plan.md +43 -0
  154. package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
  158. package/skills/qa-playwright-py-writer/SKILL.md +156 -0
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
  160. package/skills/qa-playwright-py-writer/references/config.md +195 -0
  161. package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
  162. package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
  165. package/skills/qa-playwright-ts-writer/references/config.md +144 -0
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
  167. package/skills/qa-pytest-writer/SKILL.md +145 -0
  168. package/skills/qa-pytest-writer/references/assertions.md +149 -0
  169. package/skills/qa-pytest-writer/references/best-practices.md +97 -0
  170. package/skills/qa-pytest-writer/references/config.md +176 -0
  171. package/skills/qa-pytest-writer/references/patterns.md +251 -0
  172. package/skills/qa-qase-integration/SKILL.md +149 -0
  173. package/skills/qa-qase-integration/references/api-reference.md +354 -0
  174. package/skills/qa-qase-integration/references/ci-integration.md +196 -0
  175. package/skills/qa-qase-integration/references/field-mapping.md +157 -0
  176. package/skills/qa-requirements-generator/SKILL.md +152 -0
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
  179. package/skills/qa-rest-assured-writer/SKILL.md +137 -0
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
  181. package/skills/qa-rest-assured-writer/references/config.md +124 -0
  182. package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
  183. package/skills/qa-risk-analyzer/SKILL.md +158 -0
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
  186. package/skills/qa-robot-framework-writer/SKILL.md +147 -0
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
  188. package/skills/qa-robot-framework-writer/references/config.md +204 -0
  189. package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
  190. package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
  191. package/skills/qa-security-test-writer/SKILL.md +123 -0
  192. package/skills/qa-security-test-writer/references/best-practices.md +155 -0
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
  194. package/skills/qa-security-test-writer/references/zap-config.md +258 -0
  195. package/skills/qa-selenium-java-writer/SKILL.md +143 -0
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
  197. package/skills/qa-selenium-java-writer/references/config.md +143 -0
  198. package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
  199. package/skills/qa-selenium-py-writer/SKILL.md +150 -0
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
  201. package/skills/qa-selenium-py-writer/references/config.md +224 -0
  202. package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
  203. package/skills/qa-shortcut-integration/SKILL.md +143 -0
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
  206. package/skills/qa-spec-auditor/SKILL.md +162 -0
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
  209. package/skills/qa-spec-writer/SKILL.md +143 -0
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
  211. package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
  212. package/skills/qa-spring-test-writer/SKILL.md +170 -0
  213. package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
  214. package/skills/qa-spring-test-writer/references/config.md +179 -0
  215. package/skills/qa-spring-test-writer/references/patterns.md +235 -0
  216. package/skills/qa-supertest-writer/SKILL.md +150 -0
  217. package/skills/qa-supertest-writer/references/assertions.md +192 -0
  218. package/skills/qa-supertest-writer/references/best-practices.md +102 -0
  219. package/skills/qa-supertest-writer/references/config.md +166 -0
  220. package/skills/qa-supertest-writer/references/patterns.md +242 -0
  221. package/skills/qa-task-creator/SKILL.md +142 -0
  222. package/skills/qa-task-creator/references/linking-patterns.md +127 -0
  223. package/skills/qa-task-creator/references/task-types.md +169 -0
  224. package/skills/qa-task-creator/templates/task-template.md +24 -0
  225. package/skills/qa-test-doc-compiler/SKILL.md +114 -0
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
  228. package/skills/qa-test-healer/SKILL.md +101 -0
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
  230. package/skills/qa-test-healer/references/fix-strategies.md +177 -0
  231. package/skills/qa-test-reporter/SKILL.md +130 -0
  232. package/skills/qa-test-reporter/references/best-practices.md +162 -0
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
  234. package/skills/qa-test-reporter/references/report-formats.md +287 -0
  235. package/skills/qa-test-reviewer/SKILL.md +142 -0
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
  237. package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
  238. package/skills/qa-test-strategy/SKILL.md +133 -0
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
  240. package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
  241. package/skills/qa-test-strategy/references/testing-types.md +143 -0
  242. package/skills/qa-testcase-from-docs/SKILL.md +161 -0
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
  246. package/skills/qa-testcase-from-ui/SKILL.md +109 -0
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
  250. package/skills/qa-visual-regression-writer/SKILL.md +175 -0
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
  252. package/skills/qa-visual-regression-writer/references/config.md +220 -0
  253. package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
  254. package/skills/qa-vitest-writer/SKILL.md +141 -0
  255. package/skills/qa-vitest-writer/references/assertions.md +105 -0
  256. package/skills/qa-vitest-writer/references/best-practices.md +62 -0
  257. package/skills/qa-vitest-writer/references/config.md +127 -0
  258. package/skills/qa-vitest-writer/references/patterns.md +141 -0
  259. package/skills/qa-webdriverio-writer/SKILL.md +145 -0
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
  261. package/skills/qa-webdriverio-writer/references/config.md +240 -0
  262. package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
@@ -0,0 +1,235 @@
1
+ # Locust Patterns
2
+
3
+ ## User Classes (HttpUser)
4
+
5
+ ### Basic HttpUser
6
+
7
+ ```python
8
+ from locust import HttpUser, task, between
9
+
10
+ class ApiUser(HttpUser):
11
+ wait_time = between(1, 3)
12
+
13
+ @task
14
+ def get_health(self):
15
+ self.client.get("/health")
16
+
17
+ @task(weight=3)
18
+ def get_items(self):
19
+ self.client.get("/api/items")
20
+
21
+ @task(weight=1)
22
+ def create_item(self):
23
+ self.client.post("/api/items", json={"name": "test"})
24
+ ```
25
+
26
+ ### Multiple User Classes
27
+
28
+ ```python
29
+ class ReadOnlyUser(HttpUser):
30
+ wait_time = between(2, 5)
31
+ weight = 3 # 3x more likely to spawn
32
+
33
+ @task
34
+ def browse(self):
35
+ self.client.get("/api/items")
36
+ self.client.get("/api/items/1")
37
+
38
+ class WriteUser(HttpUser):
39
+ wait_time = between(1, 2)
40
+ weight = 1
41
+
42
+ @task
43
+ def create_and_update(self):
44
+ r = self.client.post("/api/items", json={"name": "new"})
45
+ if r.status_code == 201:
46
+ item_id = r.json()["id"]
47
+ self.client.put(f"/api/items/{item_id}", json={"name": "updated"})
48
+ ```
49
+
50
+ ### on_start / on_stop
51
+
52
+ ```python
53
+ class AuthenticatedUser(HttpUser):
54
+ wait_time = between(1, 2)
55
+
56
+ def on_start(self):
57
+ """Run once per user when spawned."""
58
+ r = self.client.post("/auth/login", json={"user": "test", "pass": "secret"})
59
+ self.token = r.json()["token"]
60
+
61
+ def on_stop(self):
62
+ """Run when user stops (e.g., test end)."""
63
+ self.client.post("/auth/logout", headers={"Authorization": f"Bearer {self.token}"})
64
+
65
+ @task
66
+ def get_profile(self):
67
+ self.client.get("/profile", headers={"Authorization": f"Bearer {self.token}"})
68
+ ```
69
+
70
+ ## TaskSets
71
+
72
+ ### Nested TaskSets
73
+
74
+ ```python
75
+ from locust import HttpUser, task, TaskSet, between
76
+
77
+ class BrowseTasks(TaskSet):
78
+ @task
79
+ def list_items(self):
80
+ self.client.get("/api/items")
81
+
82
+ @task
83
+ def view_item(self):
84
+ self.client.get("/api/items/1")
85
+
86
+ class CheckoutTasks(TaskSet):
87
+ @task
88
+ def add_to_cart(self):
89
+ self.client.post("/api/cart", json={"item_id": 1, "qty": 1})
90
+
91
+ @task
92
+ def checkout(self):
93
+ self.client.post("/api/checkout", json={"payment": "card"})
94
+
95
+ class WebUser(HttpUser):
96
+ wait_time = between(1, 3)
97
+ tasks = [BrowseTasks, CheckoutTasks]
98
+ ```
99
+
100
+ ### Interrupt (stop TaskSet)
101
+
102
+ ```python
103
+ class CheckoutFlow(TaskSet):
104
+ @task
105
+ def complete_checkout(self):
106
+ self.client.post("/api/cart", json={"item_id": 1})
107
+ self.client.post("/api/checkout")
108
+ self.interrupt() # Return to parent tasks
109
+ ```
110
+
111
+ ## Wait Time
112
+
113
+ | Type | Usage | Behavior |
114
+ | ---- | ----- | -------- |
115
+ | `between(min, max)` | Random uniform | Wait min–max seconds |
116
+ | `constant(n)` | Fixed | Wait n seconds every time |
117
+ | `constant_pacing(n)` | Rate-based | Maintain ~1/n seconds between requests |
118
+
119
+ ```python
120
+ from locust import between, constant, constant_pacing
121
+
122
+ wait_time = between(1, 5) # 1–5 sec between tasks
123
+ wait_time = constant(2) # Always 2 sec
124
+ wait_time = constant_pacing(1) # ~1 req/sec per user
125
+ ```
126
+
127
+ ## Load Shapes (LoadTestShape)
128
+
129
+ ### Ramp-Up / Ramp-Down
130
+
131
+ ```python
132
+ from locust import LoadTestShape
133
+
134
+ class RampShape(LoadTestShape):
135
+ min_users = 0
136
+ peak_users = 100
137
+ time_limit = 300 # 5 min
138
+
139
+ def tick(self):
140
+ run_time = self.get_run_time()
141
+ if run_time < 60:
142
+ return (int(run_time * self.peak_users / 60), 10) # Ramp up
143
+ elif run_time < 240:
144
+ return (self.peak_users, 10) # Sustain
145
+ elif run_time < self.time_limit:
146
+ return (int(self.peak_users * (300 - run_time) / 60), 10) # Ramp down
147
+ return None # Stop
148
+ ```
149
+
150
+ ### Spike Test
151
+
152
+ ```python
153
+ class SpikeShape(LoadTestShape):
154
+ def tick(self):
155
+ run_time = self.get_run_time()
156
+ if run_time < 30:
157
+ return (10, 5) # Baseline
158
+ elif run_time < 60:
159
+ return (500, 50) # Spike
160
+ elif run_time < 90:
161
+ return (10, 5) # Recovery
162
+ return None
163
+ ```
164
+
165
+ ### Soak (Endurance) Test
166
+
167
+ ```python
168
+ class SoakShape(LoadTestShape):
169
+ def tick(self):
170
+ run_time = self.get_run_time()
171
+ if run_time < 60:
172
+ return (50, 10) # Ramp to 50 users
173
+ elif run_time < 3600: # 1 hour
174
+ return (50, 10) # Hold
175
+ return None
176
+ ```
177
+
178
+ ## Event Hooks
179
+
180
+ ### Request Events
181
+
182
+ ```python
183
+ from locust import events
184
+
185
+ @events.request.add_listener
186
+ def on_request(request_type, name, response_time, response_length, exception, **kwargs):
187
+ if exception:
188
+ print(f"Request failed: {name} - {exception}")
189
+
190
+ @events.request.add_listener
191
+ def log_slow_requests(request_type, name, response_time, **kwargs):
192
+ if response_time > 2000: # ms
193
+ print(f"Slow: {name} took {response_time}ms")
194
+ ```
195
+
196
+ ### Test Lifecycle
197
+
198
+ ```python
199
+ @events.test_start.add_listener
200
+ def on_test_start(environment, **kwargs):
201
+ print("Load test starting")
202
+
203
+ @events.test_stop.add_listener
204
+ def on_test_stop(environment, **kwargs):
205
+ print("Load test stopped")
206
+
207
+ @events.init.add_listener
208
+ def on_locust_init(environment, **kwargs):
209
+ # Custom init (e.g., setup connections)
210
+ pass
211
+ ```
212
+
213
+ ## Distributed Mode
214
+
215
+ ### Master
216
+
217
+ ```bash
218
+ locust -f locustfile.py --master --expect-workers=4
219
+ ```
220
+
221
+ ### Workers
222
+
223
+ ```bash
224
+ locust -f locustfile.py --worker --master-host=192.168.1.100
225
+ ```
226
+
227
+ ### Headless Distributed
228
+
229
+ ```bash
230
+ # Master
231
+ locust -f locustfile.py --master --expect-workers=4 --headless -u 1000 -r 50 -t 300s
232
+
233
+ # Workers (run on separate machines)
234
+ locust -f locustfile.py --worker --master-host=<master-ip>
235
+ ```
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: qa-manual-test-designer
3
+ description: Design manual test cases and exploratory testing charters using specification-based techniques, risk-based prioritization, and persona-based testing approaches.
4
+ output_dir: test-cases/manual
5
+ ---
6
+
7
+ # QA Manual Test Designer
8
+
9
+ ## Purpose
10
+
11
+ Design manual test cases and exploratory testing charters for human testers. Combines specification-based test models, risk-based prioritization, and persona-based testing to produce structured test case sets, exploratory session charters, and session report templates.
12
+
13
+ ## Trigger Phrases
14
+
15
+ - "Design manual test cases for [feature]"
16
+ - "Create exploratory testing charter" / "Exploratory charter for [area]"
17
+ - "Manual test design from [spec/requirements]"
18
+ - "Risk-based manual test prioritization"
19
+ - "Persona-based test scenarios" / "Test as [Novice/Power User/Admin]"
20
+ - "Session charter for [new feature/regression/security]"
21
+ - "Manual test case set with decision tables"
22
+ - "Exploratory session report template"
23
+
24
+ ## Specification-Based Test Models
25
+
26
+ Use these models to derive structured manual test cases per ISO/IEC/IEEE 29119-4:
27
+
28
+ | Model | When to Use | Output |
29
+ | ----- | ----------- | ------ |
30
+ | **Decision tables** | Multiple conditions affecting outcome (validation, business rules) | One test case per rule column |
31
+ | **State transitions** | Workflows, lifecycle states, session management | Test cases for valid/invalid transitions |
32
+ | **Scenario models** | User journeys, use case flows | Main flow, alternate flows, exception flows |
33
+ | **Classification trees** | Complex input spaces (user type × action × data state) | Pairwise or coverage-based combinations |
34
+
35
+ See `references/test-design-techniques.md` (from qa-testcase-from-docs) for technique details.
36
+
37
+ ## Exploratory Testing Session Charters
38
+
39
+ Exploratory charters guide time-boxed sessions without scripting every step. Each charter includes:
40
+
41
+ | Element | Description |
42
+ | ------- | ----------- |
43
+ | **Mission statement** | Clear, focused goal (e.g., "Explore checkout flow for guest users") |
44
+ | **Test areas** | Scope: what to explore, what to skip |
45
+ | **Time-box** | 25 / 45 / 90 min — choose based on scope and focus |
46
+ | **Notes template** | Structured placeholders for observations, bugs, ideas |
47
+ | **Debrief structure** | Post-session: what worked, what didn't, risks, follow-ups |
48
+
49
+ See `references/exploratory-charters.md` for templates by scenario (new feature, regression, security, usability).
50
+
51
+ ## Risk-Based Test Prioritization for Manual Testing
52
+
53
+ Prioritize manual test cases by risk when time is limited:
54
+
55
+ | Factor | High Risk | Medium Risk | Low Risk |
56
+ | ------ | --------- | ----------- | -------- |
57
+ | **Business impact** | Revenue, compliance, safety | Core workflows | Nice-to-have |
58
+ | **Change frequency** | Recently changed, new code | Moderate changes | Stable |
59
+ | **Complexity** | Multi-step, integrations | Moderate logic | Simple |
60
+ | **User exposure** | High-traffic paths | Common paths | Rare paths |
61
+
62
+ **Output:** Prioritized test case list (P1/P2/P3) with rationale. Run P1 first when time-boxed.
63
+
64
+ ## Persona-Based Testing
65
+
66
+ Test from different user perspectives to uncover diverse defects:
67
+
68
+ | Persona | Focus | Typical Behaviors |
69
+ | ------- | ----- | ----------------- |
70
+ | **Novice User** | First-time, confused | Clicks randomly, ignores hints, gets lost |
71
+ | **Power User** | Efficiency, edge cases | Keyboard shortcuts, bulk actions, advanced features |
72
+ | **Attacker** | Malicious input, bypass | SQL injection, XSS, auth bypass, privilege escalation |
73
+ | **Admin** | Configuration, permissions | Role setup, access control, audit logs |
74
+ | **Mobile User** | Touch, small screen | Thumb reach, orientation, slow network |
75
+
76
+ See `references/personas.md` for detailed behaviors, goals, and test scenarios per persona.
77
+
78
+ ## Outputs
79
+
80
+ | Output Type | Format | Use Case |
81
+ | ----------- | ------ | -------- |
82
+ | **Manual test case set** | ID, Title, Steps, Expected Results, Priority | Structured execution |
83
+ | **Exploratory charter** | Mission, areas, time-box, notes template | Session planning |
84
+ | **Session report** | Findings, bugs, risks, follow-ups | Post-session debrief |
85
+
86
+ ## Workflow
87
+
88
+ 1. **Input:** Spec, requirements, or feature description
89
+ 2. **Model selection:** Choose test models (decision table, state, scenario, classification tree)
90
+ 3. **Derive test cases:** Generate manual test cases with steps and expected results
91
+ 4. **Prioritize:** Apply risk-based prioritization (P1/P2/P3)
92
+ 5. **Charters (optional):** Create exploratory charters for areas needing exploration
93
+ 6. **Personas (optional):** Add persona-based scenarios for coverage diversity
94
+ 7. **Output:** Manual test case set + charters + session report template
95
+
96
+ ## Scope
97
+
98
+ **Can do (autonomous):**
99
+ - Design manual test cases from specs/requirements using decision tables, state transitions, scenario models, classification trees
100
+ - Create exploratory testing charters with mission, areas, time-box, notes template, debrief structure
101
+ - Apply risk-based prioritization to manual test cases
102
+ - Generate persona-based test scenarios (Novice, Power User, Attacker, Admin, Mobile User)
103
+ - Produce session report templates for exploratory debriefs
104
+ - Reference qa-diagram-generator for state/flow diagrams when needed
105
+
106
+ **Cannot do (requires confirmation):**
107
+ - Change scope or priority set by stakeholders
108
+ - Override organizational test policy or risk thresholds
109
+ - Assign testers or schedule sessions without approval
110
+
111
+ **Will not do (out of scope):**
112
+ - Write test automation code
113
+ - Execute tests or run exploratory sessions
114
+ - Modify production code or environments
115
+ - Approve releases or sign-offs
116
+
117
+ ## Quality Checklist
118
+
119
+ - [ ] Manual test cases have clear steps and measurable expected results
120
+ - [ ] Preconditions and postconditions specified where relevant
121
+ - [ ] Risk-based prioritization applied with documented rationale
122
+ - [ ] Exploratory charters include mission, areas, time-box, notes template, debrief structure
123
+ - [ ] Persona-based scenarios cover at least 2–3 personas when diversity is needed
124
+ - [ ] Session report template includes findings, bugs, risks, follow-ups
125
+ - [ ] No duplicate test cases for same scenario
126
+ - [ ] Traceability to requirements/specs where applicable
127
+
128
+ ## Troubleshooting
129
+
130
+ | Symptom | Likely Cause | Fix |
131
+ | ------- | ------------ | --- |
132
+ | Vague test steps | Spec lacks detail | Run qa-spec-writer first; add Given/When/Then |
133
+ | Too many test cases | Exhaustive combination | Apply risk prioritization; focus on P1/P2 |
134
+ | Charters too broad | Mission not focused | Narrow mission to single area or flow |
135
+ | Persona scenarios generic | Persona not specific enough | Use `references/personas.md` for concrete behaviors |
136
+ | Session reports incomplete | Missing debrief structure | Include: what worked, what didn't, risks, follow-ups |
137
+ | Low coverage diversity | Only happy path | Add persona-based and negative scenarios |
138
+
139
+ ## References
140
+
141
+ | Topic | File |
142
+ | ----- | ---- |
143
+ | Exploratory charter templates | `references/exploratory-charters.md` |
144
+ | Persona details & scenarios | `references/personas.md` |
145
+ | Test design techniques | `references/test-design-techniques.md` (qa-testcase-from-docs) |
@@ -0,0 +1,138 @@
1
+ # Exploratory Testing Charter Templates
2
+
3
+ Charter templates for different exploratory testing scenarios. Each charter includes mission, test areas, time-box options, notes template, and debrief structure.
4
+
5
+ ---
6
+
7
+ ## New Feature Charter
8
+
9
+ **Scenario:** First exploration of a newly implemented feature before formal test case execution.
10
+
11
+ ### Mission Statement
12
+ Explore [feature name] to understand behavior, identify obvious defects, and map edge cases for follow-up test design.
13
+
14
+ ### Test Areas
15
+ - **In scope:** [Feature name], [related flows], [configuration options]
16
+ - **Out of scope:** [Unrelated modules], [performance], [automation]
17
+
18
+ ### Time-Box
19
+ - **25 min:** Quick smoke of main flows
20
+ - **45 min:** Main flows + 2–3 alternate paths
21
+ - **90 min:** Full exploration including edge cases and error handling
22
+
23
+ ### Notes Template
24
+ | Observation | Severity | Reproducible? | Notes |
25
+ | ----------- | -------- | ------------- | ----- |
26
+ | | | | |
27
+ | | | | |
28
+
29
+ **Bugs found:** [List IDs or brief descriptions]
30
+ **Ideas for test cases:** [Scenarios to formalize]
31
+ **Questions:** [Clarifications needed from dev/product]
32
+
33
+ ### Debrief Structure
34
+ - **What worked:** Flows that behaved as expected
35
+ - **What didn't:** Defects, confusing UX, missing validation
36
+ - **Risks:** Areas not explored, assumptions, dependencies
37
+ - **Follow-ups:** Test cases to add, bugs to file, areas for deeper exploration
38
+
39
+ ---
40
+
41
+ ## Regression Charter
42
+
43
+ **Scenario:** Broad regression exploration after a release or significant change.
44
+
45
+ ### Mission Statement
46
+ Explore [module/area] to verify core functionality after [change/release]. Focus on high-traffic paths and recently modified areas.
47
+
48
+ ### Test Areas
49
+ - **In scope:** [Core flows], [changed modules], [integration points]
50
+ - **Out of scope:** [Stable, low-risk areas], [new feature deep-dives]
51
+
52
+ ### Time-Box
53
+ - **25 min:** Smoke of critical paths only
54
+ - **45 min:** Critical + important paths
55
+ - **90 min:** Full regression sweep with risk-based depth
56
+
57
+ ### Notes Template
58
+ | Area Explored | Status | Issues |
59
+ | ------------- | ------ | ------ |
60
+ | | Pass / Fail / Blocked | |
61
+ | | | |
62
+
63
+ **Regression failures:** [List]
64
+ **New issues vs. known:** [Differentiate]
65
+ **Areas skipped (time):** [For follow-up]
66
+
67
+ ### Debrief Structure
68
+ - **Pass/Fail summary:** Per area explored
69
+ - **Blockers:** What prevented testing
70
+ - **Comparison to baseline:** Better/worse/same vs. previous version
71
+ - **Follow-ups:** Formal test cases for failures, retest plan
72
+
73
+ ---
74
+
75
+ ## Security Review Charter
76
+
77
+ **Scenario:** Exploratory security-focused session (complements automated security scans).
78
+
79
+ ### Mission Statement
80
+ Explore [feature/module] from a security perspective. Look for injection, auth bypass, data exposure, and privilege escalation risks.
81
+
82
+ ### Test Areas
83
+ - **In scope:** [Auth flows], [input fields], [file upload], [API endpoints], [role-based access]
84
+ - **Out of scope:** [Infrastructure], [third-party components]
85
+
86
+ ### Time-Box
87
+ - **25 min:** Quick auth and input validation checks
88
+ - **45 min:** Auth + input + basic access control
89
+ - **90 min:** Full security review including session handling, CSRF, data exposure
90
+
91
+ ### Notes Template
92
+ | Vulnerability Type | Location | Severity | Steps to Reproduce |
93
+ | ------------------ | -------- | -------- | ------------------ |
94
+ | | | Critical / High / Medium / Low | |
95
+ | | | | |
96
+
97
+ **Attack vectors tried:** [List]
98
+ **Recommendations:** [Mitigations, follow-up scans]
99
+
100
+ ### Debrief Structure
101
+ - **Findings by severity:** Critical/High/Medium/Low
102
+ - **False positives:** Checked and ruled out
103
+ - **Areas not covered:** Time or tool limitations
104
+ - **Follow-ups:** OWASP ZAP scan, penetration test, dev review
105
+
106
+ ---
107
+
108
+ ## Usability Review Charter
109
+
110
+ **Scenario:** Exploratory usability and accessibility review.
111
+
112
+ ### Mission Statement
113
+ Explore [feature/module] from a usability perspective. Assess clarity, discoverability, error handling, and accessibility for different user types.
114
+
115
+ ### Test Areas
116
+ - **In scope:** [User flows], [error messages], [help text], [keyboard nav], [screen reader compatibility]
117
+ - **Out of scope:** [Visual design polish], [performance]
118
+
119
+ ### Time-Box
120
+ - **25 min:** First-time user flow, main friction points
121
+ - **45 min:** First-time + power user flows, error handling
122
+ - **90 min:** Full usability review including accessibility checks
123
+
124
+ ### Notes Template
125
+ | Issue | Location | Type (Clarity / Discoverability / Error / A11y) | Severity |
126
+ | ----- | -------- | ---------------------------------------------- | -------- |
127
+ | | | | |
128
+ | | | | |
129
+
130
+ **Positive observations:** [What works well]
131
+ **User confusion points:** [Where users might get stuck]
132
+ **A11y findings:** [Keyboard, screen reader, contrast]
133
+
134
+ ### Debrief Structure
135
+ - **Usability score (1–5):** Per flow or overall
136
+ - **Top 3 issues:** Highest impact
137
+ - **Accessibility gaps:** WCAG compliance notes
138
+ - **Follow-ups:** UX review, a11y audit, design changes
@@ -0,0 +1,146 @@
1
+ # Persona-Based Testing
2
+
3
+ Detailed persona descriptions for manual and exploratory testing. Use these to derive test scenarios that reflect different user behaviors, goals, and failure modes.
4
+
5
+ ---
6
+
7
+ ## Novice User
8
+
9
+ **Profile:** First-time user, unfamiliar with the system. Easily confused, may ignore hints, gets lost in flows.
10
+
11
+ ### Behaviors
12
+ - Clicks randomly or follows visual cues only
13
+ - Skips onboarding or help text
14
+ - Enters invalid data without reading validation messages
15
+ - Uses back button or closes tab when stuck
16
+ - May abandon flows mid-way
17
+ - Relies on default values, rarely changes settings
18
+
19
+ ### Goals
20
+ - Complete a simple task with minimal learning
21
+ - Understand what the system does without reading documentation
22
+ - Get help when something goes wrong
23
+
24
+ ### Test Scenarios
25
+ - First-time flow without prior knowledge
26
+ - Empty state / no data: what does the user see?
27
+ - Invalid input: are error messages clear and actionable?
28
+ - Dead ends: can the user recover or find a way back?
29
+ - Onboarding: does it explain enough? Can it be skipped?
30
+ - Default values: do they lead to success or confusion?
31
+
32
+ ---
33
+
34
+ ## Power User
35
+
36
+ **Profile:** Experienced user who values efficiency. Uses keyboard shortcuts, bulk actions, advanced features.
37
+
38
+ ### Behaviors
39
+ - Prefers keyboard over mouse (Tab, Enter, shortcuts)
40
+ - Uses bulk operations, import/export, batch actions
41
+ - Pushes limits: max items, max length, edge cases
42
+ - Combines features in unexpected ways
43
+ - Expects consistency across similar flows
44
+ - May use API or CLI if available
45
+
46
+ ### Goals
47
+ - Complete tasks quickly
48
+ - Automate or batch repetitive work
49
+ - Use advanced features without friction
50
+
51
+ ### Test Scenarios
52
+ - Keyboard-only navigation through main flows
53
+ - Bulk operations: select all, bulk delete, bulk edit
54
+ - Boundary values: max length, max items, max file size
55
+ - Shortcuts: do they work? Are they documented?
56
+ - Import/export: large files, malformed data, encoding
57
+ - Feature combinations: use A then B in same session
58
+ - Performance: does it feel fast for power workflows?
59
+
60
+ ---
61
+
62
+ ## Attacker
63
+
64
+ **Profile:** Malicious actor trying to bypass security, inject code, or escalate privileges.
65
+
66
+ ### Behaviors
67
+ - Injects SQL, XSS, command injection in input fields
68
+ - Manipulates URLs, headers, cookies
69
+ - Tries auth bypass: session hijack, token reuse, privilege escalation
70
+ - Tests file upload: executable files, path traversal
71
+ - Probes for information disclosure (stack traces, debug info)
72
+ - Uses automation (scripts, tools) to probe at scale
73
+
74
+ ### Goals
75
+ - Bypass authentication or authorization
76
+ - Extract or corrupt data
77
+ - Disrupt service or degrade quality
78
+
79
+ ### Test Scenarios
80
+ - SQL injection in search, login, form fields
81
+ - XSS in user-generated content, error messages
82
+ - Auth bypass: expired token, modified JWT, session fixation
83
+ - Privilege escalation: access admin functions as regular user
84
+ - File upload: .exe, .php, path traversal (../../../etc/passwd)
85
+ - IDOR: change resource IDs in URLs to access others' data
86
+ - Rate limiting: can brute-force or DoS be triggered?
87
+ - Information disclosure: stack traces, internal URLs in responses
88
+
89
+ ---
90
+
91
+ ## Admin
92
+
93
+ **Profile:** System administrator configuring roles, permissions, and system behavior.
94
+
95
+ ### Behaviors
96
+ - Manages users, roles, permissions
97
+ - Configures system settings, integrations, webhooks
98
+ - Reviews audit logs and activity
99
+ - Handles bulk user operations
100
+ - Expects clear separation of admin vs. user capabilities
101
+ - May use API or admin-only UI
102
+
103
+ ### Goals
104
+ - Configure the system correctly and securely
105
+ - Audit who did what and when
106
+ - Manage access without breaking user experience
107
+
108
+ ### Test Scenarios
109
+ - Role creation and assignment: do permissions apply correctly?
110
+ - Permission boundaries: can admin do X? Can user do X when denied?
111
+ - Audit logs: are actions logged? Can logs be tampered?
112
+ - Configuration changes: do they take effect? Rollback?
113
+ - Bulk operations: deactivate users, change roles
114
+ - Admin vs. user UI: no privilege leakage to non-admin views
115
+ - Integration setup: webhooks, API keys, OAuth — secure storage and usage
116
+
117
+ ---
118
+
119
+ ## Mobile User
120
+
121
+ **Profile:** User on phone or tablet. Touch interaction, small screen, variable network.
122
+
123
+ ### Behaviors
124
+ - Uses touch: tap, swipe, pinch, long-press
125
+ - Holds device in portrait and landscape
126
+ - May have slow or intermittent network
127
+ - Uses thumb for primary interactions (reachability)
128
+ - May switch apps and return (session restore)
129
+ - Expects responsive layout, no horizontal scroll
130
+ - May use mobile-specific features (camera, location)
131
+
132
+ ### Goals
133
+ - Complete tasks on mobile without desktop
134
+ - Have a usable experience on small screens
135
+ - Work offline or with poor connectivity when possible
136
+
137
+ ### Test Scenarios
138
+ - Touch targets: are buttons/links large enough (min 44×44 px)?
139
+ - Thumb reach: can primary actions be reached one-handed?
140
+ - Orientation: portrait and landscape both usable?
141
+ - Responsive layout: no horizontal scroll, readable text
142
+ - Slow network: loading states, timeouts, retry
143
+ - Session restore: return after backgrounding — state preserved?
144
+ - Forms: mobile-friendly inputs (tel, email, date pickers)
145
+ - File upload: camera, gallery — supported and secure?
146
+ - Gestures: swipe, pull-to-refresh — consistent and discoverable?