@dzhechkov/keysarium 1.7.19 → 1.7.20

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 (50) hide show
  1. package/.dz-manifest.json +167 -27
  2. package/README.md +2 -2
  3. package/package.json +1 -1
  4. package/sbom.json +386 -36
  5. package/templates/.claude/skills/feature-adr/SKILL.md +9 -7
  6. package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +1 -1
  7. package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +11 -9
  8. package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +290 -70
  9. package/templates/.claude/skills/feature-adr/references/agentic-qe/{chaos-engineering-resilience.md → qe-ref-chaos-engineering-resilience/REFERENCE.md} +13 -0
  10. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  11. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/schemas/output.json +1205 -0
  12. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/scripts/validate-config.json +47 -0
  13. package/templates/.claude/skills/feature-adr/references/agentic-qe/{mutation-testing.md → qe-ref-mutation-testing/REFERENCE.md} +39 -1
  14. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/config.json +14 -0
  15. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/evals/mutation-testing.yaml +651 -0
  16. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/references/mutation-operators.md +38 -0
  17. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/schemas/output.json +707 -0
  18. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/scripts/validate-config.json +44 -0
  19. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/test-data/sample-output.json +295 -0
  20. package/templates/.claude/skills/feature-adr/references/agentic-qe/{performance-testing.md → qe-ref-performance-testing/REFERENCE.md} +35 -1
  21. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/config.json +18 -0
  22. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/evals/performance-testing.yaml +771 -0
  23. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/references/k6-patterns.md +72 -0
  24. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/schemas/output.json +1184 -0
  25. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/scripts/validate-config.json +55 -0
  26. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/REFERENCE.md +222 -0
  27. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
  28. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/schemas/output.json +505 -0
  29. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/scripts/validate-config.json +25 -0
  30. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/01-flag-detection.md +202 -0
  31. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/02-core-agents.md +428 -0
  32. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/03-batch1-results.md +101 -0
  33. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/04-conditional-agents.md +125 -0
  34. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/05-decision-synthesis.md +136 -0
  35. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/06-report-generation.md +181 -0
  36. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/07-learning-persistence.md +157 -0
  37. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/08-feedback-loop.md +122 -0
  38. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/09-final-output.md +140 -0
  39. package/templates/.claude/skills/feature-adr/references/agentic-qe/{security-testing.md → qe-ref-security-testing/REFERENCE.md} +44 -1
  40. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/config.json +13 -0
  41. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/evals/security-testing.yaml +789 -0
  42. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/compliance-agent-commands.md +131 -0
  43. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/owasp-top-10.md +66 -0
  44. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/schemas/output.json +879 -0
  45. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/scripts/validate-config.json +45 -0
  46. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/templates/security-report.md +44 -0
  47. package/templates/.claude/skills/feature-adr/references/agentic-qe/{tdd-london-chicago.md → qe-ref-tdd-london-chicago/REFERENCE.md} +21 -1
  48. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/schemas/output.json +444 -0
  49. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/scripts/validate-config.json +43 -0
  50. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md +0 -108
@@ -0,0 +1,771 @@
1
+ # =============================================================================
2
+ # AQE Skill Evaluation Test Suite: Performance Testing v1.0.0
3
+ # =============================================================================
4
+ #
5
+ # Comprehensive evaluation suite for the performance-testing skill per ADR-056.
6
+ # Tests load testing, stress testing, endurance testing, response time analysis,
7
+ # throughput calculation, SLA validation, and bottleneck identification.
8
+ #
9
+ # Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
10
+ # Validator: .claude/skills/performance-testing/scripts/validate-config.json
11
+ #
12
+ # Coverage:
13
+ # - Load Testing: k6, Artillery, JMeter scenarios
14
+ # - Stress Testing: Breaking point identification
15
+ # - Endurance Testing: Memory leak detection
16
+ # - Response Time Analysis: Percentile calculations (p50, p95, p99)
17
+ # - Throughput Analysis: Requests per second, transactions
18
+ # - SLA Validation: Threshold compliance checking
19
+ # - Bottleneck Identification: CPU, memory, DB, network
20
+ #
21
+ # =============================================================================
22
+
23
+ skill: performance-testing
24
+ version: 1.0.0
25
+ description: >
26
+ Comprehensive evaluation suite for the performance-testing skill.
27
+ Tests load/stress/endurance testing capabilities, response time percentile
28
+ accuracy, throughput calculation, SLA compliance checking, and bottleneck
29
+ identification. Supports multi-model testing and integrates with ReasoningBank
30
+ for continuous improvement.
31
+
32
+ # =============================================================================
33
+ # Multi-Model Configuration
34
+ # =============================================================================
35
+
36
+ models_to_test:
37
+ - claude-sonnet-4-6 # Primary (high accuracy expected)
38
+ - claude-haiku-4-5 # Fast model (minimum quality floor)
39
+
40
+ # =============================================================================
41
+ # MCP Integration Configuration
42
+ # =============================================================================
43
+
44
+ mcp_integration:
45
+ enabled: true
46
+ namespace: skill-validation
47
+
48
+ # Query existing performance patterns before running evals
49
+ query_patterns: true
50
+
51
+ # Track each test outcome for learning feedback loop
52
+ track_outcomes: true
53
+
54
+ # Store successful patterns after evals complete
55
+ store_patterns: true
56
+
57
+ # Share learning with fleet coordinator agents
58
+ share_learning: true
59
+
60
+ # Update quality gate with validation metrics
61
+ update_quality_gate: true
62
+
63
+ # Target agents for learning distribution
64
+ target_agents:
65
+ - qe-learning-coordinator
66
+ - qe-queen-coordinator
67
+ - qe-performance-tester
68
+ - qe-chaos-engineer
69
+
70
+ # =============================================================================
71
+ # ReasoningBank Learning Configuration
72
+ # =============================================================================
73
+
74
+ learning:
75
+ store_success_patterns: true
76
+ store_failure_patterns: true
77
+ pattern_ttl_days: 90
78
+ min_confidence_to_store: 0.7
79
+ cross_model_comparison: true
80
+
81
+ # =============================================================================
82
+ # Result Format Configuration
83
+ # =============================================================================
84
+
85
+ result_format:
86
+ json_output: true
87
+ markdown_report: true
88
+ include_raw_output: false
89
+ include_timing: true
90
+ include_token_usage: true
91
+
92
+ # =============================================================================
93
+ # Environment Setup
94
+ # =============================================================================
95
+
96
+ setup:
97
+ required_tools:
98
+ - jq # JSON parsing (required)
99
+ - bc # Math operations (optional)
100
+
101
+ environment_variables:
102
+ PERF_TEST_MODE: "evaluation"
103
+ SLA_STRICT: "true"
104
+ PERCENTILE_VALIDATION: "true"
105
+
106
+ fixtures:
107
+ - name: k6_load_test_script
108
+ path: fixtures/k6-load-test.js
109
+ content: |
110
+ import http from 'k6/http';
111
+ import { check, sleep } from 'k6';
112
+
113
+ export const options = {
114
+ stages: [
115
+ { duration: '1m', target: 50 },
116
+ { duration: '3m', target: 50 },
117
+ { duration: '1m', target: 0 },
118
+ ],
119
+ thresholds: {
120
+ http_req_duration: ['p(95)<200'],
121
+ http_req_failed: ['rate<0.01'],
122
+ },
123
+ };
124
+
125
+ export default function () {
126
+ const res = http.get('https://api.example.com/products');
127
+ check(res, {
128
+ 'status is 200': (r) => r.status === 200,
129
+ 'response time < 200ms': (r) => r.timings.duration < 200,
130
+ });
131
+ sleep(1);
132
+ }
133
+
134
+ # =============================================================================
135
+ # TEST CASES
136
+ # =============================================================================
137
+
138
+ test_cases:
139
+ # ---------------------------------------------------------------------------
140
+ # CATEGORY: Load Testing
141
+ # ---------------------------------------------------------------------------
142
+
143
+ - id: tc001_load_test_basic_analysis
144
+ description: "Analyze basic load test results with response times and throughput"
145
+ category: load-testing
146
+ priority: critical
147
+
148
+ input:
149
+ scenario: |
150
+ A k6 load test was run against an e-commerce API with 100 virtual users
151
+ for 5 minutes. Analyze the results:
152
+
153
+ - Total Requests: 45,000
154
+ - Successful: 44,820
155
+ - Failed: 180
156
+ - Average Response Time: 145ms
157
+ - p50: 120ms
158
+ - p95: 280ms
159
+ - p99: 450ms
160
+ - Requests/second: 150
161
+
162
+ SLA Thresholds:
163
+ - p95 response time < 300ms
164
+ - Error rate < 1%
165
+ context:
166
+ tool: k6
167
+ testType: load
168
+ environment: staging
169
+
170
+ expected_output:
171
+ must_contain:
172
+ - "load test"
173
+ - "response time"
174
+ - "throughput"
175
+ - "150"
176
+ - "p95"
177
+ must_not_contain:
178
+ - "no data"
179
+ - "unable to analyze"
180
+ must_match_regex:
181
+ - "p95.*280|280.*p95"
182
+ - "error.*rate|rate.*error"
183
+ status: success
184
+ finding_count:
185
+ min: 1
186
+ max: 10
187
+
188
+ validation:
189
+ schema_check: true
190
+ keyword_match_threshold: 0.8
191
+ reasoning_quality_min: 0.75
192
+
193
+ timeout_ms: 30000
194
+
195
+ - id: tc002_load_test_sla_failure
196
+ description: "Detect SLA failures in load test results"
197
+ category: load-testing
198
+ priority: critical
199
+
200
+ input:
201
+ scenario: |
202
+ Load test results show SLA violations:
203
+
204
+ - p95 Response Time: 450ms (threshold: 300ms) - FAILED
205
+ - Error Rate: 2.5% (threshold: 1%) - FAILED
206
+ - Throughput: 1200 req/s (threshold: 1000) - PASSED
207
+
208
+ Identify the failures and provide recommendations.
209
+ context:
210
+ tool: artillery
211
+ testType: load
212
+
213
+ expected_output:
214
+ must_contain:
215
+ - "SLA"
216
+ - "failed"
217
+ - "threshold"
218
+ - "p95"
219
+ - "error rate"
220
+ must_not_contain:
221
+ - "all thresholds met"
222
+ - "passed"
223
+ severity_classification: high
224
+ finding_count:
225
+ min: 2
226
+
227
+ validation:
228
+ schema_check: true
229
+ keyword_match_threshold: 0.7
230
+
231
+ # ---------------------------------------------------------------------------
232
+ # CATEGORY: Stress Testing
233
+ # ---------------------------------------------------------------------------
234
+
235
+ - id: tc003_stress_test_breaking_point
236
+ description: "Identify system breaking point from stress test"
237
+ category: stress-testing
238
+ priority: critical
239
+
240
+ input:
241
+ scenario: |
242
+ Stress test ramped from 100 to 1000 VUs over 30 minutes:
243
+
244
+ 100 VUs: p95=120ms, errors=0.1%
245
+ 200 VUs: p95=150ms, errors=0.2%
246
+ 400 VUs: p95=220ms, errors=0.5%
247
+ 600 VUs: p95=380ms, errors=1.5%
248
+ 800 VUs: p95=850ms, errors=8%
249
+ 1000 VUs: p95=2500ms, errors=25%
250
+
251
+ Identify the breaking point and recommend max capacity.
252
+ context:
253
+ tool: k6
254
+ testType: stress
255
+
256
+ expected_output:
257
+ must_contain:
258
+ - "breaking point"
259
+ - "400"
260
+ - "600"
261
+ - "capacity"
262
+ - "degradation"
263
+ must_match_regex:
264
+ - "breaking.*point|point.*breaking"
265
+ - "recommend.*[0-9]+.*VU|[0-9]+.*VU.*recommend"
266
+ severity_classification: high
267
+
268
+ validation:
269
+ schema_check: true
270
+ keyword_match_threshold: 0.75
271
+ reasoning_quality_min: 0.8
272
+
273
+ - id: tc004_stress_test_gradual_degradation
274
+ description: "Analyze gradual performance degradation pattern"
275
+ category: stress-testing
276
+ priority: high
277
+
278
+ input:
279
+ scenario: |
280
+ Performance degrades gradually under increasing load:
281
+
282
+ Time 0m: 100 VUs, p95=100ms
283
+ Time 5m: 100 VUs, p95=105ms
284
+ Time 10m: 100 VUs, p95=120ms
285
+ Time 15m: 100 VUs, p95=150ms
286
+ Time 20m: 100 VUs, p95=200ms
287
+ Time 25m: 100 VUs, p95=280ms
288
+ Time 30m: 100 VUs, p95=400ms
289
+
290
+ Note: Load stayed constant but response time increased.
291
+ context:
292
+ tool: gatling
293
+ testType: stress
294
+
295
+ expected_output:
296
+ must_contain:
297
+ - "degradation"
298
+ - "memory"
299
+ - "leak"
300
+ - "resource"
301
+ must_not_contain:
302
+ - "stable"
303
+ - "healthy"
304
+ severity_classification: critical
305
+
306
+ validation:
307
+ schema_check: true
308
+ keyword_match_threshold: 0.7
309
+
310
+ # ---------------------------------------------------------------------------
311
+ # CATEGORY: Endurance Testing
312
+ # ---------------------------------------------------------------------------
313
+
314
+ - id: tc005_endurance_test_memory_leak
315
+ description: "Detect memory leak in endurance test"
316
+ category: endurance-testing
317
+ priority: critical
318
+
319
+ input:
320
+ scenario: |
321
+ 24-hour endurance test with 50 VUs:
322
+
323
+ Hour 0: Memory=2GB, p95=100ms
324
+ Hour 4: Memory=2.5GB, p95=105ms
325
+ Hour 8: Memory=3.2GB, p95=115ms
326
+ Hour 12: Memory=4.1GB, p95=130ms
327
+ Hour 16: Memory=5.2GB, p95=160ms
328
+ Hour 20: Memory=6.8GB, p95=220ms
329
+ Hour 24: Memory=8.5GB, p95=350ms
330
+
331
+ Server has 16GB RAM. Response time degraded as memory grew.
332
+ context:
333
+ tool: jmeter
334
+ testType: endurance
335
+
336
+ expected_output:
337
+ must_contain:
338
+ - "memory leak"
339
+ - "endurance"
340
+ - "24 hour"
341
+ - "growth"
342
+ - "fix"
343
+ must_match_regex:
344
+ - "memory.*leak|leak.*memory"
345
+ - "recommend|fix|solution"
346
+ severity_classification: critical
347
+ finding_count:
348
+ min: 1
349
+
350
+ validation:
351
+ schema_check: true
352
+ keyword_match_threshold: 0.8
353
+ reasoning_quality_min: 0.85
354
+
355
+ - id: tc006_endurance_test_stable
356
+ description: "Verify stable system in endurance test"
357
+ category: endurance-testing
358
+ priority: high
359
+
360
+ input:
361
+ scenario: |
362
+ 48-hour soak test with 100 VUs - System remained stable:
363
+
364
+ - Response time p95: 150ms +/- 10ms throughout
365
+ - Memory: 4GB +/- 200MB throughout
366
+ - CPU: 45% +/- 5% throughout
367
+ - Error rate: 0.05% constant
368
+ - No connection pool exhaustion
369
+ - No thread leaks detected
370
+
371
+ All metrics within acceptable variance.
372
+ context:
373
+ tool: k6
374
+ testType: soak
375
+
376
+ expected_output:
377
+ must_contain:
378
+ - "stable"
379
+ - "soak"
380
+ - "48 hour"
381
+ - "healthy"
382
+ must_not_contain:
383
+ - "memory leak"
384
+ - "degradation"
385
+ - "critical"
386
+ status: success
387
+
388
+ validation:
389
+ schema_check: true
390
+ keyword_match_threshold: 0.7
391
+
392
+ # ---------------------------------------------------------------------------
393
+ # CATEGORY: Response Time Analysis
394
+ # ---------------------------------------------------------------------------
395
+
396
+ - id: tc007_percentile_analysis
397
+ description: "Analyze response time percentiles correctly"
398
+ category: response-time
399
+ priority: critical
400
+
401
+ input:
402
+ scenario: |
403
+ Analyze these response time percentiles:
404
+
405
+ min: 15ms
406
+ p50: 85ms
407
+ p75: 120ms
408
+ p90: 180ms
409
+ p95: 250ms
410
+ p99: 450ms
411
+ p999: 850ms
412
+ max: 2500ms
413
+ avg: 110ms
414
+ stdDev: 95ms
415
+
416
+ SLA: p95 < 300ms, p99 < 500ms
417
+ context:
418
+ testType: load
419
+
420
+ expected_output:
421
+ must_contain:
422
+ - "p95"
423
+ - "p99"
424
+ - "percentile"
425
+ - "SLA"
426
+ - "passed"
427
+ must_match_regex:
428
+ - "p95.*250|250.*p95"
429
+ - "p99.*450|450.*p99"
430
+
431
+ validation:
432
+ schema_check: true
433
+ keyword_match_threshold: 0.8
434
+
435
+ - id: tc008_response_time_outliers
436
+ description: "Identify response time outliers"
437
+ category: response-time
438
+ priority: high
439
+
440
+ input:
441
+ scenario: |
442
+ Response time distribution shows outliers:
443
+
444
+ p50: 50ms
445
+ p95: 100ms
446
+ p99: 200ms
447
+ max: 15000ms
448
+
449
+ The max value is 75x the p99. This suggests occasional extreme outliers.
450
+ Investigate potential causes.
451
+ context:
452
+ testType: load
453
+
454
+ expected_output:
455
+ must_contain:
456
+ - "outlier"
457
+ - "spike"
458
+ - "max"
459
+ - "investigate"
460
+ must_match_regex:
461
+ - "15000|15,000|15s"
462
+ - "garbage.*collection|timeout|network"
463
+
464
+ validation:
465
+ schema_check: true
466
+ keyword_match_threshold: 0.7
467
+
468
+ # ---------------------------------------------------------------------------
469
+ # CATEGORY: Throughput Analysis
470
+ # ---------------------------------------------------------------------------
471
+
472
+ - id: tc009_throughput_capacity
473
+ description: "Analyze throughput capacity"
474
+ category: throughput
475
+ priority: high
476
+
477
+ input:
478
+ scenario: |
479
+ Throughput analysis:
480
+
481
+ 50 VUs: 500 req/s (10 req/VU/s)
482
+ 100 VUs: 950 req/s (9.5 req/VU/s)
483
+ 200 VUs: 1600 req/s (8 req/VU/s)
484
+ 400 VUs: 2000 req/s (5 req/VU/s)
485
+ 800 VUs: 2100 req/s (2.6 req/VU/s)
486
+
487
+ Throughput is plateauing. Calculate max capacity.
488
+ context:
489
+ tool: k6
490
+ testType: scalability
491
+
492
+ expected_output:
493
+ must_contain:
494
+ - "throughput"
495
+ - "plateau"
496
+ - "capacity"
497
+ - "bottleneck"
498
+ must_match_regex:
499
+ - "2[01]00.*req|req.*2[01]00"
500
+ - "max.*capacity|capacity.*limit"
501
+
502
+ validation:
503
+ schema_check: true
504
+ keyword_match_threshold: 0.75
505
+
506
+ - id: tc010_throughput_decline
507
+ description: "Detect throughput decline under load"
508
+ category: throughput
509
+ priority: critical
510
+
511
+ input:
512
+ scenario: |
513
+ Throughput declines as load increases:
514
+
515
+ 100 VUs: 1500 req/s, p95=100ms
516
+ 200 VUs: 1400 req/s, p95=180ms
517
+ 300 VUs: 1200 req/s, p95=350ms
518
+ 400 VUs: 900 req/s, p95=800ms
519
+
520
+ Throughput is dropping while response time increases.
521
+ This indicates severe resource contention.
522
+ context:
523
+ testType: stress
524
+
525
+ expected_output:
526
+ must_contain:
527
+ - "throughput"
528
+ - "decline"
529
+ - "contention"
530
+ - "resource"
531
+ severity_classification: critical
532
+
533
+ validation:
534
+ schema_check: true
535
+ keyword_match_threshold: 0.7
536
+
537
+ # ---------------------------------------------------------------------------
538
+ # CATEGORY: Bottleneck Identification
539
+ # ---------------------------------------------------------------------------
540
+
541
+ - id: tc011_database_bottleneck
542
+ description: "Identify database connection pool bottleneck"
543
+ category: bottleneck
544
+ priority: critical
545
+
546
+ input:
547
+ scenario: |
548
+ Load test shows database issues:
549
+
550
+ - Response time spikes when VUs > 200
551
+ - Database connection pool: 20 max
552
+ - Active connections at spike: 20 (saturated)
553
+ - Connection wait time: 500ms avg
554
+ - Query execution time: 10ms avg
555
+
556
+ Application waits for connections, not query execution.
557
+ context:
558
+ tool: k6
559
+ testType: load
560
+
561
+ expected_output:
562
+ must_contain:
563
+ - "connection pool"
564
+ - "bottleneck"
565
+ - "database"
566
+ - "increase"
567
+ - "20"
568
+ must_match_regex:
569
+ - "connection.*pool|pool.*connection"
570
+ - "saturat|exhaust"
571
+ severity_classification: critical
572
+ finding_count:
573
+ min: 1
574
+
575
+ validation:
576
+ schema_check: true
577
+ keyword_match_threshold: 0.8
578
+ reasoning_quality_min: 0.85
579
+
580
+ - id: tc012_cpu_bottleneck
581
+ description: "Identify CPU bottleneck"
582
+ category: bottleneck
583
+ priority: high
584
+
585
+ input:
586
+ scenario: |
587
+ Performance test with CPU saturation:
588
+
589
+ 100 VUs:
590
+ - CPU: 45%
591
+ - Memory: 60%
592
+ - p95: 100ms
593
+
594
+ 300 VUs:
595
+ - CPU: 85%
596
+ - Memory: 65%
597
+ - p95: 250ms
598
+
599
+ 500 VUs:
600
+ - CPU: 98%
601
+ - Memory: 68%
602
+ - p95: 800ms
603
+
604
+ CPU is clearly the constraint.
605
+ context:
606
+ testType: stress
607
+
608
+ expected_output:
609
+ must_contain:
610
+ - "CPU"
611
+ - "bottleneck"
612
+ - "98%"
613
+ - "scale"
614
+ must_match_regex:
615
+ - "CPU.*bottleneck|bottleneck.*CPU"
616
+ - "horizontal|vertical|scale"
617
+ severity_classification: high
618
+
619
+ validation:
620
+ schema_check: true
621
+ keyword_match_threshold: 0.75
622
+
623
+ - id: tc013_network_bottleneck
624
+ description: "Identify network bandwidth bottleneck"
625
+ category: bottleneck
626
+ priority: high
627
+
628
+ input:
629
+ scenario: |
630
+ API returns large JSON responses. Network becomes limiting factor:
631
+
632
+ - Average response size: 500KB
633
+ - Network bandwidth: 1Gbps
634
+ - At 200 req/s: 800Mbps used, p95=150ms
635
+ - At 250 req/s: 1Gbps saturated, p95=500ms
636
+ - At 300 req/s: packet drops, p95=2000ms
637
+
638
+ Application servers have capacity but network is saturated.
639
+ context:
640
+ testType: load
641
+
642
+ expected_output:
643
+ must_contain:
644
+ - "network"
645
+ - "bandwidth"
646
+ - "bottleneck"
647
+ - "1Gbps"
648
+ must_match_regex:
649
+ - "network.*bottleneck|bottleneck.*network"
650
+ - "bandwidth|compress|reduce.*size"
651
+ severity_classification: high
652
+
653
+ validation:
654
+ schema_check: true
655
+ keyword_match_threshold: 0.7
656
+
657
+ # ---------------------------------------------------------------------------
658
+ # CATEGORY: Negative Tests
659
+ # ---------------------------------------------------------------------------
660
+
661
+ - id: tc014_healthy_system_no_false_positives
662
+ description: "Verify healthy system is not flagged with false positives"
663
+ category: negative
664
+ priority: critical
665
+
666
+ input:
667
+ scenario: |
668
+ Production load test results - System is healthy:
669
+
670
+ - 500 VUs for 30 minutes
671
+ - p50: 45ms, p95: 85ms, p99: 120ms
672
+ - Throughput: 2,500 req/s (stable)
673
+ - Error rate: 0.02%
674
+ - CPU: 55%, Memory: 65%
675
+ - All SLAs passed
676
+ - No bottlenecks detected
677
+ - Response times stable throughout
678
+ context:
679
+ tool: k6
680
+ testType: load
681
+ environment: production
682
+
683
+ expected_output:
684
+ must_contain:
685
+ - "healthy"
686
+ - "passed"
687
+ - "stable"
688
+ must_not_contain:
689
+ - "critical"
690
+ - "bottleneck"
691
+ - "memory leak"
692
+ - "degradation"
693
+ - "failure"
694
+ status: success
695
+ finding_count:
696
+ max: 3 # Allow informational findings only
697
+
698
+ validation:
699
+ schema_check: true
700
+ keyword_match_threshold: 0.6
701
+ allow_partial: true
702
+
703
+ - id: tc015_incomplete_data_handling
704
+ description: "Handle incomplete performance data gracefully"
705
+ category: negative
706
+ priority: high
707
+
708
+ input:
709
+ scenario: |
710
+ Partial load test data (test interrupted after 5 minutes):
711
+
712
+ - Collected 5 minutes of 30 minute planned test
713
+ - p95: 200ms (limited sample)
714
+ - Total requests: 5,000
715
+ - Cannot determine steady-state behavior
716
+
717
+ Provide analysis with appropriate caveats.
718
+ context:
719
+ tool: artillery
720
+ testType: load
721
+
722
+ expected_output:
723
+ must_contain:
724
+ - "incomplete"
725
+ - "partial"
726
+ - "caveat"
727
+ - "limited"
728
+ must_not_contain:
729
+ - "definitive"
730
+ - "conclusive"
731
+ status: partial
732
+
733
+ validation:
734
+ schema_check: true
735
+ allow_partial: true
736
+
737
+ # =============================================================================
738
+ # SUCCESS CRITERIA
739
+ # =============================================================================
740
+
741
+ success_criteria:
742
+ # Overall pass rate (90% of tests must pass)
743
+ pass_rate: 0.9
744
+
745
+ # Critical tests must ALL pass (100%)
746
+ critical_pass_rate: 1.0
747
+
748
+ # Average reasoning quality score
749
+ avg_reasoning_quality: 0.75
750
+
751
+ # Maximum suite execution time (5 minutes)
752
+ max_execution_time_ms: 300000
753
+
754
+ # Maximum variance between model results (15%)
755
+ cross_model_variance: 0.15
756
+
757
+ # =============================================================================
758
+ # METADATA
759
+ # =============================================================================
760
+
761
+ metadata:
762
+ author: "qe-performance-tester"
763
+ created: "2026-02-02"
764
+ last_updated: "2026-02-02"
765
+ coverage_target: >
766
+ Performance Testing: Load testing (k6, Artillery, JMeter), Stress testing
767
+ (breaking point, gradual degradation), Endurance testing (memory leaks,
768
+ stability), Response time analysis (percentiles p50/p95/p99, outliers),
769
+ Throughput analysis (capacity, decline), Bottleneck identification
770
+ (database, CPU, network). 15 test cases with 90% pass rate requirement
771
+ and 100% critical pass rate.