/qa-perf
Phase: 3 - Design
Domain: Performance
Command: /qa-perf
Prerequisite: qa-plan.md must exist, .NET 8 SDK required
Allowed tools: Bash, Read, Write
What it does
Generates a dq-nbomber load test YAML configuration from your OpenAPI or GraphQL schema. The configuration describes which endpoints to load-test, at what concurrency, for how long, and what thresholds must pass.
How it works
- Reads
qa-plan.mdfor performance scope - Reads
dq-qa.config.jsonforperformance.schemaUrl,performance.baseUrl, andperformance.thresholds - Runs
dq-nbomber generateto produce the YAML config - Reviews the generated config and asks if any scenarios need adjustment
- Validates the config with
dq-nbomber validate
Generated config example
version: 1
baseUrl: https://api.example.com
scenarios:
- name: Login endpoint load
endpoint: POST /auth/login
concurrentUsers: 50
duration: 60s
thresholds:
p95: 300ms
errorRate: 1%
- name: Product listing load
endpoint: GET /products
concurrentUsers: 100
duration: 60s
thresholds:
p95: 200ms
errorRate: 0.5%Thresholds
Thresholds are sourced from dq-qa.config.json but can be overridden per-scenario. If a threshold is breached during execution, the scenario is marked as failed and /qa-triage will categorize it.
| Threshold | Config key | Example |
|---|---|---|
| p99 latency | thresholds.p99LatencyMs | 800 ms |
| Successful requests | thresholds.okRequestPercent | 99% |
Both are written into the generated dq-nbomber.yaml as assertions and checked after the run.
Output
load-tests/
dq-nbomber.yaml ← generated load test config (validated)Code generation (advanced)
For complex scenarios requiring custom logic, use /qa-codegen to generate a full C# NBomber project instead of a YAML config.
