From sdlc-agents
Use this skill when working as a tester (the api-tester for API testing, the ui-tester for UX/E2E testing) — designing test cases per ISTQB Foundation framework, choosing the right test design technique (Equivalence Partitioning, Boundary Value Analysis, Decision Table, State Transition, Use Case Testing), classifying test levels and types, structuring bug reports. Read before composing a test plan or executing test cases.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdlc-agents:istqb-test-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill encodes ISTQB Foundation Level (CTFL syllabus v4.0) — the de-facto standard for software testing knowledge. We use a **focused subset** suitable for a small-team SDLC pipeline.
This skill encodes ISTQB Foundation Level (CTFL syllabus v4.0) — the de-facto standard for software testing knowledge. We use a focused subset suitable for a small-team SDLC pipeline.
Reference: ISTQB CTFL syllabus, ISO 29119 (test process).
| Level | Who | What | Out of scope here |
|---|---|---|---|
| Unit (component) | Coders themselves | Individual functions / methods | the api-tester / the ui-tester don't write unit tests |
| Integration | Coders + the api-tester | Multiple components / API + DB | the api-tester for API integration |
| System | the api-tester + the ui-tester | End-to-end through real entry points | the api-tester for API system, the ui-tester for UI E2E |
| Acceptance | the initiator | Does it match REQUIREMENTS Acceptance Criteria? | the initiator approves; testers gather evidence |
the api-tester focuses on System level via REST API. the ui-tester focuses on System / Acceptance level via UI.
ISTQB classifies test types into 4:
the api-tester covers: Functional + Non-functional (API perf, basic security like auth/permissions) + Change-related (regression). the ui-tester covers: Functional (UI flows) + Non-functional (usability, accessibility) + Change-related.
This is the core discipline of ISTQB. Every TC must declare which technique it uses.
Group inputs into classes where the system should behave the same. Test ONE value per class.
Example for ?status=... filter:
pending, confirmed, shipped, delivered, cancelled → one class (test confirmed)xyz)pending,shipped)5 classes → 4 TCs (one per class) — not 5+ (don't test every valid status).
For ordered inputs, test boundaries — they're where bugs hide.
For an integer field 1–100:
For string lengths, dates, money amounts — same logic.
For combinations of conditions producing different outcomes. Build a table of rules.
Example: order discount logic
| Condition | Rule 1 | Rule 2 | Rule 3 | Rule 4 |
|---|---|---|---|---|
| Customer is VIP | yes | yes | no | no |
| Order > 5000 RUB | yes | no | yes | no |
| → Discount applied | 15% | 10% | 5% | 0 |
→ 4 TCs, one per rule. Skip combinations that aren't reachable in real flows.
For systems with states (orders, subscriptions, accounts). Test:
cancelled order)the system-analyst's Phase 4 state diagram in SPEC is the source. Generate TCs from it.
End-to-end happy path of a user scenario. Each Acceptance Criterion (Given/When/Then in REQUIREMENTS §6) gives a use case TC.
Example: "Customer self-serves order tracking" → TC walking from /account/orders → click order → see tracking number → click → CDEK page opens.
the api-tester / the ui-tester build use case TCs from REQUIREMENTS Acceptance + SPEC Frontend behaviour.
Based on intuition / past bugs in similar code. Examples:
Useful for edge cases not covered by formal techniques.
Time-boxed, charter-driven open exploration. Less applicable for automated agents; reserved for the initiator's manual final validation.
For each TC declare its purpose:
End-of-test-plan Coverage matrix:
| FR / NFR | TC IDs covering it |
|---|---|
| FR-1 customer sees tracking | TC-1, TC-2, TC-3 |
| FR-2 link opens CDEK | TC-4 |
| NFR-1 list endpoint < 300ms | TC-P1 (perf) |
Every FR / NFR / Acceptance Criterion from REQUIREMENTS must have at least one TC. Gaps = test plan incomplete.
Every bug = one comment in the test sub-issue. Follow ISTQB defect template.
"Tracking doesn't work"
Title: Order tracking link returns 500 when tracking_number contains special chars Severity: major Priority: TBD by the initiator Reproducible: always Environment: Vue 3, Chrome 120, Plane <PROJECT_IDENTIFIER>- Steps:
- Login as customer (test acc 1)
- Open /account/orders/{id} where order has tracking_number='ABC/123'
- Click tracking link Actual: 500 Internal Server Error, browser console shows "URLError: invalid char" Expected: per FR-2, opens https://cdek.ru/track/ABC%2F123 in new tab Affected: Backend: <root_name> (<PROJECT_IDENTIFIER>-) (slash not URL-encoded in serializer.tracking_url) Attachments: https://storage.yandexcloud.net/.../bug-tracking-500.png
After all TCs executed, post final summary comment in test sub-issue:
# Test report — {API | UX} Testing for <PROJECT_IDENTIFIER>-<N>
## Executed
- Total TCs: N
- Passed: N
- Failed: N (see bug comments above)
- Blocked (preconditions not met): N
## Coverage matrix verification
- FR-1: covered by TC-1, TC-2 — passed
- FR-2: covered by TC-3 — failed (bug above)
- NFR-1: covered by TC-P1 — passed (p95 230ms < target 300ms)
## Verdict
- READY FOR REVIEW: yes / no
- If no — what blocks release: {list of blocker bugs}
<mention initiator>
npx claudepluginhub volodchenkov/claude-sdlc-agents --plugin sdlc-agentsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.