Skip to content

/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

  1. Reads qa-plan.md for performance scope
  2. Reads dq-qa.config.json for performance.schemaUrl, performance.baseUrl, and performance.thresholds
  3. Runs dq-nbomber generate to produce the YAML config
  4. Reviews the generated config and asks if any scenarios need adjustment
  5. Validates the config with dq-nbomber validate

Generated config example

yaml
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.

ThresholdConfig keyExample
p99 latencythresholds.p99LatencyMs800 ms
Successful requeststhresholds.okRequestPercent99%

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.

Released under the AGPL-3.0 License.