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.
- package/README.md +168 -0
- package/bin/cli.js +42 -0
- package/dist/agents/registry.d.ts +5 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +101 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +9 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/dependencies.d.ts +21 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +125 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/installer.d.ts +25 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +437 -0
- package/dist/installer.js.map +1 -0
- package/dist/scaffold.d.ts +27 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +182 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +40 -0
- package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
- package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
- package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
- package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
- package/skills/qa-api-contract-curator/SKILL.md +104 -0
- package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
- package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
- package/skills/qa-browser-data-collector/SKILL.md +132 -0
- package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
- package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
- package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
- package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
- package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
- package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
- package/skills/qa-changelog-analyzer/SKILL.md +134 -0
- package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
- package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
- package/skills/qa-clickup-integration/SKILL.md +166 -0
- package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
- package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
- package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
- package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
- package/skills/qa-codeceptjs-writer/references/config.md +255 -0
- package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
- package/skills/qa-coverage-analyzer/SKILL.md +166 -0
- package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
- package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
- package/skills/qa-coverage-analyzer/references/tools.md +204 -0
- package/skills/qa-cypress-writer/SKILL.md +134 -0
- package/skills/qa-cypress-writer/references/assertions.md +121 -0
- package/skills/qa-cypress-writer/references/best-practices.md +82 -0
- package/skills/qa-cypress-writer/references/config.md +121 -0
- package/skills/qa-cypress-writer/references/patterns.md +170 -0
- package/skills/qa-data-factory/SKILL.md +126 -0
- package/skills/qa-data-factory/references/factory-patterns.md +164 -0
- package/skills/qa-data-factory/references/faker-guide.md +131 -0
- package/skills/qa-diagram-generator/SKILL.md +125 -0
- package/skills/qa-diagram-generator/references/c4-model.md +53 -0
- package/skills/qa-diagram-generator/references/charts.md +58 -0
- package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
- package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
- package/skills/qa-diagram-generator/references/flowchart.md +92 -0
- package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
- package/skills/qa-diagram-generator/references/gantt.md +49 -0
- package/skills/qa-diagram-generator/references/journey.md +50 -0
- package/skills/qa-diagram-generator/references/mindmap.md +75 -0
- package/skills/qa-diagram-generator/references/sequence.md +69 -0
- package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
- package/skills/qa-discovery-interview/SKILL.md +182 -0
- package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
- package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
- package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
- package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
- package/skills/qa-environment-checker/SKILL.md +142 -0
- package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
- package/skills/qa-environment-checker/references/health-checks.md +209 -0
- package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
- package/skills/qa-flaky-detector/SKILL.md +153 -0
- package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
- package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
- package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
- package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
- package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
- package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
- package/skills/qa-httpx-writer/SKILL.md +138 -0
- package/skills/qa-httpx-writer/references/assertions.md +195 -0
- package/skills/qa-httpx-writer/references/best-practices.md +140 -0
- package/skills/qa-httpx-writer/references/config.md +212 -0
- package/skills/qa-httpx-writer/references/patterns.md +262 -0
- package/skills/qa-jest-writer/SKILL.md +131 -0
- package/skills/qa-jest-writer/references/assertions.md +125 -0
- package/skills/qa-jest-writer/references/best-practices.md +136 -0
- package/skills/qa-jest-writer/references/config.md +134 -0
- package/skills/qa-jest-writer/references/patterns.md +172 -0
- package/skills/qa-jira-integration/SKILL.md +135 -0
- package/skills/qa-jira-integration/references/api-patterns.md +143 -0
- package/skills/qa-jira-integration/references/field-mapping.md +79 -0
- package/skills/qa-jira-integration/references/xray-integration.md +85 -0
- package/skills/qa-jmeter-writer/SKILL.md +171 -0
- package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
- package/skills/qa-jmeter-writer/references/config.md +204 -0
- package/skills/qa-jmeter-writer/references/patterns.md +242 -0
- package/skills/qa-junit5-writer/SKILL.md +157 -0
- package/skills/qa-junit5-writer/references/assertions.md +118 -0
- package/skills/qa-junit5-writer/references/config.md +97 -0
- package/skills/qa-junit5-writer/references/patterns.md +162 -0
- package/skills/qa-k6-writer/SKILL.md +155 -0
- package/skills/qa-k6-writer/references/best-practices.md +236 -0
- package/skills/qa-k6-writer/references/config.md +219 -0
- package/skills/qa-k6-writer/references/patterns.md +304 -0
- package/skills/qa-linear-integration/SKILL.md +137 -0
- package/skills/qa-linear-integration/references/api-patterns.md +249 -0
- package/skills/qa-linear-integration/references/field-mapping.md +121 -0
- package/skills/qa-locust-writer/SKILL.md +151 -0
- package/skills/qa-locust-writer/references/best-practices.md +126 -0
- package/skills/qa-locust-writer/references/config.md +170 -0
- package/skills/qa-locust-writer/references/patterns.md +235 -0
- package/skills/qa-manual-test-designer/SKILL.md +145 -0
- package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
- package/skills/qa-manual-test-designer/references/personas.md +146 -0
- package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
- package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
- package/skills/qa-mobile-test-writer/SKILL.md +144 -0
- package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
- package/skills/qa-mobile-test-writer/references/config.md +309 -0
- package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
- package/skills/qa-nfr-analyst/SKILL.md +177 -0
- package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
- package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
- package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
- package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
- package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
- package/skills/qa-orchestrator/SKILL.md +132 -0
- package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
- package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
- package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
- package/skills/qa-pact-writer/SKILL.md +133 -0
- package/skills/qa-pact-writer/references/best-practices.md +100 -0
- package/skills/qa-pact-writer/references/config.md +135 -0
- package/skills/qa-pact-writer/references/patterns.md +161 -0
- package/skills/qa-plan-creator/SKILL.md +139 -0
- package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
- package/skills/qa-plan-creator/references/migration-plan.md +44 -0
- package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
- package/skills/qa-plan-creator/references/performance-plan.md +44 -0
- package/skills/qa-plan-creator/references/regression-plan.md +45 -0
- package/skills/qa-plan-creator/references/release-plan.md +45 -0
- package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
- package/skills/qa-plan-creator/references/test-plan.md +59 -0
- package/skills/qa-plan-creator/references/uat-plan.md +43 -0
- package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
- package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
- package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
- package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
- package/skills/qa-playwright-py-writer/SKILL.md +156 -0
- package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
- package/skills/qa-playwright-py-writer/references/config.md +195 -0
- package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
- package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
- package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
- package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
- package/skills/qa-playwright-ts-writer/references/config.md +144 -0
- package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
- package/skills/qa-pytest-writer/SKILL.md +145 -0
- package/skills/qa-pytest-writer/references/assertions.md +149 -0
- package/skills/qa-pytest-writer/references/best-practices.md +97 -0
- package/skills/qa-pytest-writer/references/config.md +176 -0
- package/skills/qa-pytest-writer/references/patterns.md +251 -0
- package/skills/qa-qase-integration/SKILL.md +149 -0
- package/skills/qa-qase-integration/references/api-reference.md +354 -0
- package/skills/qa-qase-integration/references/ci-integration.md +196 -0
- package/skills/qa-qase-integration/references/field-mapping.md +157 -0
- package/skills/qa-requirements-generator/SKILL.md +152 -0
- package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
- package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
- package/skills/qa-rest-assured-writer/SKILL.md +137 -0
- package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
- package/skills/qa-rest-assured-writer/references/config.md +124 -0
- package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
- package/skills/qa-risk-analyzer/SKILL.md +158 -0
- package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
- package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
- package/skills/qa-robot-framework-writer/SKILL.md +147 -0
- package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
- package/skills/qa-robot-framework-writer/references/config.md +204 -0
- package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
- package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
- package/skills/qa-security-test-writer/SKILL.md +123 -0
- package/skills/qa-security-test-writer/references/best-practices.md +155 -0
- package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
- package/skills/qa-security-test-writer/references/zap-config.md +258 -0
- package/skills/qa-selenium-java-writer/SKILL.md +143 -0
- package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
- package/skills/qa-selenium-java-writer/references/config.md +143 -0
- package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
- package/skills/qa-selenium-py-writer/SKILL.md +150 -0
- package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
- package/skills/qa-selenium-py-writer/references/config.md +224 -0
- package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
- package/skills/qa-shortcut-integration/SKILL.md +143 -0
- package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
- package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
- package/skills/qa-spec-auditor/SKILL.md +162 -0
- package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
- package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
- package/skills/qa-spec-writer/SKILL.md +143 -0
- package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
- package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
- package/skills/qa-spring-test-writer/SKILL.md +170 -0
- package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
- package/skills/qa-spring-test-writer/references/config.md +179 -0
- package/skills/qa-spring-test-writer/references/patterns.md +235 -0
- package/skills/qa-supertest-writer/SKILL.md +150 -0
- package/skills/qa-supertest-writer/references/assertions.md +192 -0
- package/skills/qa-supertest-writer/references/best-practices.md +102 -0
- package/skills/qa-supertest-writer/references/config.md +166 -0
- package/skills/qa-supertest-writer/references/patterns.md +242 -0
- package/skills/qa-task-creator/SKILL.md +142 -0
- package/skills/qa-task-creator/references/linking-patterns.md +127 -0
- package/skills/qa-task-creator/references/task-types.md +169 -0
- package/skills/qa-task-creator/templates/task-template.md +24 -0
- package/skills/qa-test-doc-compiler/SKILL.md +114 -0
- package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
- package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
- package/skills/qa-test-healer/SKILL.md +101 -0
- package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
- package/skills/qa-test-healer/references/fix-strategies.md +177 -0
- package/skills/qa-test-reporter/SKILL.md +130 -0
- package/skills/qa-test-reporter/references/best-practices.md +162 -0
- package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
- package/skills/qa-test-reporter/references/report-formats.md +287 -0
- package/skills/qa-test-reviewer/SKILL.md +142 -0
- package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
- package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
- package/skills/qa-test-strategy/SKILL.md +133 -0
- package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
- package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
- package/skills/qa-test-strategy/references/testing-types.md +143 -0
- package/skills/qa-testcase-from-docs/SKILL.md +161 -0
- package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
- package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
- package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
- package/skills/qa-testcase-from-ui/SKILL.md +109 -0
- package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
- package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
- package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
- package/skills/qa-visual-regression-writer/SKILL.md +175 -0
- package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
- package/skills/qa-visual-regression-writer/references/config.md +220 -0
- package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
- package/skills/qa-vitest-writer/SKILL.md +141 -0
- package/skills/qa-vitest-writer/references/assertions.md +105 -0
- package/skills/qa-vitest-writer/references/best-practices.md +62 -0
- package/skills/qa-vitest-writer/references/config.md +127 -0
- package/skills/qa-vitest-writer/references/patterns.md +141 -0
- package/skills/qa-webdriverio-writer/SKILL.md +145 -0
- package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
- package/skills/qa-webdriverio-writer/references/config.md +240 -0
- package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# CodeceptJS Test Patterns
|
|
2
|
+
|
|
3
|
+
Common patterns for scenario-driven E2E testing with CodeceptJS.
|
|
4
|
+
|
|
5
|
+
## Scenario Syntax
|
|
6
|
+
|
|
7
|
+
### Feature and Scenario Blocks
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
Feature('Login');
|
|
11
|
+
|
|
12
|
+
Scenario('user can log in with valid credentials', ({ I }) => {
|
|
13
|
+
I.amOnPage('/login');
|
|
14
|
+
I.fillField('Username', 'john');
|
|
15
|
+
I.fillField('Password', 'secret');
|
|
16
|
+
I.click('Sign In');
|
|
17
|
+
I.see('Welcome');
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Common I Actions
|
|
22
|
+
|
|
23
|
+
| Action | Example |
|
|
24
|
+
|--------|---------|
|
|
25
|
+
| Navigate | `I.amOnPage('/')` or `I.amOnPage('https://example.com')` |
|
|
26
|
+
| Click | `I.click('Submit')` or `I.click('.btn-primary')` |
|
|
27
|
+
| Fill field | `I.fillField('Username', 'john')` or `I.fillField('#email', 'a@b.com')` |
|
|
28
|
+
| See text | `I.see('Welcome')` or `I.see('Dashboard', 'h1')` |
|
|
29
|
+
| See element | `I.seeElement('.user-menu')` |
|
|
30
|
+
| Grab text | `const text = await I.grabTextFrom('.title')` |
|
|
31
|
+
| Select option | `I.selectOption('Country', 'US')` |
|
|
32
|
+
| Check checkbox | `I.checkOption('Subscribe')` |
|
|
33
|
+
| Wait | `I.wait(2)` or `I.waitForVisible('.loaded')` |
|
|
34
|
+
|
|
35
|
+
### Locator Strategies
|
|
36
|
+
|
|
37
|
+
CodeceptJS resolves locators in order: ID, CSS, XPath, name attribute, label text, link/button text.
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// By text (link/button)
|
|
41
|
+
I.click('Login');
|
|
42
|
+
I.click('Submit');
|
|
43
|
+
|
|
44
|
+
// By label (for fillField)
|
|
45
|
+
I.fillField('Email', 'user@example.com');
|
|
46
|
+
|
|
47
|
+
// By CSS
|
|
48
|
+
I.click('.submit-btn');
|
|
49
|
+
I.seeElement('#header');
|
|
50
|
+
|
|
51
|
+
// By XPath
|
|
52
|
+
I.click('//button[contains(., "Save")]');
|
|
53
|
+
|
|
54
|
+
// Strict locators (explicit type)
|
|
55
|
+
I.seeElement({ css: 'div.user' });
|
|
56
|
+
I.click({ xpath: '//button[@type="submit"]' });
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## within() for Scoped Locators
|
|
60
|
+
|
|
61
|
+
Scope actions to a specific container:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
Scenario('interact within modal', ({ I }) => {
|
|
65
|
+
I.amOnPage('/');
|
|
66
|
+
I.click('Open modal');
|
|
67
|
+
within('.modal', () => {
|
|
68
|
+
I.fillField('Name', 'Test');
|
|
69
|
+
I.click('Save');
|
|
70
|
+
});
|
|
71
|
+
I.see('Saved');
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## BDD with Gherkin
|
|
76
|
+
|
|
77
|
+
### Feature File (.feature)
|
|
78
|
+
|
|
79
|
+
```gherkin
|
|
80
|
+
Feature: Checkout
|
|
81
|
+
In order to buy products
|
|
82
|
+
As a customer
|
|
83
|
+
I need to be able to checkout the selected products
|
|
84
|
+
|
|
85
|
+
Scenario: order several products
|
|
86
|
+
Given I have product with $600 price in my cart
|
|
87
|
+
And I have product with $1000 price in my cart
|
|
88
|
+
When I go to checkout process
|
|
89
|
+
Then I should see that total number of products is 2
|
|
90
|
+
And my order amount is $1600
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step Definitions
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
// step_definitions/checkout_steps.ts
|
|
97
|
+
const { I, productPage } = inject();
|
|
98
|
+
|
|
99
|
+
Given(/I have product with \$(\d+) price in my cart/, async (price) => {
|
|
100
|
+
I.amOnPage('/products');
|
|
101
|
+
await productPage.addProduct({ price: parseInt(price) });
|
|
102
|
+
I.click('Add to cart');
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
When('I go to checkout process', () => {
|
|
106
|
+
I.click('Checkout');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
Then('I should see that total number of products is {int}', (num) => {
|
|
110
|
+
I.see(num.toString(), '.cart-count');
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
Then('my order amount is {int}', (sum) => {
|
|
114
|
+
I.see(`$${sum}`, '.order-total');
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Background and Scenario Outline
|
|
119
|
+
|
|
120
|
+
```gherkin
|
|
121
|
+
Feature: Dashboard
|
|
122
|
+
|
|
123
|
+
Background:
|
|
124
|
+
Given I am logged in as administrator
|
|
125
|
+
And I open dashboard page
|
|
126
|
+
|
|
127
|
+
Scenario Outline: view report for role
|
|
128
|
+
When I select role "<role>"
|
|
129
|
+
Then I should see "<report>" report
|
|
130
|
+
Examples:
|
|
131
|
+
| role | report |
|
|
132
|
+
| admin | Full |
|
|
133
|
+
| user | Limited |
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Page Objects
|
|
137
|
+
|
|
138
|
+
### Define Page Object
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
// pages/LoginPage.ts
|
|
142
|
+
export default class LoginPage {
|
|
143
|
+
constructor(private I: CodeceptJS.I) {}
|
|
144
|
+
|
|
145
|
+
async login(email: string, password: string) {
|
|
146
|
+
this.I.fillField('Email', email);
|
|
147
|
+
this.I.fillField('Password', password);
|
|
148
|
+
this.I.click('Sign In');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async open() {
|
|
152
|
+
this.I.amOnPage('/login');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
get errorMessage() {
|
|
156
|
+
return '.alert-error';
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Use in Tests (inject)
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
// login_test.ts
|
|
165
|
+
const { I, loginPage } = inject();
|
|
166
|
+
|
|
167
|
+
Scenario('login flow', () => {
|
|
168
|
+
loginPage.open();
|
|
169
|
+
loginPage.login('user@example.com', 'secret');
|
|
170
|
+
I.see('Dashboard');
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Use in Step Definitions
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
const { I, loginPage } = inject();
|
|
178
|
+
|
|
179
|
+
Given('I am logged in', () => {
|
|
180
|
+
loginPage.open();
|
|
181
|
+
loginPage.login('admin@example.com', 'admin123');
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Data-Driven Testing
|
|
186
|
+
|
|
187
|
+
### Data().Scenario
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
const accounts = new DataTable(['login', 'password']);
|
|
191
|
+
accounts.add(['davert', '123456']);
|
|
192
|
+
accounts.add(['admin', 'admin123']);
|
|
193
|
+
|
|
194
|
+
Data(accounts).Scenario('Test Login', ({ I, current }) => {
|
|
195
|
+
I.amOnPage('/login');
|
|
196
|
+
I.fillField('Username', current.login);
|
|
197
|
+
I.fillField('Password', current.password);
|
|
198
|
+
I.click('Sign In');
|
|
199
|
+
I.see('Welcome ' + current.login);
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Data from Array or Generator
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
Data(['chrome', 'firefox']).Scenario('cross-browser', ({ I, current }) => {
|
|
207
|
+
I.amOnPage('/');
|
|
208
|
+
I.see('Home');
|
|
209
|
+
});
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Custom Helpers
|
|
213
|
+
|
|
214
|
+
### Define Custom Helper
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// helpers/MyHelper.ts
|
|
218
|
+
import { Helper } from 'codeceptjs';
|
|
219
|
+
|
|
220
|
+
class MyHelper extends Helper {
|
|
221
|
+
async loginAs(user: string) {
|
|
222
|
+
const { I } = this.helpers;
|
|
223
|
+
await I.amOnPage('/login');
|
|
224
|
+
await I.fillField('Username', user);
|
|
225
|
+
await I.fillField('Password', 'secret');
|
|
226
|
+
await I.click('Sign In');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export = MyHelper;
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Use Custom Helper
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// In codecept.conf.ts
|
|
237
|
+
helpers: {
|
|
238
|
+
Playwright: { ... },
|
|
239
|
+
MyHelper: {}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// In test
|
|
243
|
+
const { I, MyHelper } = inject();
|
|
244
|
+
Scenario('test', async () => {
|
|
245
|
+
await MyHelper.loginAs('admin');
|
|
246
|
+
I.see('Dashboard');
|
|
247
|
+
});
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## pause() for Debugging
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
Scenario('debug flow', ({ I }) => {
|
|
254
|
+
I.amOnPage('/');
|
|
255
|
+
I.fillField('Search', 'test');
|
|
256
|
+
pause(); // Enters interactive console; inspect state, run I.* commands
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Forms and Validation
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
Scenario('submit registration form', ({ I }) => {
|
|
264
|
+
I.amOnPage('/register');
|
|
265
|
+
I.fillField('Email', 'new@example.com');
|
|
266
|
+
I.fillField('Password', 'SecurePass123');
|
|
267
|
+
I.checkOption('Terms');
|
|
268
|
+
I.selectOption('Country', 'United States');
|
|
269
|
+
I.click('Create account');
|
|
270
|
+
I.see('Welcome');
|
|
271
|
+
});
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Async and Promises
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
Scenario('grab and assert', async ({ I }) => {
|
|
278
|
+
I.amOnPage('/dashboard');
|
|
279
|
+
const count = await I.grabTextFrom('.item-count');
|
|
280
|
+
const num = parseInt(count, 10);
|
|
281
|
+
if (num > 0) {
|
|
282
|
+
I.seeElement('.items-list');
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
```
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-coverage-analyzer
|
|
3
|
+
description: Analyze test coverage across three dimensions -- requirements/model coverage via RTM, technique coverage per ISO 29119-4, and code coverage via Istanbul/V8/JaCoCo -- with risk-based gap recommendations.
|
|
4
|
+
output_dir: reports/coverage
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# QA Coverage Analyzer
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Perform multi-dimensional test coverage analysis across requirements traceability, test design techniques, and code coverage. Identify gaps, prioritize by risk, and produce actionable recommendations for improving test effectiveness.
|
|
12
|
+
|
|
13
|
+
## Trigger Phrases
|
|
14
|
+
|
|
15
|
+
- "Analyze test coverage" / "Coverage analysis for [project/module]"
|
|
16
|
+
- "Requirements traceability matrix" / "RTM coverage"
|
|
17
|
+
- "Technique coverage" / "ISO 29119-4 coverage"
|
|
18
|
+
- "Code coverage report" / "Line/branch coverage analysis"
|
|
19
|
+
- "Coverage gaps" / "Uncovered requirements"
|
|
20
|
+
- "Coverage dashboard" / "Coverage heatmap"
|
|
21
|
+
- "Risk-based coverage recommendations"
|
|
22
|
+
|
|
23
|
+
## Three Coverage Dimensions
|
|
24
|
+
|
|
25
|
+
| Dimension | What It Measures | Key Artifacts |
|
|
26
|
+
|-----------|------------------|----------------|
|
|
27
|
+
| **1. Requirements/Model** | Which requirements have tests; RTM completeness | RTM (Req → Model → Test → Execution) |
|
|
28
|
+
| **2. Technique** | Which ISO 29119-4 techniques applied | EP, BVA, decision tables, state transitions |
|
|
29
|
+
| **3. Code** | Line, branch, condition, function coverage | Istanbul, V8, JaCoCo, coverage.py, SonarQube |
|
|
30
|
+
|
|
31
|
+
See `references/coverage-dimensions.md` for detailed measurement methods.
|
|
32
|
+
|
|
33
|
+
## Dimension 1: Requirements/Model Coverage
|
|
34
|
+
|
|
35
|
+
**Model:** Requirement → Test Model → Test Case → Execution
|
|
36
|
+
|
|
37
|
+
- **Track:** Which requirements have linked test models and test cases
|
|
38
|
+
- **Identify gaps:** Requirements with no tests, tests with no execution, orphan tests
|
|
39
|
+
- **Metrics:** % requirements covered, % executed, traceability completeness
|
|
40
|
+
|
|
41
|
+
**Inputs:** Requirements doc, RTM, test case inventory, execution results (Zephyr, TestRail, etc.)
|
|
42
|
+
|
|
43
|
+
## Dimension 2: Technique Coverage (ISO 29119-4)
|
|
44
|
+
|
|
45
|
+
**Techniques:** Equivalence Partitioning (EP), Boundary Value Analysis (BVA), Decision Tables, State Transition, Use Case, Classification Trees
|
|
46
|
+
|
|
47
|
+
- **Track:** Which techniques applied per requirement/module
|
|
48
|
+
- **Identify gaps:** Requirements tested with only one technique; modules with technique imbalance
|
|
49
|
+
- **Metrics:** Technique distribution, technique-per-requirement ratio
|
|
50
|
+
|
|
51
|
+
**Inputs:** Test case metadata (technique tags), requirements, test design docs
|
|
52
|
+
|
|
53
|
+
## Dimension 3: Code Coverage
|
|
54
|
+
|
|
55
|
+
**Metrics:** Line, branch, condition, function coverage
|
|
56
|
+
|
|
57
|
+
| Language/Stack | Tool | Output Format |
|
|
58
|
+
|----------------|------|---------------|
|
|
59
|
+
| JavaScript/TypeScript | Istanbul (c8, nyc), V8 | lcov, json-summary |
|
|
60
|
+
| Java | JaCoCo | xml, html |
|
|
61
|
+
| Python | coverage.py | xml, html, json |
|
|
62
|
+
| SonarQube | SonarQube | Unified dashboard |
|
|
63
|
+
|
|
64
|
+
See `references/tools.md` for setup and integration.
|
|
65
|
+
|
|
66
|
+
## Outputs
|
|
67
|
+
|
|
68
|
+
1. **Coverage Dashboard** — Summary of all three dimensions with percentages and trends
|
|
69
|
+
2. **Coverage Gaps List** — Uncovered requirements, low-technique areas, low-code-coverage modules
|
|
70
|
+
3. **Risk-Based Recommendations** — High-risk uncovered areas prioritized; suggested actions
|
|
71
|
+
4. **Heatmap by Module** — Visual (via qa-diagram-generator) showing coverage intensity per module
|
|
72
|
+
|
|
73
|
+
### Dashboard Template
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
# Coverage Dashboard
|
|
77
|
+
|
|
78
|
+
## Summary
|
|
79
|
+
| Dimension | Coverage | Status |
|
|
80
|
+
|-----------|----------|--------|
|
|
81
|
+
| Requirements | X% | ✅/⚠️/❌ |
|
|
82
|
+
| Technique | X techniques avg | ✅/⚠️/❌ |
|
|
83
|
+
| Code | Line X%, Branch Y% | ✅/⚠️/❌ |
|
|
84
|
+
|
|
85
|
+
## Gaps
|
|
86
|
+
- [Req ID] Uncovered
|
|
87
|
+
- [Module] Low technique diversity
|
|
88
|
+
- [File/Module] Low code coverage
|
|
89
|
+
|
|
90
|
+
## Risk-Based Recommendations
|
|
91
|
+
1. [High] ...
|
|
92
|
+
2. [Medium] ...
|
|
93
|
+
3. [Low] ...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Workflow
|
|
97
|
+
|
|
98
|
+
1. **Gather inputs:** RTM, test cases, execution results, code coverage reports
|
|
99
|
+
2. **Analyze each dimension:** Compute coverage per dimension (see `references/coverage-dimensions.md`)
|
|
100
|
+
3. **Identify gaps:** Uncovered requirements, technique-poor areas, low-code-coverage modules
|
|
101
|
+
4. **Prioritize by risk:** Use risk matrix (see qa-test-strategy `references/risk-matrix.md`); high-risk + low coverage = top priority
|
|
102
|
+
5. **Generate outputs:** Dashboard, gaps list, recommendations, heatmap
|
|
103
|
+
6. **Historical tracking:** Use Memory MCP to store trends for comparison over time
|
|
104
|
+
|
|
105
|
+
## MCP Tools Used
|
|
106
|
+
|
|
107
|
+
- **Sequential Thinking MCP:** For decomposition of complex coverage analysis; reconciling conflicting signals across dimensions; prioritizing gaps.
|
|
108
|
+
- **Memory MCP:** For historical coverage tracking; trend comparison (sprint-over-sprint, release-over-release).
|
|
109
|
+
|
|
110
|
+
## Integration with Other Skills
|
|
111
|
+
|
|
112
|
+
| Need | Skill | Usage |
|
|
113
|
+
|------|-------|-------|
|
|
114
|
+
| RTM, test cases from requirements | qa-testcase-from-docs | Source for requirements/model coverage |
|
|
115
|
+
| Test design techniques | qa-testcase-from-docs | `references/test-design-techniques.md` |
|
|
116
|
+
| Risk matrix | qa-test-strategy | `references/risk-matrix.md` |
|
|
117
|
+
| Heatmap, charts | qa-diagram-generator | Coverage heatmap, quadrant charts |
|
|
118
|
+
| NFR thresholds | qa-nfr-analyst | Coverage targets as NFRs |
|
|
119
|
+
|
|
120
|
+
## Scope
|
|
121
|
+
|
|
122
|
+
**Can do (autonomous):**
|
|
123
|
+
- Analyze coverage across all three dimensions from provided artifacts
|
|
124
|
+
- Produce coverage dashboard, gaps list, risk-based recommendations
|
|
125
|
+
- Call qa-diagram-generator for heatmaps and charts
|
|
126
|
+
- Use Sequential Thinking for complex analysis; Memory for historical tracking
|
|
127
|
+
- Reference coverage-dimensions, tools, best-practices
|
|
128
|
+
|
|
129
|
+
**Cannot do (requires confirmation):**
|
|
130
|
+
- Change coverage thresholds set by stakeholders
|
|
131
|
+
- Override organizational coverage policy
|
|
132
|
+
- Modify test code or production code
|
|
133
|
+
|
|
134
|
+
**Will not do (out of scope):**
|
|
135
|
+
- Execute tests or generate coverage reports (consume existing reports)
|
|
136
|
+
- Implement fixes for coverage gaps
|
|
137
|
+
- Deploy or modify production systems
|
|
138
|
+
|
|
139
|
+
## Quality Checklist
|
|
140
|
+
|
|
141
|
+
- [ ] All three dimensions analyzed (requirements, technique, code)
|
|
142
|
+
- [ ] Gaps list includes requirement IDs, modules, and file paths where applicable
|
|
143
|
+
- [ ] Recommendations prioritized by risk (high/medium/low)
|
|
144
|
+
- [ ] Dashboard includes percentages and status indicators
|
|
145
|
+
- [ ] Heatmap generated for module-level view when requested
|
|
146
|
+
- [ ] References to coverage-dimensions, tools, best-practices correct
|
|
147
|
+
- [ ] No hardcoded secrets
|
|
148
|
+
|
|
149
|
+
## Troubleshooting
|
|
150
|
+
|
|
151
|
+
| Symptom | Likely Cause | Fix |
|
|
152
|
+
|---------|--------------|-----|
|
|
153
|
+
| Missing RTM | No traceability in place | Run qa-testcase-from-docs to build RTM; ask for requirement IDs |
|
|
154
|
+
| Technique tags absent | Test cases not tagged | Add technique metadata; use test-design-techniques reference |
|
|
155
|
+
| Code coverage format unknown | Tool output not recognized | Check tools.md for supported formats; request lcov/xml |
|
|
156
|
+
| All dimensions green but quality issues | Coverage ≠ quality | Emphasize technique diversity; recommend exploratory testing |
|
|
157
|
+
| Recommendations too generic | Insufficient risk context | Request risk matrix; use risk-matrix reference |
|
|
158
|
+
| Historical comparison fails | No prior data in Memory | Store current run in Memory for future comparison |
|
|
159
|
+
|
|
160
|
+
## Reference Files
|
|
161
|
+
|
|
162
|
+
| Topic | Reference |
|
|
163
|
+
|-------|-----------|
|
|
164
|
+
| Coverage dimensions | `references/coverage-dimensions.md` |
|
|
165
|
+
| Coverage tools | `references/tools.md` |
|
|
166
|
+
| Best practices | `references/best-practices.md` |
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Coverage Analysis Best Practices
|
|
2
|
+
|
|
3
|
+
Meaningful thresholds, risk-based prioritization, and avoiding common pitfalls when analyzing test coverage.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Meaningful Thresholds
|
|
8
|
+
|
|
9
|
+
### Avoid Arbitrary Targets
|
|
10
|
+
|
|
11
|
+
| Bad | Better |
|
|
12
|
+
|-----|--------|
|
|
13
|
+
| "We need 100% coverage" | Set targets by risk: critical paths 90%, utilities 60% |
|
|
14
|
+
| Same threshold for all modules | Different thresholds per module type (core vs. glue) |
|
|
15
|
+
| Line-only focus | Include branch/condition where logic is complex |
|
|
16
|
+
|
|
17
|
+
### Suggested Ranges (Adjust per Project)
|
|
18
|
+
|
|
19
|
+
| Dimension | Conservative | Typical | Aggressive |
|
|
20
|
+
|-----------|--------------|---------|------------|
|
|
21
|
+
| Requirements | 95% | 90% | 85% |
|
|
22
|
+
| Technique (≥2 per req) | 80% | 70% | 60% |
|
|
23
|
+
| Code (line) | 85% | 75% | 65% |
|
|
24
|
+
| Code (branch) | 75% | 65% | 55% |
|
|
25
|
+
|
|
26
|
+
### Per-Module Thresholds
|
|
27
|
+
|
|
28
|
+
- **Critical (auth, payment, core business):** 85%+ line, 75%+ branch
|
|
29
|
+
- **Important (API, integrations):** 75%+ line, 65%+ branch
|
|
30
|
+
- **Supporting (utils, helpers):** 60%+ line
|
|
31
|
+
- **Generated/boilerplate:** Exclude from coverage or set low target
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Risk-Based Prioritization
|
|
36
|
+
|
|
37
|
+
### Apply Risk to Gaps
|
|
38
|
+
|
|
39
|
+
1. **Identify risk** per requirement/module (use qa-test-strategy `references/risk-matrix.md`)
|
|
40
|
+
2. **Score gaps:** Uncovered high-risk = highest priority
|
|
41
|
+
3. **Order recommendations:** High → Medium → Low
|
|
42
|
+
|
|
43
|
+
### Priority Matrix
|
|
44
|
+
|
|
45
|
+
| Risk | Coverage Gap | Action |
|
|
46
|
+
|------|--------------|--------|
|
|
47
|
+
| High | Uncovered | Immediate: add tests |
|
|
48
|
+
| High | Low technique | Add EP, BVA, DT, or ST |
|
|
49
|
+
| High | Low code | Increase automation |
|
|
50
|
+
| Medium | Uncovered | Plan for next sprint |
|
|
51
|
+
| Medium | Low technique | Schedule technique review |
|
|
52
|
+
| Low | Any | Backlog or accept |
|
|
53
|
+
|
|
54
|
+
### Focus Areas First
|
|
55
|
+
|
|
56
|
+
1. Authentication and authorization
|
|
57
|
+
2. Payment and financial logic
|
|
58
|
+
3. Data validation and sanitization
|
|
59
|
+
4. Critical user journeys
|
|
60
|
+
5. Integration points with external systems
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Technique Coverage Best Practices
|
|
65
|
+
|
|
66
|
+
### Avoid Single-Technique Bias
|
|
67
|
+
|
|
68
|
+
- **EP only:** May miss boundaries and invalid combinations
|
|
69
|
+
- **BVA only:** May miss equivalence classes
|
|
70
|
+
- **Happy path only:** Miss negative and edge cases
|
|
71
|
+
|
|
72
|
+
### Technique Selection by Domain
|
|
73
|
+
|
|
74
|
+
| Domain | Recommended Techniques |
|
|
75
|
+
|--------|------------------------|
|
|
76
|
+
| Input validation | EP, BVA |
|
|
77
|
+
| Business rules | Decision table |
|
|
78
|
+
| Workflows | State transition, use case |
|
|
79
|
+
| APIs | EP, BVA, decision table (for status codes) |
|
|
80
|
+
| UI flows | Use case, state transition |
|
|
81
|
+
|
|
82
|
+
### Tagging Discipline
|
|
83
|
+
|
|
84
|
+
- Tag every test case with at least one technique
|
|
85
|
+
- Use consistent abbreviations (EP, BVA, DT, ST, UC, CT)
|
|
86
|
+
- Review quarterly: are techniques balanced?
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Code Coverage Pitfalls
|
|
91
|
+
|
|
92
|
+
### Don't Chase 100%
|
|
93
|
+
|
|
94
|
+
- Diminishing returns above ~85% line coverage
|
|
95
|
+
- Some code is defensive, error paths, or hard to trigger
|
|
96
|
+
- Focus on high-risk and frequently changed code
|
|
97
|
+
|
|
98
|
+
### Exclude Appropriately
|
|
99
|
+
|
|
100
|
+
- Generated code (e.g., OpenAPI clients)
|
|
101
|
+
- Configuration files
|
|
102
|
+
- Test files themselves
|
|
103
|
+
- Third-party code
|
|
104
|
+
|
|
105
|
+
### Branch vs. Line
|
|
106
|
+
|
|
107
|
+
- Branch coverage reveals untested decision paths
|
|
108
|
+
- Prioritize branch coverage for complex conditionals (`if (a && b || c)`)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Dashboard and Reporting
|
|
113
|
+
|
|
114
|
+
### Keep Dashboards Actionable
|
|
115
|
+
|
|
116
|
+
- Show gaps, not just percentages
|
|
117
|
+
- Link to specific requirements, test cases, files
|
|
118
|
+
- Include trend (improving vs. declining)
|
|
119
|
+
|
|
120
|
+
### Heatmap Best Practices
|
|
121
|
+
|
|
122
|
+
- Use color scale: red (low) → yellow → green (high)
|
|
123
|
+
- Group by module or feature
|
|
124
|
+
- Highlight modules below threshold
|
|
125
|
+
|
|
126
|
+
### Frequency
|
|
127
|
+
|
|
128
|
+
- **Code coverage:** Every CI run
|
|
129
|
+
- **Requirements/technique:** Per sprint or release
|
|
130
|
+
- **Full three-dimension analysis:** Per major release or quarterly
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Integration with QA Workflow
|
|
135
|
+
|
|
136
|
+
| Phase | Coverage Activity |
|
|
137
|
+
|-------|-------------------|
|
|
138
|
+
| Requirements | Define traceability; assign IDs |
|
|
139
|
+
| Test design | Apply techniques; tag test cases |
|
|
140
|
+
| Implementation | Run coverage in CI; set gates |
|
|
141
|
+
| Release | Full three-dimension analysis; gap report |
|
|
142
|
+
| Retrospective | Review trends; adjust thresholds |
|