agentic-qe 3.7.9 → 3.7.11
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/.claude/skills/.validation/README.md +111 -111
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
- package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
- package/.claude/skills/.validation/templates/schemas/output.json +145 -145
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
- package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
- package/.claude/skills/.validation/test-data/sample-output.json +73 -73
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/.claude/skills/a11y-ally/schemas/output.json +549 -549
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
- package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/.claude/skills/code-review-quality/schemas/output.json +264 -264
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/.claude/skills/compliance-testing/schemas/output.json +845 -845
- package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/.claude/skills/contract-testing/schemas/output.json +638 -638
- package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
- package/.claude/skills/database-testing/schemas/output.json +1446 -1446
- package/.claude/skills/debug-loop/SKILL.md +61 -61
- package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/.claude/skills/iterative-loop/SKILL.md +371 -371
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/.claude/skills/localization-testing/schemas/output.json +325 -325
- package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/.claude/skills/mobile-testing/schemas/output.json +318 -318
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/.claude/skills/mutation-testing/schemas/output.json +707 -707
- package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/pentest-validation/SKILL.md +268 -268
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/.claude/skills/pentest-validation/schemas/output.json +281 -281
- package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
- package/.claude/skills/performance-analysis/schemas/output.json +588 -588
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
- package/.claude/skills/pr-review/SKILL.md +61 -61
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/.claude/skills/quality-metrics/schemas/output.json +403 -403
- package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/.claude/skills/regression-testing/schemas/output.json +311 -311
- package/.claude/skills/release/SKILL.md +347 -347
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
- package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
- package/.claude/skills/security-testing/schemas/output.json +879 -879
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
- package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/.claude/skills/sherlock-review/schemas/output.json +297 -297
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/.claude/skills/technical-writing/schemas/output.json +268 -268
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/.claude/skills/test-data-management/schemas/output.json +284 -284
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
- package/.claude/skills/test-environment-management/schemas/output.json +310 -310
- package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/.claude/skills/testability-scoring/schemas/output.json +606 -606
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/.claude/skills/verification-quality/schemas/output.json +432 -432
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/CHANGELOG.md +36 -0
- package/README.md +171 -901
- package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
- package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
- package/assets/governance/constitution.md +202 -202
- package/assets/governance/shards/chaos-resilience.shard.md +221 -221
- package/assets/governance/shards/code-intelligence.shard.md +178 -178
- package/assets/governance/shards/contract-testing.shard.md +206 -206
- package/assets/governance/shards/coverage-analysis.shard.md +146 -146
- package/assets/governance/shards/defect-intelligence.shard.md +182 -182
- package/assets/governance/shards/learning-optimization.shard.md +248 -248
- package/assets/governance/shards/quality-assessment.shard.md +165 -165
- package/assets/governance/shards/requirements-validation.shard.md +177 -177
- package/assets/governance/shards/security-compliance.shard.md +196 -196
- package/assets/governance/shards/test-execution.shard.md +156 -156
- package/assets/governance/shards/test-generation.shard.md +128 -128
- package/assets/governance/shards/visual-accessibility.shard.md +209 -209
- package/assets/hooks/cross-phase-memory.yaml +253 -253
- package/assets/patterns/adr-051-booster-patterns.json +78 -78
- package/assets/patterns/adr-051-embedding-patterns.json +147 -147
- package/assets/patterns/adr-051-integration-summary.json +62 -62
- package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
- package/assets/patterns/adr-051-router-patterns.json +113 -113
- package/assets/patterns/index.json +136 -136
- package/assets/skills/.validation/README.md +111 -111
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
- package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/assets/skills/.validation/templates/eval.template.yaml +366 -366
- package/assets/skills/.validation/templates/schemas/output.json +145 -145
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/assets/skills/.validation/test-data/invalid-output.json +5 -5
- package/assets/skills/.validation/test-data/minimal-output.json +9 -9
- package/assets/skills/.validation/test-data/sample-output.json +73 -73
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/assets/skills/a11y-ally/schemas/output.json +549 -549
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/assets/skills/accessibility-testing/schemas/output.json +776 -776
- package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/assets/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/assets/skills/code-review-quality/schemas/output.json +264 -264
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/assets/skills/compatibility-testing/schemas/output.json +551 -551
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/assets/skills/compliance-testing/schemas/output.json +845 -845
- package/assets/skills/consultancy-practices/schemas/output.json +282 -282
- package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/assets/skills/contract-testing/schemas/output.json +638 -638
- package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
- package/assets/skills/database-testing/schemas/output.json +1446 -1446
- package/assets/skills/debug-loop/SKILL.md +61 -61
- package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/assets/skills/localization-testing/schemas/output.json +325 -325
- package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/assets/skills/mobile-testing/schemas/output.json +318 -318
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/assets/skills/mutation-testing/schemas/output.json +707 -707
- package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/assets/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/assets/skills/n8n-security-testing/schemas/output.json +293 -293
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/assets/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/pentest-validation/SKILL.md +268 -268
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/assets/skills/pentest-validation/schemas/output.json +281 -281
- package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/assets/skills/performance-testing/schemas/output.json +1184 -1184
- package/assets/skills/pr-review/SKILL.md +61 -61
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/assets/skills/qe-test-execution/schemas/output.json +529 -529
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/assets/skills/qe-test-generation/schemas/output.json +439 -439
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/assets/skills/quality-metrics/schemas/output.json +403 -403
- package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
- package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/assets/skills/regression-testing/schemas/output.json +311 -311
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/assets/skills/risk-based-testing/schemas/output.json +480 -480
- package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
- package/assets/skills/security-testing/schemas/output.json +879 -879
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/assets/skills/security-visual-testing/schemas/output.json +486 -486
- package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/assets/skills/sherlock-review/schemas/output.json +297 -297
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/assets/skills/shift-left-testing/schemas/output.json +459 -459
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/assets/skills/shift-right-testing/schemas/output.json +418 -418
- package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/assets/skills/technical-writing/schemas/output.json +268 -268
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
- package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/assets/skills/test-data-management/schemas/output.json +284 -284
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/assets/skills/test-design-techniques/schemas/output.json +295 -295
- package/assets/skills/test-environment-management/schemas/output.json +310 -310
- package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/assets/skills/testability-scoring/schemas/output.json +606 -606
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/assets/skills/verification-quality/schemas/output.json +432 -432
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/assets/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/assets/templates/validation-summary.json +56 -56
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +1 -0
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts.map +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +16 -3
- package/dist/agents/claim-verifier/verifiers/output-verifier.js.map +1 -1
- package/dist/cli/bundle.js +488 -75
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -9
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/governance/adversarial-defense-integration.d.ts +29 -0
- package/dist/governance/adversarial-defense-integration.d.ts.map +1 -1
- package/dist/governance/adversarial-defense-integration.js +85 -1
- package/dist/governance/adversarial-defense-integration.js.map +1 -1
- package/dist/governance/continue-gate-integration.d.ts +7 -5
- package/dist/governance/continue-gate-integration.d.ts.map +1 -1
- package/dist/governance/continue-gate-integration.js +72 -15
- package/dist/governance/continue-gate-integration.js.map +1 -1
- package/dist/governance/deterministic-gateway-integration.d.ts +5 -0
- package/dist/governance/deterministic-gateway-integration.d.ts.map +1 -1
- package/dist/governance/deterministic-gateway-integration.js +35 -1
- package/dist/governance/deterministic-gateway-integration.js.map +1 -1
- package/dist/governance/evolution-pipeline-integration.d.ts +5 -0
- package/dist/governance/evolution-pipeline-integration.d.ts.map +1 -1
- package/dist/governance/evolution-pipeline-integration.js +57 -1
- package/dist/governance/evolution-pipeline-integration.js.map +1 -1
- package/dist/governance/memory-write-gate-integration.d.ts +6 -3
- package/dist/governance/memory-write-gate-integration.d.ts.map +1 -1
- package/dist/governance/memory-write-gate-integration.js +48 -10
- package/dist/governance/memory-write-gate-integration.js.map +1 -1
- package/dist/governance/proof-envelope-integration.d.ts +1 -0
- package/dist/governance/proof-envelope-integration.d.ts.map +1 -1
- package/dist/governance/proof-envelope-integration.js +37 -0
- package/dist/governance/proof-envelope-integration.js.map +1 -1
- package/dist/governance/shard-retriever-integration.d.ts +10 -0
- package/dist/governance/shard-retriever-integration.d.ts.map +1 -1
- package/dist/governance/shard-retriever-integration.js +50 -1
- package/dist/governance/shard-retriever-integration.js.map +1 -1
- package/dist/governance/trust-accumulator-integration.d.ts +5 -0
- package/dist/governance/trust-accumulator-integration.d.ts.map +1 -1
- package/dist/governance/trust-accumulator-integration.js +35 -2
- package/dist/governance/trust-accumulator-integration.js.map +1 -1
- package/dist/init/phases/10-workers.js +2 -2
- package/dist/init/phases/10-workers.js.map +1 -1
- package/dist/mcp/bundle.js +478 -62
- package/dist/mcp/protocol-server.js +2 -2
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +1 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/shared/language-detector.js +1 -1
- package/dist/shared/language-detector.js.map +1 -1
- package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -1
- package/dist/shared/parsers/multi-language-parser.js +55 -16
- package/dist/shared/parsers/multi-language-parser.js.map +1 -1
- package/dist/shared/sql-safety.d.ts.map +1 -1
- package/dist/shared/sql-safety.js +7 -1
- package/dist/shared/sql-safety.js.map +1 -1
- package/package.json +6 -2
- package/scripts/prepare-assets.sh +8 -0
|
@@ -1,1184 +1,1184 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://agentic-qe.dev/schemas/performance-testing-output.json",
|
|
4
|
-
"title": "AQE Performance Testing Skill Output Schema",
|
|
5
|
-
"description": "Schema for performance-testing skill output validation. Extends the base skill-output template with load testing metrics, SLA validation, bottleneck identification, and multi-tool support (k6, Artillery, JMeter, Gatling).",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"skillName": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"const": "performance-testing",
|
|
12
|
-
"description": "Must be 'performance-testing'"
|
|
13
|
-
},
|
|
14
|
-
"version": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$",
|
|
17
|
-
"description": "Semantic version of the skill"
|
|
18
|
-
},
|
|
19
|
-
"timestamp": {
|
|
20
|
-
"type": "string",
|
|
21
|
-
"type": "string",
|
|
22
|
-
"description": "ISO 8601 timestamp of output generation"
|
|
23
|
-
},
|
|
24
|
-
"status": {
|
|
25
|
-
"type": "string",
|
|
26
|
-
"enum": ["success", "partial", "failed", "skipped"],
|
|
27
|
-
"description": "Overall execution status"
|
|
28
|
-
},
|
|
29
|
-
"trustTier": {
|
|
30
|
-
"type": "integer",
|
|
31
|
-
"const": 3,
|
|
32
|
-
"description": "Trust tier 3 indicates full validation with eval suite"
|
|
33
|
-
},
|
|
34
|
-
"output": {
|
|
35
|
-
"type": "object",
|
|
36
|
-
"required": ["summary", "testType", "metrics"],
|
|
37
|
-
"properties": {
|
|
38
|
-
"summary": {
|
|
39
|
-
"type": "string",
|
|
40
|
-
"minLength": 50,
|
|
41
|
-
"maxLength": 2000,
|
|
42
|
-
"description": "Human-readable summary of performance test results"
|
|
43
|
-
},
|
|
44
|
-
"testType": {
|
|
45
|
-
"type": "string",
|
|
46
|
-
"enum": ["load", "stress", "endurance", "spike", "volume", "scalability", "smoke", "soak"],
|
|
47
|
-
"description": "Type of performance test executed"
|
|
48
|
-
},
|
|
49
|
-
"score": {
|
|
50
|
-
"$ref": "#/$defs/performanceScore",
|
|
51
|
-
"description": "Overall performance score"
|
|
52
|
-
},
|
|
53
|
-
"metrics": {
|
|
54
|
-
"$ref": "#/$defs/performanceMetrics",
|
|
55
|
-
"description": "Core performance metrics including response times and throughput"
|
|
56
|
-
},
|
|
57
|
-
"slaCompliance": {
|
|
58
|
-
"$ref": "#/$defs/slaCompliance",
|
|
59
|
-
"description": "SLA/SLO compliance check results"
|
|
60
|
-
},
|
|
61
|
-
"bottlenecks": {
|
|
62
|
-
"type": "array",
|
|
63
|
-
"items": {
|
|
64
|
-
"$ref": "#/$defs/bottleneck"
|
|
65
|
-
},
|
|
66
|
-
"maxItems": 50,
|
|
67
|
-
"description": "Identified performance bottlenecks"
|
|
68
|
-
},
|
|
69
|
-
"findings": {
|
|
70
|
-
"type": "array",
|
|
71
|
-
"items": {
|
|
72
|
-
"$ref": "#/$defs/performanceFinding"
|
|
73
|
-
},
|
|
74
|
-
"maxItems": 100,
|
|
75
|
-
"description": "Performance issues and observations"
|
|
76
|
-
},
|
|
77
|
-
"recommendations": {
|
|
78
|
-
"type": "array",
|
|
79
|
-
"items": {
|
|
80
|
-
"$ref": "#/$defs/performanceRecommendation"
|
|
81
|
-
},
|
|
82
|
-
"maxItems": 50,
|
|
83
|
-
"description": "Optimization recommendations"
|
|
84
|
-
},
|
|
85
|
-
"scenarios": {
|
|
86
|
-
"type": "array",
|
|
87
|
-
"items": {
|
|
88
|
-
"$ref": "#/$defs/testScenario"
|
|
89
|
-
},
|
|
90
|
-
"maxItems": 20,
|
|
91
|
-
"description": "Individual test scenario results"
|
|
92
|
-
},
|
|
93
|
-
"resourceUtilization": {
|
|
94
|
-
"$ref": "#/$defs/resourceUtilization",
|
|
95
|
-
"description": "System resource utilization during test"
|
|
96
|
-
},
|
|
97
|
-
"artifacts": {
|
|
98
|
-
"type": "array",
|
|
99
|
-
"items": {
|
|
100
|
-
"$ref": "#/$defs/artifact"
|
|
101
|
-
},
|
|
102
|
-
"maxItems": 50,
|
|
103
|
-
"description": "Generated reports and data files"
|
|
104
|
-
},
|
|
105
|
-
"timeline": {
|
|
106
|
-
"type": "array",
|
|
107
|
-
"items": {
|
|
108
|
-
"$ref": "#/$defs/timelineEvent"
|
|
109
|
-
},
|
|
110
|
-
"description": "Test execution timeline"
|
|
111
|
-
},
|
|
112
|
-
"testConfiguration": {
|
|
113
|
-
"$ref": "#/$defs/testConfiguration",
|
|
114
|
-
"description": "Configuration used for the performance test"
|
|
115
|
-
},
|
|
116
|
-
"comparison": {
|
|
117
|
-
"$ref": "#/$defs/performanceComparison",
|
|
118
|
-
"description": "Comparison with baseline or previous run"
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
"metadata": {
|
|
123
|
-
"$ref": "#/$defs/metadata"
|
|
124
|
-
},
|
|
125
|
-
"validation": {
|
|
126
|
-
"$ref": "#/$defs/validationResult"
|
|
127
|
-
},
|
|
128
|
-
"learning": {
|
|
129
|
-
"$ref": "#/$defs/learningData"
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
"$defs": {
|
|
133
|
-
"performanceScore": {
|
|
134
|
-
"type": "object",
|
|
135
|
-
"required": ["value", "max"],
|
|
136
|
-
"properties": {
|
|
137
|
-
"value": {
|
|
138
|
-
"type": "number",
|
|
139
|
-
"minimum": 0,
|
|
140
|
-
"maximum": 100,
|
|
141
|
-
"description": "Performance score (0=critical issues, 100=excellent performance)"
|
|
142
|
-
},
|
|
143
|
-
"max": {
|
|
144
|
-
"type": "number",
|
|
145
|
-
"const": 100,
|
|
146
|
-
"description": "Maximum score is always 100"
|
|
147
|
-
},
|
|
148
|
-
"grade": {
|
|
149
|
-
"type": "string",
|
|
150
|
-
"pattern": "^[A-F][+-]?$",
|
|
151
|
-
"description": "Letter grade: A (90-100), B (80-89), C (70-79), D (60-69), F (<60)"
|
|
152
|
-
},
|
|
153
|
-
"trend": {
|
|
154
|
-
"type": "string",
|
|
155
|
-
"enum": ["improving", "stable", "declining", "unknown"],
|
|
156
|
-
"description": "Trend compared to previous tests"
|
|
157
|
-
},
|
|
158
|
-
"healthStatus": {
|
|
159
|
-
"type": "string",
|
|
160
|
-
"enum": ["healthy", "degraded", "critical", "unknown"],
|
|
161
|
-
"description": "Overall system health during test"
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
"performanceMetrics": {
|
|
166
|
-
"type": "object",
|
|
167
|
-
"required": ["responseTime", "throughput"],
|
|
168
|
-
"properties": {
|
|
169
|
-
"responseTime": {
|
|
170
|
-
"$ref": "#/$defs/responseTimeMetrics",
|
|
171
|
-
"description": "Response time statistics"
|
|
172
|
-
},
|
|
173
|
-
"throughput": {
|
|
174
|
-
"$ref": "#/$defs/throughputMetrics",
|
|
175
|
-
"description": "Throughput statistics"
|
|
176
|
-
},
|
|
177
|
-
"errorRate": {
|
|
178
|
-
"$ref": "#/$defs/errorRateMetrics",
|
|
179
|
-
"description": "Error rate statistics"
|
|
180
|
-
},
|
|
181
|
-
"concurrency": {
|
|
182
|
-
"$ref": "#/$defs/concurrencyMetrics",
|
|
183
|
-
"description": "Concurrency and virtual user metrics"
|
|
184
|
-
},
|
|
185
|
-
"dataTransfer": {
|
|
186
|
-
"$ref": "#/$defs/dataTransferMetrics",
|
|
187
|
-
"description": "Data transfer metrics"
|
|
188
|
-
},
|
|
189
|
-
"custom": {
|
|
190
|
-
"type": "object",
|
|
191
|
-
"additionalProperties": {
|
|
192
|
-
"oneOf": [
|
|
193
|
-
{ "type": "number" },
|
|
194
|
-
{ "type": "string" },
|
|
195
|
-
{ "type": "boolean" }
|
|
196
|
-
]
|
|
197
|
-
},
|
|
198
|
-
"description": "Custom metrics specific to the test"
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
"responseTimeMetrics": {
|
|
203
|
-
"type": "object",
|
|
204
|
-
"properties": {
|
|
205
|
-
"min": {
|
|
206
|
-
"type": "number",
|
|
207
|
-
"minimum": 0,
|
|
208
|
-
"description": "Minimum response time in milliseconds"
|
|
209
|
-
},
|
|
210
|
-
"max": {
|
|
211
|
-
"type": "number",
|
|
212
|
-
"minimum": 0,
|
|
213
|
-
"description": "Maximum response time in milliseconds"
|
|
214
|
-
},
|
|
215
|
-
"avg": {
|
|
216
|
-
"type": "number",
|
|
217
|
-
"minimum": 0,
|
|
218
|
-
"description": "Average response time in milliseconds"
|
|
219
|
-
},
|
|
220
|
-
"median": {
|
|
221
|
-
"type": "number",
|
|
222
|
-
"minimum": 0,
|
|
223
|
-
"description": "Median (p50) response time in milliseconds"
|
|
224
|
-
},
|
|
225
|
-
"p50": {
|
|
226
|
-
"type": "number",
|
|
227
|
-
"minimum": 0,
|
|
228
|
-
"description": "50th percentile response time in milliseconds"
|
|
229
|
-
},
|
|
230
|
-
"p75": {
|
|
231
|
-
"type": "number",
|
|
232
|
-
"minimum": 0,
|
|
233
|
-
"description": "75th percentile response time in milliseconds"
|
|
234
|
-
},
|
|
235
|
-
"p90": {
|
|
236
|
-
"type": "number",
|
|
237
|
-
"minimum": 0,
|
|
238
|
-
"description": "90th percentile response time in milliseconds"
|
|
239
|
-
},
|
|
240
|
-
"p95": {
|
|
241
|
-
"type": "number",
|
|
242
|
-
"minimum": 0,
|
|
243
|
-
"description": "95th percentile response time in milliseconds"
|
|
244
|
-
},
|
|
245
|
-
"p99": {
|
|
246
|
-
"type": "number",
|
|
247
|
-
"minimum": 0,
|
|
248
|
-
"description": "99th percentile response time in milliseconds"
|
|
249
|
-
},
|
|
250
|
-
"p999": {
|
|
251
|
-
"type": "number",
|
|
252
|
-
"minimum": 0,
|
|
253
|
-
"description": "99.9th percentile response time in milliseconds"
|
|
254
|
-
},
|
|
255
|
-
"stdDev": {
|
|
256
|
-
"type": "number",
|
|
257
|
-
"minimum": 0,
|
|
258
|
-
"description": "Standard deviation of response times"
|
|
259
|
-
},
|
|
260
|
-
"unit": {
|
|
261
|
-
"type": "string",
|
|
262
|
-
"enum": ["ms", "s", "us"],
|
|
263
|
-
"default": "ms",
|
|
264
|
-
"description": "Time unit (milliseconds, seconds, microseconds)"
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
"throughputMetrics": {
|
|
269
|
-
"type": "object",
|
|
270
|
-
"properties": {
|
|
271
|
-
"requestsPerSecond": {
|
|
272
|
-
"type": "number",
|
|
273
|
-
"minimum": 0,
|
|
274
|
-
"description": "Average requests per second"
|
|
275
|
-
},
|
|
276
|
-
"peakRequestsPerSecond": {
|
|
277
|
-
"type": "number",
|
|
278
|
-
"minimum": 0,
|
|
279
|
-
"description": "Peak requests per second achieved"
|
|
280
|
-
},
|
|
281
|
-
"totalRequests": {
|
|
282
|
-
"type": "integer",
|
|
283
|
-
"minimum": 0,
|
|
284
|
-
"description": "Total number of requests made"
|
|
285
|
-
},
|
|
286
|
-
"successfulRequests": {
|
|
287
|
-
"type": "integer",
|
|
288
|
-
"minimum": 0,
|
|
289
|
-
"description": "Number of successful requests"
|
|
290
|
-
},
|
|
291
|
-
"failedRequests": {
|
|
292
|
-
"type": "integer",
|
|
293
|
-
"minimum": 0,
|
|
294
|
-
"description": "Number of failed requests"
|
|
295
|
-
},
|
|
296
|
-
"transactionsPerSecond": {
|
|
297
|
-
"type": "number",
|
|
298
|
-
"minimum": 0,
|
|
299
|
-
"description": "Business transactions per second"
|
|
300
|
-
},
|
|
301
|
-
"iterationsPerSecond": {
|
|
302
|
-
"type": "number",
|
|
303
|
-
"minimum": 0,
|
|
304
|
-
"description": "Test iterations per second"
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
},
|
|
308
|
-
"errorRateMetrics": {
|
|
309
|
-
"type": "object",
|
|
310
|
-
"properties": {
|
|
311
|
-
"percentage": {
|
|
312
|
-
"type": "number",
|
|
313
|
-
"minimum": 0,
|
|
314
|
-
"maximum": 100,
|
|
315
|
-
"description": "Error rate as percentage"
|
|
316
|
-
},
|
|
317
|
-
"totalErrors": {
|
|
318
|
-
"type": "integer",
|
|
319
|
-
"minimum": 0,
|
|
320
|
-
"description": "Total number of errors"
|
|
321
|
-
},
|
|
322
|
-
"errorsByType": {
|
|
323
|
-
"type": "object",
|
|
324
|
-
"additionalProperties": {
|
|
325
|
-
"type": "integer"
|
|
326
|
-
},
|
|
327
|
-
"description": "Error counts by type (e.g., timeout, 5xx, connection)"
|
|
328
|
-
},
|
|
329
|
-
"errorsByEndpoint": {
|
|
330
|
-
"type": "object",
|
|
331
|
-
"additionalProperties": {
|
|
332
|
-
"type": "integer"
|
|
333
|
-
},
|
|
334
|
-
"description": "Error counts by endpoint"
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
"concurrencyMetrics": {
|
|
339
|
-
"type": "object",
|
|
340
|
-
"properties": {
|
|
341
|
-
"virtualUsers": {
|
|
342
|
-
"type": "integer",
|
|
343
|
-
"minimum": 0,
|
|
344
|
-
"description": "Number of virtual users (VUs)"
|
|
345
|
-
},
|
|
346
|
-
"peakConcurrentUsers": {
|
|
347
|
-
"type": "integer",
|
|
348
|
-
"minimum": 0,
|
|
349
|
-
"description": "Peak concurrent users during test"
|
|
350
|
-
},
|
|
351
|
-
"avgConcurrentUsers": {
|
|
352
|
-
"type": "number",
|
|
353
|
-
"minimum": 0,
|
|
354
|
-
"description": "Average concurrent users"
|
|
355
|
-
},
|
|
356
|
-
"rampUpTime": {
|
|
357
|
-
"type": "integer",
|
|
358
|
-
"minimum": 0,
|
|
359
|
-
"description": "Ramp-up time in seconds"
|
|
360
|
-
},
|
|
361
|
-
"steadyStateTime": {
|
|
362
|
-
"type": "integer",
|
|
363
|
-
"minimum": 0,
|
|
364
|
-
"description": "Steady state duration in seconds"
|
|
365
|
-
},
|
|
366
|
-
"rampDownTime": {
|
|
367
|
-
"type": "integer",
|
|
368
|
-
"minimum": 0,
|
|
369
|
-
"description": "Ramp-down time in seconds"
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
"dataTransferMetrics": {
|
|
374
|
-
"type": "object",
|
|
375
|
-
"properties": {
|
|
376
|
-
"totalDataSent": {
|
|
377
|
-
"type": "integer",
|
|
378
|
-
"minimum": 0,
|
|
379
|
-
"description": "Total data sent in bytes"
|
|
380
|
-
},
|
|
381
|
-
"totalDataReceived": {
|
|
382
|
-
"type": "integer",
|
|
383
|
-
"minimum": 0,
|
|
384
|
-
"description": "Total data received in bytes"
|
|
385
|
-
},
|
|
386
|
-
"avgDataSentPerRequest": {
|
|
387
|
-
"type": "number",
|
|
388
|
-
"minimum": 0,
|
|
389
|
-
"description": "Average data sent per request in bytes"
|
|
390
|
-
},
|
|
391
|
-
"avgDataReceivedPerRequest": {
|
|
392
|
-
"type": "number",
|
|
393
|
-
"minimum": 0,
|
|
394
|
-
"description": "Average data received per request in bytes"
|
|
395
|
-
},
|
|
396
|
-
"bandwidthUtilization": {
|
|
397
|
-
"type": "number",
|
|
398
|
-
"minimum": 0,
|
|
399
|
-
"maximum": 100,
|
|
400
|
-
"description": "Bandwidth utilization percentage"
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
},
|
|
404
|
-
"slaCompliance": {
|
|
405
|
-
"type": "object",
|
|
406
|
-
"required": ["overallCompliant"],
|
|
407
|
-
"properties": {
|
|
408
|
-
"overallCompliant": {
|
|
409
|
-
"type": "boolean",
|
|
410
|
-
"description": "Whether all SLAs are met"
|
|
411
|
-
},
|
|
412
|
-
"thresholds": {
|
|
413
|
-
"type": "array",
|
|
414
|
-
"items": {
|
|
415
|
-
"$ref": "#/$defs/slaThreshold"
|
|
416
|
-
},
|
|
417
|
-
"description": "Individual SLA threshold results"
|
|
418
|
-
},
|
|
419
|
-
"compliancePercentage": {
|
|
420
|
-
"type": "number",
|
|
421
|
-
"minimum": 0,
|
|
422
|
-
"maximum": 100,
|
|
423
|
-
"description": "Percentage of SLAs met"
|
|
424
|
-
},
|
|
425
|
-
"violations": {
|
|
426
|
-
"type": "array",
|
|
427
|
-
"items": {
|
|
428
|
-
"$ref": "#/$defs/slaViolation"
|
|
429
|
-
},
|
|
430
|
-
"description": "SLA violations detected"
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
|
-
"slaThreshold": {
|
|
435
|
-
"type": "object",
|
|
436
|
-
"required": ["metric", "operator", "threshold", "actual", "passed"],
|
|
437
|
-
"properties": {
|
|
438
|
-
"metric": {
|
|
439
|
-
"type": "string",
|
|
440
|
-
"description": "Metric name (e.g., 'p95_response_time', 'error_rate')"
|
|
441
|
-
},
|
|
442
|
-
"operator": {
|
|
443
|
-
"type": "string",
|
|
444
|
-
"enum": ["<", "<=", ">", ">=", "==", "!="],
|
|
445
|
-
"description": "Comparison operator"
|
|
446
|
-
},
|
|
447
|
-
"threshold": {
|
|
448
|
-
"type": "number",
|
|
449
|
-
"description": "Threshold value"
|
|
450
|
-
},
|
|
451
|
-
"actual": {
|
|
452
|
-
"type": "number",
|
|
453
|
-
"description": "Actual measured value"
|
|
454
|
-
},
|
|
455
|
-
"passed": {
|
|
456
|
-
"type": "boolean",
|
|
457
|
-
"description": "Whether threshold was met"
|
|
458
|
-
},
|
|
459
|
-
"unit": {
|
|
460
|
-
"type": "string",
|
|
461
|
-
"description": "Unit of measurement"
|
|
462
|
-
},
|
|
463
|
-
"description": {
|
|
464
|
-
"type": "string",
|
|
465
|
-
"description": "Human-readable description"
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
},
|
|
469
|
-
"slaViolation": {
|
|
470
|
-
"type": "object",
|
|
471
|
-
"required": ["metric", "severity"],
|
|
472
|
-
"properties": {
|
|
473
|
-
"metric": {
|
|
474
|
-
"type": "string",
|
|
475
|
-
"description": "Violated metric name"
|
|
476
|
-
},
|
|
477
|
-
"severity": {
|
|
478
|
-
"type": "string",
|
|
479
|
-
"enum": ["critical", "high", "medium", "low"],
|
|
480
|
-
"description": "Severity of the violation"
|
|
481
|
-
},
|
|
482
|
-
"expected": {
|
|
483
|
-
"type": "number",
|
|
484
|
-
"description": "Expected threshold value"
|
|
485
|
-
},
|
|
486
|
-
"actual": {
|
|
487
|
-
"type": "number",
|
|
488
|
-
"description": "Actual measured value"
|
|
489
|
-
},
|
|
490
|
-
"deviation": {
|
|
491
|
-
"type": "number",
|
|
492
|
-
"description": "Percentage deviation from threshold"
|
|
493
|
-
},
|
|
494
|
-
"impact": {
|
|
495
|
-
"type": "string",
|
|
496
|
-
"description": "Business impact description"
|
|
497
|
-
},
|
|
498
|
-
"timestamp": {
|
|
499
|
-
"type": "string",
|
|
500
|
-
"type": "string",
|
|
501
|
-
"description": "When violation was detected"
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
},
|
|
505
|
-
"bottleneck": {
|
|
506
|
-
"type": "object",
|
|
507
|
-
"required": ["id", "type", "severity", "description"],
|
|
508
|
-
"properties": {
|
|
509
|
-
"id": {
|
|
510
|
-
"type": "string",
|
|
511
|
-
"pattern": "^PERF-\\d{3,6}$",
|
|
512
|
-
"description": "Unique bottleneck identifier (e.g., PERF-001)"
|
|
513
|
-
},
|
|
514
|
-
"type": {
|
|
515
|
-
"type": "string",
|
|
516
|
-
"enum": ["cpu", "memory", "disk", "network", "database", "api", "cache", "queue", "thread-pool", "connection-pool", "external-service", "application", "other"],
|
|
517
|
-
"description": "Type of bottleneck"
|
|
518
|
-
},
|
|
519
|
-
"severity": {
|
|
520
|
-
"type": "string",
|
|
521
|
-
"enum": ["critical", "high", "medium", "low"],
|
|
522
|
-
"description": "Severity of the bottleneck"
|
|
523
|
-
},
|
|
524
|
-
"description": {
|
|
525
|
-
"type": "string",
|
|
526
|
-
"maxLength": 1000,
|
|
527
|
-
"description": "Detailed description of the bottleneck"
|
|
528
|
-
},
|
|
529
|
-
"component": {
|
|
530
|
-
"type": "string",
|
|
531
|
-
"description": "Affected system component"
|
|
532
|
-
},
|
|
533
|
-
"threshold": {
|
|
534
|
-
"type": "number",
|
|
535
|
-
"description": "Threshold at which bottleneck occurs (e.g., VU count)"
|
|
536
|
-
},
|
|
537
|
-
"impact": {
|
|
538
|
-
"type": "string",
|
|
539
|
-
"description": "Performance impact description"
|
|
540
|
-
},
|
|
541
|
-
"evidence": {
|
|
542
|
-
"type": "string",
|
|
543
|
-
"maxLength": 2000,
|
|
544
|
-
"description": "Evidence supporting the bottleneck identification"
|
|
545
|
-
},
|
|
546
|
-
"recommendation": {
|
|
547
|
-
"type": "string",
|
|
548
|
-
"description": "Recommended fix for the bottleneck"
|
|
549
|
-
},
|
|
550
|
-
"estimatedImprovement": {
|
|
551
|
-
"type": "string",
|
|
552
|
-
"description": "Estimated improvement if bottleneck is resolved"
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
},
|
|
556
|
-
"performanceFinding": {
|
|
557
|
-
"type": "object",
|
|
558
|
-
"required": ["id", "title", "severity"],
|
|
559
|
-
"properties": {
|
|
560
|
-
"id": {
|
|
561
|
-
"type": "string",
|
|
562
|
-
"pattern": "^PERF-\\d{3,6}$",
|
|
563
|
-
"description": "Unique finding identifier"
|
|
564
|
-
},
|
|
565
|
-
"title": {
|
|
566
|
-
"type": "string",
|
|
567
|
-
"minLength": 10,
|
|
568
|
-
"maxLength": 200,
|
|
569
|
-
"description": "Finding title"
|
|
570
|
-
},
|
|
571
|
-
"description": {
|
|
572
|
-
"type": "string",
|
|
573
|
-
"maxLength": 2000,
|
|
574
|
-
"description": "Detailed finding description"
|
|
575
|
-
},
|
|
576
|
-
"severity": {
|
|
577
|
-
"type": "string",
|
|
578
|
-
"enum": ["critical", "high", "medium", "low", "info"],
|
|
579
|
-
"description": "Finding severity"
|
|
580
|
-
},
|
|
581
|
-
"category": {
|
|
582
|
-
"type": "string",
|
|
583
|
-
"enum": ["latency", "throughput", "error-rate", "resource", "scalability", "stability", "memory-leak", "connection-exhaustion", "timeout", "other"],
|
|
584
|
-
"description": "Finding category"
|
|
585
|
-
},
|
|
586
|
-
"metric": {
|
|
587
|
-
"type": "string",
|
|
588
|
-
"description": "Related metric"
|
|
589
|
-
},
|
|
590
|
-
"value": {
|
|
591
|
-
"type": "number",
|
|
592
|
-
"description": "Measured value"
|
|
593
|
-
},
|
|
594
|
-
"threshold": {
|
|
595
|
-
"type": "number",
|
|
596
|
-
"description": "Threshold value"
|
|
597
|
-
},
|
|
598
|
-
"location": {
|
|
599
|
-
"$ref": "#/$defs/location",
|
|
600
|
-
"description": "Location of the issue"
|
|
601
|
-
},
|
|
602
|
-
"evidence": {
|
|
603
|
-
"type": "string",
|
|
604
|
-
"description": "Supporting evidence"
|
|
605
|
-
},
|
|
606
|
-
"confidence": {
|
|
607
|
-
"type": "number",
|
|
608
|
-
"minimum": 0,
|
|
609
|
-
"maximum": 1,
|
|
610
|
-
"description": "Confidence in finding (0.0-1.0)"
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
},
|
|
614
|
-
"performanceRecommendation": {
|
|
615
|
-
"type": "object",
|
|
616
|
-
"required": ["id", "title", "priority"],
|
|
617
|
-
"properties": {
|
|
618
|
-
"id": {
|
|
619
|
-
"type": "string",
|
|
620
|
-
"pattern": "^REC-\\d{3,6}$",
|
|
621
|
-
"description": "Unique recommendation identifier"
|
|
622
|
-
},
|
|
623
|
-
"title": {
|
|
624
|
-
"type": "string",
|
|
625
|
-
"minLength": 10,
|
|
626
|
-
"maxLength": 200,
|
|
627
|
-
"description": "Recommendation title"
|
|
628
|
-
},
|
|
629
|
-
"description": {
|
|
630
|
-
"type": "string",
|
|
631
|
-
"maxLength": 2000,
|
|
632
|
-
"description": "Detailed recommendation"
|
|
633
|
-
},
|
|
634
|
-
"priority": {
|
|
635
|
-
"type": "string",
|
|
636
|
-
"enum": ["critical", "high", "medium", "low"],
|
|
637
|
-
"description": "Implementation priority"
|
|
638
|
-
},
|
|
639
|
-
"effort": {
|
|
640
|
-
"type": "string",
|
|
641
|
-
"enum": ["trivial", "low", "medium", "high", "major"],
|
|
642
|
-
"description": "Estimated implementation effort"
|
|
643
|
-
},
|
|
644
|
-
"impact": {
|
|
645
|
-
"type": "integer",
|
|
646
|
-
"minimum": 1,
|
|
647
|
-
"maximum": 10,
|
|
648
|
-
"description": "Expected performance impact (1-10)"
|
|
649
|
-
},
|
|
650
|
-
"category": {
|
|
651
|
-
"type": "string",
|
|
652
|
-
"enum": ["optimization", "scaling", "caching", "database", "infrastructure", "code", "configuration", "architecture"],
|
|
653
|
-
"description": "Recommendation category"
|
|
654
|
-
},
|
|
655
|
-
"relatedBottlenecks": {
|
|
656
|
-
"type": "array",
|
|
657
|
-
"items": {
|
|
658
|
-
"type": "string",
|
|
659
|
-
"pattern": "^PERF-\\d{3,6}$"
|
|
660
|
-
},
|
|
661
|
-
"description": "Related bottleneck IDs"
|
|
662
|
-
},
|
|
663
|
-
"estimatedImprovement": {
|
|
664
|
-
"type": "string",
|
|
665
|
-
"description": "Estimated performance improvement"
|
|
666
|
-
},
|
|
667
|
-
"codeExample": {
|
|
668
|
-
"type": "object",
|
|
669
|
-
"properties": {
|
|
670
|
-
"before": { "type": "string" },
|
|
671
|
-
"after": { "type": "string" },
|
|
672
|
-
"language": { "type": "string" }
|
|
673
|
-
},
|
|
674
|
-
"description": "Before/after code examples"
|
|
675
|
-
},
|
|
676
|
-
"resources": {
|
|
677
|
-
"type": "array",
|
|
678
|
-
"items": {
|
|
679
|
-
"type": "object",
|
|
680
|
-
"required": ["title", "url"],
|
|
681
|
-
"properties": {
|
|
682
|
-
"title": { "type": "string" },
|
|
683
|
-
"url": { "type": "string" }
|
|
684
|
-
}
|
|
685
|
-
},
|
|
686
|
-
"maxItems": 10,
|
|
687
|
-
"description": "External resources"
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
},
|
|
691
|
-
"testScenario": {
|
|
692
|
-
"type": "object",
|
|
693
|
-
"required": ["name", "status"],
|
|
694
|
-
"properties": {
|
|
695
|
-
"name": {
|
|
696
|
-
"type": "string",
|
|
697
|
-
"description": "Scenario name"
|
|
698
|
-
},
|
|
699
|
-
"description": {
|
|
700
|
-
"type": "string",
|
|
701
|
-
"description": "Scenario description"
|
|
702
|
-
},
|
|
703
|
-
"status": {
|
|
704
|
-
"type": "string",
|
|
705
|
-
"enum": ["passed", "failed", "skipped"],
|
|
706
|
-
"description": "Scenario execution status"
|
|
707
|
-
},
|
|
708
|
-
"virtualUsers": {
|
|
709
|
-
"type": "integer",
|
|
710
|
-
"minimum": 1,
|
|
711
|
-
"description": "Virtual users for this scenario"
|
|
712
|
-
},
|
|
713
|
-
"duration": {
|
|
714
|
-
"type": "integer",
|
|
715
|
-
"minimum": 0,
|
|
716
|
-
"description": "Scenario duration in seconds"
|
|
717
|
-
},
|
|
718
|
-
"metrics": {
|
|
719
|
-
"$ref": "#/$defs/performanceMetrics",
|
|
720
|
-
"description": "Scenario-specific metrics"
|
|
721
|
-
},
|
|
722
|
-
"thresholdsResult": {
|
|
723
|
-
"type": "string",
|
|
724
|
-
"enum": ["passed", "failed", "partial"],
|
|
725
|
-
"description": "Whether scenario met its thresholds"
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
},
|
|
729
|
-
"resourceUtilization": {
|
|
730
|
-
"type": "object",
|
|
731
|
-
"properties": {
|
|
732
|
-
"cpu": {
|
|
733
|
-
"$ref": "#/$defs/resourceMetric",
|
|
734
|
-
"description": "CPU utilization"
|
|
735
|
-
},
|
|
736
|
-
"memory": {
|
|
737
|
-
"$ref": "#/$defs/resourceMetric",
|
|
738
|
-
"description": "Memory utilization"
|
|
739
|
-
},
|
|
740
|
-
"disk": {
|
|
741
|
-
"$ref": "#/$defs/resourceMetric",
|
|
742
|
-
"description": "Disk I/O utilization"
|
|
743
|
-
},
|
|
744
|
-
"network": {
|
|
745
|
-
"$ref": "#/$defs/resourceMetric",
|
|
746
|
-
"description": "Network utilization"
|
|
747
|
-
},
|
|
748
|
-
"database": {
|
|
749
|
-
"type": "object",
|
|
750
|
-
"properties": {
|
|
751
|
-
"connectionPoolUsage": {
|
|
752
|
-
"type": "number",
|
|
753
|
-
"minimum": 0,
|
|
754
|
-
"maximum": 100,
|
|
755
|
-
"description": "Connection pool usage percentage"
|
|
756
|
-
},
|
|
757
|
-
"queryTime": {
|
|
758
|
-
"type": "number",
|
|
759
|
-
"minimum": 0,
|
|
760
|
-
"description": "Average query time in ms"
|
|
761
|
-
},
|
|
762
|
-
"activeConnections": {
|
|
763
|
-
"type": "integer",
|
|
764
|
-
"minimum": 0,
|
|
765
|
-
"description": "Active database connections"
|
|
766
|
-
}
|
|
767
|
-
},
|
|
768
|
-
"description": "Database metrics"
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
},
|
|
772
|
-
"resourceMetric": {
|
|
773
|
-
"type": "object",
|
|
774
|
-
"properties": {
|
|
775
|
-
"avg": {
|
|
776
|
-
"type": "number",
|
|
777
|
-
"minimum": 0,
|
|
778
|
-
"maximum": 100,
|
|
779
|
-
"description": "Average utilization percentage"
|
|
780
|
-
},
|
|
781
|
-
"max": {
|
|
782
|
-
"type": "number",
|
|
783
|
-
"minimum": 0,
|
|
784
|
-
"maximum": 100,
|
|
785
|
-
"description": "Maximum utilization percentage"
|
|
786
|
-
},
|
|
787
|
-
"min": {
|
|
788
|
-
"type": "number",
|
|
789
|
-
"minimum": 0,
|
|
790
|
-
"maximum": 100,
|
|
791
|
-
"description": "Minimum utilization percentage"
|
|
792
|
-
},
|
|
793
|
-
"p95": {
|
|
794
|
-
"type": "number",
|
|
795
|
-
"minimum": 0,
|
|
796
|
-
"maximum": 100,
|
|
797
|
-
"description": "95th percentile utilization"
|
|
798
|
-
}
|
|
799
|
-
}
|
|
800
|
-
},
|
|
801
|
-
"testConfiguration": {
|
|
802
|
-
"type": "object",
|
|
803
|
-
"properties": {
|
|
804
|
-
"target": {
|
|
805
|
-
"type": "string",
|
|
806
|
-
"description": "Test target (URL or service)"
|
|
807
|
-
},
|
|
808
|
-
"tool": {
|
|
809
|
-
"type": "string",
|
|
810
|
-
"enum": ["k6", "artillery", "jmeter", "gatling", "locust", "wrk", "ab", "vegeta", "custom"],
|
|
811
|
-
"description": "Performance testing tool used"
|
|
812
|
-
},
|
|
813
|
-
"toolVersion": {
|
|
814
|
-
"type": "string",
|
|
815
|
-
"description": "Version of the testing tool"
|
|
816
|
-
},
|
|
817
|
-
"testType": {
|
|
818
|
-
"type": "string",
|
|
819
|
-
"enum": ["load", "stress", "endurance", "spike", "volume", "scalability", "smoke", "soak"],
|
|
820
|
-
"description": "Type of performance test"
|
|
821
|
-
},
|
|
822
|
-
"duration": {
|
|
823
|
-
"type": "integer",
|
|
824
|
-
"minimum": 0,
|
|
825
|
-
"description": "Total test duration in seconds"
|
|
826
|
-
},
|
|
827
|
-
"virtualUsers": {
|
|
828
|
-
"type": "integer",
|
|
829
|
-
"minimum": 1,
|
|
830
|
-
"description": "Number of virtual users"
|
|
831
|
-
},
|
|
832
|
-
"rampUp": {
|
|
833
|
-
"type": "integer",
|
|
834
|
-
"minimum": 0,
|
|
835
|
-
"description": "Ramp-up time in seconds"
|
|
836
|
-
},
|
|
837
|
-
"steadyState": {
|
|
838
|
-
"type": "integer",
|
|
839
|
-
"minimum": 0,
|
|
840
|
-
"description": "Steady state duration in seconds"
|
|
841
|
-
},
|
|
842
|
-
"rampDown": {
|
|
843
|
-
"type": "integer",
|
|
844
|
-
"minimum": 0,
|
|
845
|
-
"description": "Ramp-down time in seconds"
|
|
846
|
-
},
|
|
847
|
-
"thresholds": {
|
|
848
|
-
"type": "object",
|
|
849
|
-
"additionalProperties": {
|
|
850
|
-
"type": ["string", "number", "array"]
|
|
851
|
-
},
|
|
852
|
-
"description": "Configured thresholds"
|
|
853
|
-
},
|
|
854
|
-
"scenarios": {
|
|
855
|
-
"type": "array",
|
|
856
|
-
"items": {
|
|
857
|
-
"type": "string"
|
|
858
|
-
},
|
|
859
|
-
"description": "Scenario names"
|
|
860
|
-
},
|
|
861
|
-
"endpoints": {
|
|
862
|
-
"type": "array",
|
|
863
|
-
"items": {
|
|
864
|
-
"type": "string"
|
|
865
|
-
},
|
|
866
|
-
"description": "Endpoints tested"
|
|
867
|
-
},
|
|
868
|
-
"environment": {
|
|
869
|
-
"type": "string",
|
|
870
|
-
"enum": ["development", "staging", "production", "ci"],
|
|
871
|
-
"description": "Test environment"
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
},
|
|
875
|
-
"performanceComparison": {
|
|
876
|
-
"type": "object",
|
|
877
|
-
"properties": {
|
|
878
|
-
"baselineVersion": {
|
|
879
|
-
"type": "string",
|
|
880
|
-
"description": "Baseline version for comparison"
|
|
881
|
-
},
|
|
882
|
-
"currentVersion": {
|
|
883
|
-
"type": "string",
|
|
884
|
-
"description": "Current version being tested"
|
|
885
|
-
},
|
|
886
|
-
"comparisonType": {
|
|
887
|
-
"type": "string",
|
|
888
|
-
"enum": ["baseline", "previous", "release", "custom"],
|
|
889
|
-
"description": "Type of comparison"
|
|
890
|
-
},
|
|
891
|
-
"regressionDetected": {
|
|
892
|
-
"type": "boolean",
|
|
893
|
-
"description": "Whether performance regression was detected"
|
|
894
|
-
},
|
|
895
|
-
"tolerancePercentage": {
|
|
896
|
-
"type": "number",
|
|
897
|
-
"minimum": 0,
|
|
898
|
-
"maximum": 100,
|
|
899
|
-
"description": "Allowed deviation percentage"
|
|
900
|
-
},
|
|
901
|
-
"metrics": {
|
|
902
|
-
"type": "array",
|
|
903
|
-
"items": {
|
|
904
|
-
"$ref": "#/$defs/metricComparison"
|
|
905
|
-
},
|
|
906
|
-
"description": "Individual metric comparisons"
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
},
|
|
910
|
-
"metricComparison": {
|
|
911
|
-
"type": "object",
|
|
912
|
-
"required": ["metric", "baseline", "current"],
|
|
913
|
-
"properties": {
|
|
914
|
-
"metric": {
|
|
915
|
-
"type": "string",
|
|
916
|
-
"description": "Metric name"
|
|
917
|
-
},
|
|
918
|
-
"baseline": {
|
|
919
|
-
"type": "number",
|
|
920
|
-
"description": "Baseline value"
|
|
921
|
-
},
|
|
922
|
-
"current": {
|
|
923
|
-
"type": "number",
|
|
924
|
-
"description": "Current value"
|
|
925
|
-
},
|
|
926
|
-
"change": {
|
|
927
|
-
"type": "number",
|
|
928
|
-
"description": "Absolute change"
|
|
929
|
-
},
|
|
930
|
-
"changePercentage": {
|
|
931
|
-
"type": "number",
|
|
932
|
-
"description": "Change as percentage"
|
|
933
|
-
},
|
|
934
|
-
"status": {
|
|
935
|
-
"type": "string",
|
|
936
|
-
"enum": ["improved", "stable", "degraded", "regression"],
|
|
937
|
-
"description": "Comparison status"
|
|
938
|
-
},
|
|
939
|
-
"withinTolerance": {
|
|
940
|
-
"type": "boolean",
|
|
941
|
-
"description": "Whether change is within tolerance"
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
},
|
|
945
|
-
"location": {
|
|
946
|
-
"type": "object",
|
|
947
|
-
"properties": {
|
|
948
|
-
"endpoint": {
|
|
949
|
-
"type": "string",
|
|
950
|
-
"description": "API endpoint"
|
|
951
|
-
},
|
|
952
|
-
"method": {
|
|
953
|
-
"type": "string",
|
|
954
|
-
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"],
|
|
955
|
-
"description": "HTTP method"
|
|
956
|
-
},
|
|
957
|
-
"service": {
|
|
958
|
-
"type": "string",
|
|
959
|
-
"description": "Service name"
|
|
960
|
-
},
|
|
961
|
-
"component": {
|
|
962
|
-
"type": "string",
|
|
963
|
-
"description": "System component"
|
|
964
|
-
},
|
|
965
|
-
"file": {
|
|
966
|
-
"type": "string",
|
|
967
|
-
"description": "Source file if applicable"
|
|
968
|
-
},
|
|
969
|
-
"line": {
|
|
970
|
-
"type": "integer",
|
|
971
|
-
"minimum": 1,
|
|
972
|
-
"description": "Line number if applicable"
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
},
|
|
976
|
-
"artifact": {
|
|
977
|
-
"type": "object",
|
|
978
|
-
"required": ["type", "path"],
|
|
979
|
-
"properties": {
|
|
980
|
-
"type": {
|
|
981
|
-
"type": "string",
|
|
982
|
-
"enum": ["report", "data", "log", "chart", "flamegraph", "profile", "trace", "config"],
|
|
983
|
-
"description": "Artifact type"
|
|
984
|
-
},
|
|
985
|
-
"path": {
|
|
986
|
-
"type": "string",
|
|
987
|
-
"maxLength": 500,
|
|
988
|
-
"description": "Path to artifact"
|
|
989
|
-
},
|
|
990
|
-
"format": {
|
|
991
|
-
"type": "string",
|
|
992
|
-
"enum": ["json", "html", "csv", "xml", "txt", "png", "svg", "pdf"],
|
|
993
|
-
"description": "Artifact format"
|
|
994
|
-
},
|
|
995
|
-
"description": {
|
|
996
|
-
"type": "string",
|
|
997
|
-
"maxLength": 500,
|
|
998
|
-
"description": "Artifact description"
|
|
999
|
-
},
|
|
1000
|
-
"sizeBytes": {
|
|
1001
|
-
"type": "integer",
|
|
1002
|
-
"minimum": 0,
|
|
1003
|
-
"description": "File size in bytes"
|
|
1004
|
-
}
|
|
1005
|
-
}
|
|
1006
|
-
},
|
|
1007
|
-
"timelineEvent": {
|
|
1008
|
-
"type": "object",
|
|
1009
|
-
"required": ["timestamp", "event"],
|
|
1010
|
-
"properties": {
|
|
1011
|
-
"timestamp": {
|
|
1012
|
-
"type": "string",
|
|
1013
|
-
"type": "string",
|
|
1014
|
-
"description": "Event timestamp"
|
|
1015
|
-
},
|
|
1016
|
-
"event": {
|
|
1017
|
-
"type": "string",
|
|
1018
|
-
"maxLength": 200,
|
|
1019
|
-
"description": "Event description"
|
|
1020
|
-
},
|
|
1021
|
-
"type": {
|
|
1022
|
-
"type": "string",
|
|
1023
|
-
"enum": ["start", "ramp-up", "steady-state", "ramp-down", "checkpoint", "warning", "error", "complete"],
|
|
1024
|
-
"description": "Event type"
|
|
1025
|
-
},
|
|
1026
|
-
"durationMs": {
|
|
1027
|
-
"type": "integer",
|
|
1028
|
-
"minimum": 0,
|
|
1029
|
-
"description": "Duration since previous event"
|
|
1030
|
-
},
|
|
1031
|
-
"phase": {
|
|
1032
|
-
"type": "string",
|
|
1033
|
-
"enum": ["initialization", "warmup", "load", "cooldown", "analysis", "reporting"],
|
|
1034
|
-
"description": "Test phase"
|
|
1035
|
-
},
|
|
1036
|
-
"virtualUsers": {
|
|
1037
|
-
"type": "integer",
|
|
1038
|
-
"minimum": 0,
|
|
1039
|
-
"description": "Virtual users at this point"
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
|
-
},
|
|
1043
|
-
"metadata": {
|
|
1044
|
-
"type": "object",
|
|
1045
|
-
"properties": {
|
|
1046
|
-
"executionTimeMs": {
|
|
1047
|
-
"type": "integer",
|
|
1048
|
-
"minimum": 0,
|
|
1049
|
-
"maximum": 86400000,
|
|
1050
|
-
"description": "Total execution time in milliseconds (max 24 hours)"
|
|
1051
|
-
},
|
|
1052
|
-
"toolsUsed": {
|
|
1053
|
-
"type": "array",
|
|
1054
|
-
"items": {
|
|
1055
|
-
"type": "string",
|
|
1056
|
-
"enum": ["k6", "artillery", "jmeter", "gatling", "locust", "wrk", "ab", "vegeta", "prometheus", "grafana", "datadog", "newrelic"]
|
|
1057
|
-
},
|
|
1058
|
-
"uniqueItems": true,
|
|
1059
|
-
"description": "Performance tools used"
|
|
1060
|
-
},
|
|
1061
|
-
"agentId": {
|
|
1062
|
-
"type": "string",
|
|
1063
|
-
"pattern": "^qe-[a-z][a-z0-9-]*$",
|
|
1064
|
-
"description": "Agent ID (e.g., qe-performance-tester)"
|
|
1065
|
-
},
|
|
1066
|
-
"modelUsed": {
|
|
1067
|
-
"type": "string",
|
|
1068
|
-
"description": "LLM model used for analysis"
|
|
1069
|
-
},
|
|
1070
|
-
"inputHash": {
|
|
1071
|
-
"type": "string",
|
|
1072
|
-
"pattern": "^[a-f0-9]{64}$",
|
|
1073
|
-
"description": "SHA-256 hash of input"
|
|
1074
|
-
},
|
|
1075
|
-
"targetUrl": {
|
|
1076
|
-
"type": "string",
|
|
1077
|
-
"type": "string",
|
|
1078
|
-
"description": "Target URL"
|
|
1079
|
-
},
|
|
1080
|
-
"environment": {
|
|
1081
|
-
"type": "string",
|
|
1082
|
-
"enum": ["development", "staging", "production", "ci"],
|
|
1083
|
-
"description": "Execution environment"
|
|
1084
|
-
},
|
|
1085
|
-
"retryCount": {
|
|
1086
|
-
"type": "integer",
|
|
1087
|
-
"minimum": 0,
|
|
1088
|
-
"maximum": 10,
|
|
1089
|
-
"description": "Number of retries"
|
|
1090
|
-
}
|
|
1091
|
-
}
|
|
1092
|
-
},
|
|
1093
|
-
"validationResult": {
|
|
1094
|
-
"type": "object",
|
|
1095
|
-
"properties": {
|
|
1096
|
-
"schemaValid": {
|
|
1097
|
-
"type": "boolean",
|
|
1098
|
-
"description": "Passes JSON schema validation"
|
|
1099
|
-
},
|
|
1100
|
-
"contentValid": {
|
|
1101
|
-
"type": "boolean",
|
|
1102
|
-
"description": "Passes content validation"
|
|
1103
|
-
},
|
|
1104
|
-
"confidence": {
|
|
1105
|
-
"type": "number",
|
|
1106
|
-
"minimum": 0,
|
|
1107
|
-
"maximum": 1,
|
|
1108
|
-
"description": "Confidence score"
|
|
1109
|
-
},
|
|
1110
|
-
"warnings": {
|
|
1111
|
-
"type": "array",
|
|
1112
|
-
"items": {
|
|
1113
|
-
"type": "string",
|
|
1114
|
-
"maxLength": 500
|
|
1115
|
-
},
|
|
1116
|
-
"maxItems": 20,
|
|
1117
|
-
"description": "Validation warnings"
|
|
1118
|
-
},
|
|
1119
|
-
"errors": {
|
|
1120
|
-
"type": "array",
|
|
1121
|
-
"items": {
|
|
1122
|
-
"type": "string",
|
|
1123
|
-
"maxLength": 500
|
|
1124
|
-
},
|
|
1125
|
-
"maxItems": 20,
|
|
1126
|
-
"description": "Validation errors"
|
|
1127
|
-
},
|
|
1128
|
-
"validatorVersion": {
|
|
1129
|
-
"type": "string",
|
|
1130
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
1131
|
-
"description": "Validator version"
|
|
1132
|
-
}
|
|
1133
|
-
}
|
|
1134
|
-
},
|
|
1135
|
-
"learningData": {
|
|
1136
|
-
"type": "object",
|
|
1137
|
-
"properties": {
|
|
1138
|
-
"patternsDetected": {
|
|
1139
|
-
"type": "array",
|
|
1140
|
-
"items": {
|
|
1141
|
-
"type": "string",
|
|
1142
|
-
"maxLength": 200
|
|
1143
|
-
},
|
|
1144
|
-
"maxItems": 20,
|
|
1145
|
-
"description": "Performance patterns detected (e.g., n+1-query, connection-pool-exhaustion)"
|
|
1146
|
-
},
|
|
1147
|
-
"reward": {
|
|
1148
|
-
"type": "number",
|
|
1149
|
-
"minimum": 0,
|
|
1150
|
-
"maximum": 1,
|
|
1151
|
-
"description": "Reward signal for learning (0.0-1.0)"
|
|
1152
|
-
},
|
|
1153
|
-
"feedbackLoop": {
|
|
1154
|
-
"type": "object",
|
|
1155
|
-
"properties": {
|
|
1156
|
-
"previousRunId": {
|
|
1157
|
-
"type": "string",
|
|
1158
|
-
"type": "string",
|
|
1159
|
-
"description": "Previous run ID for comparison"
|
|
1160
|
-
},
|
|
1161
|
-
"improvement": {
|
|
1162
|
-
"type": "number",
|
|
1163
|
-
"minimum": -1,
|
|
1164
|
-
"maximum": 1,
|
|
1165
|
-
"description": "Improvement over previous run"
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
|
-
},
|
|
1169
|
-
"newPerformancePatterns": {
|
|
1170
|
-
"type": "array",
|
|
1171
|
-
"items": {
|
|
1172
|
-
"type": "object",
|
|
1173
|
-
"properties": {
|
|
1174
|
-
"pattern": { "type": "string" },
|
|
1175
|
-
"bottleneckType": { "type": "string" },
|
|
1176
|
-
"confidence": { "type": "number" }
|
|
1177
|
-
}
|
|
1178
|
-
},
|
|
1179
|
-
"description": "New performance patterns learned"
|
|
1180
|
-
}
|
|
1181
|
-
}
|
|
1182
|
-
}
|
|
1183
|
-
}
|
|
1184
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://agentic-qe.dev/schemas/performance-testing-output.json",
|
|
4
|
+
"title": "AQE Performance Testing Skill Output Schema",
|
|
5
|
+
"description": "Schema for performance-testing skill output validation. Extends the base skill-output template with load testing metrics, SLA validation, bottleneck identification, and multi-tool support (k6, Artillery, JMeter, Gatling).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"skillName": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "performance-testing",
|
|
12
|
+
"description": "Must be 'performance-testing'"
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$",
|
|
17
|
+
"description": "Semantic version of the skill"
|
|
18
|
+
},
|
|
19
|
+
"timestamp": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "ISO 8601 timestamp of output generation"
|
|
23
|
+
},
|
|
24
|
+
"status": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"enum": ["success", "partial", "failed", "skipped"],
|
|
27
|
+
"description": "Overall execution status"
|
|
28
|
+
},
|
|
29
|
+
"trustTier": {
|
|
30
|
+
"type": "integer",
|
|
31
|
+
"const": 3,
|
|
32
|
+
"description": "Trust tier 3 indicates full validation with eval suite"
|
|
33
|
+
},
|
|
34
|
+
"output": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"required": ["summary", "testType", "metrics"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"summary": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 50,
|
|
41
|
+
"maxLength": 2000,
|
|
42
|
+
"description": "Human-readable summary of performance test results"
|
|
43
|
+
},
|
|
44
|
+
"testType": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"enum": ["load", "stress", "endurance", "spike", "volume", "scalability", "smoke", "soak"],
|
|
47
|
+
"description": "Type of performance test executed"
|
|
48
|
+
},
|
|
49
|
+
"score": {
|
|
50
|
+
"$ref": "#/$defs/performanceScore",
|
|
51
|
+
"description": "Overall performance score"
|
|
52
|
+
},
|
|
53
|
+
"metrics": {
|
|
54
|
+
"$ref": "#/$defs/performanceMetrics",
|
|
55
|
+
"description": "Core performance metrics including response times and throughput"
|
|
56
|
+
},
|
|
57
|
+
"slaCompliance": {
|
|
58
|
+
"$ref": "#/$defs/slaCompliance",
|
|
59
|
+
"description": "SLA/SLO compliance check results"
|
|
60
|
+
},
|
|
61
|
+
"bottlenecks": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": {
|
|
64
|
+
"$ref": "#/$defs/bottleneck"
|
|
65
|
+
},
|
|
66
|
+
"maxItems": 50,
|
|
67
|
+
"description": "Identified performance bottlenecks"
|
|
68
|
+
},
|
|
69
|
+
"findings": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"$ref": "#/$defs/performanceFinding"
|
|
73
|
+
},
|
|
74
|
+
"maxItems": 100,
|
|
75
|
+
"description": "Performance issues and observations"
|
|
76
|
+
},
|
|
77
|
+
"recommendations": {
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": {
|
|
80
|
+
"$ref": "#/$defs/performanceRecommendation"
|
|
81
|
+
},
|
|
82
|
+
"maxItems": 50,
|
|
83
|
+
"description": "Optimization recommendations"
|
|
84
|
+
},
|
|
85
|
+
"scenarios": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"items": {
|
|
88
|
+
"$ref": "#/$defs/testScenario"
|
|
89
|
+
},
|
|
90
|
+
"maxItems": 20,
|
|
91
|
+
"description": "Individual test scenario results"
|
|
92
|
+
},
|
|
93
|
+
"resourceUtilization": {
|
|
94
|
+
"$ref": "#/$defs/resourceUtilization",
|
|
95
|
+
"description": "System resource utilization during test"
|
|
96
|
+
},
|
|
97
|
+
"artifacts": {
|
|
98
|
+
"type": "array",
|
|
99
|
+
"items": {
|
|
100
|
+
"$ref": "#/$defs/artifact"
|
|
101
|
+
},
|
|
102
|
+
"maxItems": 50,
|
|
103
|
+
"description": "Generated reports and data files"
|
|
104
|
+
},
|
|
105
|
+
"timeline": {
|
|
106
|
+
"type": "array",
|
|
107
|
+
"items": {
|
|
108
|
+
"$ref": "#/$defs/timelineEvent"
|
|
109
|
+
},
|
|
110
|
+
"description": "Test execution timeline"
|
|
111
|
+
},
|
|
112
|
+
"testConfiguration": {
|
|
113
|
+
"$ref": "#/$defs/testConfiguration",
|
|
114
|
+
"description": "Configuration used for the performance test"
|
|
115
|
+
},
|
|
116
|
+
"comparison": {
|
|
117
|
+
"$ref": "#/$defs/performanceComparison",
|
|
118
|
+
"description": "Comparison with baseline or previous run"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"metadata": {
|
|
123
|
+
"$ref": "#/$defs/metadata"
|
|
124
|
+
},
|
|
125
|
+
"validation": {
|
|
126
|
+
"$ref": "#/$defs/validationResult"
|
|
127
|
+
},
|
|
128
|
+
"learning": {
|
|
129
|
+
"$ref": "#/$defs/learningData"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"$defs": {
|
|
133
|
+
"performanceScore": {
|
|
134
|
+
"type": "object",
|
|
135
|
+
"required": ["value", "max"],
|
|
136
|
+
"properties": {
|
|
137
|
+
"value": {
|
|
138
|
+
"type": "number",
|
|
139
|
+
"minimum": 0,
|
|
140
|
+
"maximum": 100,
|
|
141
|
+
"description": "Performance score (0=critical issues, 100=excellent performance)"
|
|
142
|
+
},
|
|
143
|
+
"max": {
|
|
144
|
+
"type": "number",
|
|
145
|
+
"const": 100,
|
|
146
|
+
"description": "Maximum score is always 100"
|
|
147
|
+
},
|
|
148
|
+
"grade": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"pattern": "^[A-F][+-]?$",
|
|
151
|
+
"description": "Letter grade: A (90-100), B (80-89), C (70-79), D (60-69), F (<60)"
|
|
152
|
+
},
|
|
153
|
+
"trend": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"enum": ["improving", "stable", "declining", "unknown"],
|
|
156
|
+
"description": "Trend compared to previous tests"
|
|
157
|
+
},
|
|
158
|
+
"healthStatus": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"enum": ["healthy", "degraded", "critical", "unknown"],
|
|
161
|
+
"description": "Overall system health during test"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"performanceMetrics": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"required": ["responseTime", "throughput"],
|
|
168
|
+
"properties": {
|
|
169
|
+
"responseTime": {
|
|
170
|
+
"$ref": "#/$defs/responseTimeMetrics",
|
|
171
|
+
"description": "Response time statistics"
|
|
172
|
+
},
|
|
173
|
+
"throughput": {
|
|
174
|
+
"$ref": "#/$defs/throughputMetrics",
|
|
175
|
+
"description": "Throughput statistics"
|
|
176
|
+
},
|
|
177
|
+
"errorRate": {
|
|
178
|
+
"$ref": "#/$defs/errorRateMetrics",
|
|
179
|
+
"description": "Error rate statistics"
|
|
180
|
+
},
|
|
181
|
+
"concurrency": {
|
|
182
|
+
"$ref": "#/$defs/concurrencyMetrics",
|
|
183
|
+
"description": "Concurrency and virtual user metrics"
|
|
184
|
+
},
|
|
185
|
+
"dataTransfer": {
|
|
186
|
+
"$ref": "#/$defs/dataTransferMetrics",
|
|
187
|
+
"description": "Data transfer metrics"
|
|
188
|
+
},
|
|
189
|
+
"custom": {
|
|
190
|
+
"type": "object",
|
|
191
|
+
"additionalProperties": {
|
|
192
|
+
"oneOf": [
|
|
193
|
+
{ "type": "number" },
|
|
194
|
+
{ "type": "string" },
|
|
195
|
+
{ "type": "boolean" }
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
"description": "Custom metrics specific to the test"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"responseTimeMetrics": {
|
|
203
|
+
"type": "object",
|
|
204
|
+
"properties": {
|
|
205
|
+
"min": {
|
|
206
|
+
"type": "number",
|
|
207
|
+
"minimum": 0,
|
|
208
|
+
"description": "Minimum response time in milliseconds"
|
|
209
|
+
},
|
|
210
|
+
"max": {
|
|
211
|
+
"type": "number",
|
|
212
|
+
"minimum": 0,
|
|
213
|
+
"description": "Maximum response time in milliseconds"
|
|
214
|
+
},
|
|
215
|
+
"avg": {
|
|
216
|
+
"type": "number",
|
|
217
|
+
"minimum": 0,
|
|
218
|
+
"description": "Average response time in milliseconds"
|
|
219
|
+
},
|
|
220
|
+
"median": {
|
|
221
|
+
"type": "number",
|
|
222
|
+
"minimum": 0,
|
|
223
|
+
"description": "Median (p50) response time in milliseconds"
|
|
224
|
+
},
|
|
225
|
+
"p50": {
|
|
226
|
+
"type": "number",
|
|
227
|
+
"minimum": 0,
|
|
228
|
+
"description": "50th percentile response time in milliseconds"
|
|
229
|
+
},
|
|
230
|
+
"p75": {
|
|
231
|
+
"type": "number",
|
|
232
|
+
"minimum": 0,
|
|
233
|
+
"description": "75th percentile response time in milliseconds"
|
|
234
|
+
},
|
|
235
|
+
"p90": {
|
|
236
|
+
"type": "number",
|
|
237
|
+
"minimum": 0,
|
|
238
|
+
"description": "90th percentile response time in milliseconds"
|
|
239
|
+
},
|
|
240
|
+
"p95": {
|
|
241
|
+
"type": "number",
|
|
242
|
+
"minimum": 0,
|
|
243
|
+
"description": "95th percentile response time in milliseconds"
|
|
244
|
+
},
|
|
245
|
+
"p99": {
|
|
246
|
+
"type": "number",
|
|
247
|
+
"minimum": 0,
|
|
248
|
+
"description": "99th percentile response time in milliseconds"
|
|
249
|
+
},
|
|
250
|
+
"p999": {
|
|
251
|
+
"type": "number",
|
|
252
|
+
"minimum": 0,
|
|
253
|
+
"description": "99.9th percentile response time in milliseconds"
|
|
254
|
+
},
|
|
255
|
+
"stdDev": {
|
|
256
|
+
"type": "number",
|
|
257
|
+
"minimum": 0,
|
|
258
|
+
"description": "Standard deviation of response times"
|
|
259
|
+
},
|
|
260
|
+
"unit": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"enum": ["ms", "s", "us"],
|
|
263
|
+
"default": "ms",
|
|
264
|
+
"description": "Time unit (milliseconds, seconds, microseconds)"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"throughputMetrics": {
|
|
269
|
+
"type": "object",
|
|
270
|
+
"properties": {
|
|
271
|
+
"requestsPerSecond": {
|
|
272
|
+
"type": "number",
|
|
273
|
+
"minimum": 0,
|
|
274
|
+
"description": "Average requests per second"
|
|
275
|
+
},
|
|
276
|
+
"peakRequestsPerSecond": {
|
|
277
|
+
"type": "number",
|
|
278
|
+
"minimum": 0,
|
|
279
|
+
"description": "Peak requests per second achieved"
|
|
280
|
+
},
|
|
281
|
+
"totalRequests": {
|
|
282
|
+
"type": "integer",
|
|
283
|
+
"minimum": 0,
|
|
284
|
+
"description": "Total number of requests made"
|
|
285
|
+
},
|
|
286
|
+
"successfulRequests": {
|
|
287
|
+
"type": "integer",
|
|
288
|
+
"minimum": 0,
|
|
289
|
+
"description": "Number of successful requests"
|
|
290
|
+
},
|
|
291
|
+
"failedRequests": {
|
|
292
|
+
"type": "integer",
|
|
293
|
+
"minimum": 0,
|
|
294
|
+
"description": "Number of failed requests"
|
|
295
|
+
},
|
|
296
|
+
"transactionsPerSecond": {
|
|
297
|
+
"type": "number",
|
|
298
|
+
"minimum": 0,
|
|
299
|
+
"description": "Business transactions per second"
|
|
300
|
+
},
|
|
301
|
+
"iterationsPerSecond": {
|
|
302
|
+
"type": "number",
|
|
303
|
+
"minimum": 0,
|
|
304
|
+
"description": "Test iterations per second"
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
"errorRateMetrics": {
|
|
309
|
+
"type": "object",
|
|
310
|
+
"properties": {
|
|
311
|
+
"percentage": {
|
|
312
|
+
"type": "number",
|
|
313
|
+
"minimum": 0,
|
|
314
|
+
"maximum": 100,
|
|
315
|
+
"description": "Error rate as percentage"
|
|
316
|
+
},
|
|
317
|
+
"totalErrors": {
|
|
318
|
+
"type": "integer",
|
|
319
|
+
"minimum": 0,
|
|
320
|
+
"description": "Total number of errors"
|
|
321
|
+
},
|
|
322
|
+
"errorsByType": {
|
|
323
|
+
"type": "object",
|
|
324
|
+
"additionalProperties": {
|
|
325
|
+
"type": "integer"
|
|
326
|
+
},
|
|
327
|
+
"description": "Error counts by type (e.g., timeout, 5xx, connection)"
|
|
328
|
+
},
|
|
329
|
+
"errorsByEndpoint": {
|
|
330
|
+
"type": "object",
|
|
331
|
+
"additionalProperties": {
|
|
332
|
+
"type": "integer"
|
|
333
|
+
},
|
|
334
|
+
"description": "Error counts by endpoint"
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"concurrencyMetrics": {
|
|
339
|
+
"type": "object",
|
|
340
|
+
"properties": {
|
|
341
|
+
"virtualUsers": {
|
|
342
|
+
"type": "integer",
|
|
343
|
+
"minimum": 0,
|
|
344
|
+
"description": "Number of virtual users (VUs)"
|
|
345
|
+
},
|
|
346
|
+
"peakConcurrentUsers": {
|
|
347
|
+
"type": "integer",
|
|
348
|
+
"minimum": 0,
|
|
349
|
+
"description": "Peak concurrent users during test"
|
|
350
|
+
},
|
|
351
|
+
"avgConcurrentUsers": {
|
|
352
|
+
"type": "number",
|
|
353
|
+
"minimum": 0,
|
|
354
|
+
"description": "Average concurrent users"
|
|
355
|
+
},
|
|
356
|
+
"rampUpTime": {
|
|
357
|
+
"type": "integer",
|
|
358
|
+
"minimum": 0,
|
|
359
|
+
"description": "Ramp-up time in seconds"
|
|
360
|
+
},
|
|
361
|
+
"steadyStateTime": {
|
|
362
|
+
"type": "integer",
|
|
363
|
+
"minimum": 0,
|
|
364
|
+
"description": "Steady state duration in seconds"
|
|
365
|
+
},
|
|
366
|
+
"rampDownTime": {
|
|
367
|
+
"type": "integer",
|
|
368
|
+
"minimum": 0,
|
|
369
|
+
"description": "Ramp-down time in seconds"
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
"dataTransferMetrics": {
|
|
374
|
+
"type": "object",
|
|
375
|
+
"properties": {
|
|
376
|
+
"totalDataSent": {
|
|
377
|
+
"type": "integer",
|
|
378
|
+
"minimum": 0,
|
|
379
|
+
"description": "Total data sent in bytes"
|
|
380
|
+
},
|
|
381
|
+
"totalDataReceived": {
|
|
382
|
+
"type": "integer",
|
|
383
|
+
"minimum": 0,
|
|
384
|
+
"description": "Total data received in bytes"
|
|
385
|
+
},
|
|
386
|
+
"avgDataSentPerRequest": {
|
|
387
|
+
"type": "number",
|
|
388
|
+
"minimum": 0,
|
|
389
|
+
"description": "Average data sent per request in bytes"
|
|
390
|
+
},
|
|
391
|
+
"avgDataReceivedPerRequest": {
|
|
392
|
+
"type": "number",
|
|
393
|
+
"minimum": 0,
|
|
394
|
+
"description": "Average data received per request in bytes"
|
|
395
|
+
},
|
|
396
|
+
"bandwidthUtilization": {
|
|
397
|
+
"type": "number",
|
|
398
|
+
"minimum": 0,
|
|
399
|
+
"maximum": 100,
|
|
400
|
+
"description": "Bandwidth utilization percentage"
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
"slaCompliance": {
|
|
405
|
+
"type": "object",
|
|
406
|
+
"required": ["overallCompliant"],
|
|
407
|
+
"properties": {
|
|
408
|
+
"overallCompliant": {
|
|
409
|
+
"type": "boolean",
|
|
410
|
+
"description": "Whether all SLAs are met"
|
|
411
|
+
},
|
|
412
|
+
"thresholds": {
|
|
413
|
+
"type": "array",
|
|
414
|
+
"items": {
|
|
415
|
+
"$ref": "#/$defs/slaThreshold"
|
|
416
|
+
},
|
|
417
|
+
"description": "Individual SLA threshold results"
|
|
418
|
+
},
|
|
419
|
+
"compliancePercentage": {
|
|
420
|
+
"type": "number",
|
|
421
|
+
"minimum": 0,
|
|
422
|
+
"maximum": 100,
|
|
423
|
+
"description": "Percentage of SLAs met"
|
|
424
|
+
},
|
|
425
|
+
"violations": {
|
|
426
|
+
"type": "array",
|
|
427
|
+
"items": {
|
|
428
|
+
"$ref": "#/$defs/slaViolation"
|
|
429
|
+
},
|
|
430
|
+
"description": "SLA violations detected"
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
"slaThreshold": {
|
|
435
|
+
"type": "object",
|
|
436
|
+
"required": ["metric", "operator", "threshold", "actual", "passed"],
|
|
437
|
+
"properties": {
|
|
438
|
+
"metric": {
|
|
439
|
+
"type": "string",
|
|
440
|
+
"description": "Metric name (e.g., 'p95_response_time', 'error_rate')"
|
|
441
|
+
},
|
|
442
|
+
"operator": {
|
|
443
|
+
"type": "string",
|
|
444
|
+
"enum": ["<", "<=", ">", ">=", "==", "!="],
|
|
445
|
+
"description": "Comparison operator"
|
|
446
|
+
},
|
|
447
|
+
"threshold": {
|
|
448
|
+
"type": "number",
|
|
449
|
+
"description": "Threshold value"
|
|
450
|
+
},
|
|
451
|
+
"actual": {
|
|
452
|
+
"type": "number",
|
|
453
|
+
"description": "Actual measured value"
|
|
454
|
+
},
|
|
455
|
+
"passed": {
|
|
456
|
+
"type": "boolean",
|
|
457
|
+
"description": "Whether threshold was met"
|
|
458
|
+
},
|
|
459
|
+
"unit": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"description": "Unit of measurement"
|
|
462
|
+
},
|
|
463
|
+
"description": {
|
|
464
|
+
"type": "string",
|
|
465
|
+
"description": "Human-readable description"
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"slaViolation": {
|
|
470
|
+
"type": "object",
|
|
471
|
+
"required": ["metric", "severity"],
|
|
472
|
+
"properties": {
|
|
473
|
+
"metric": {
|
|
474
|
+
"type": "string",
|
|
475
|
+
"description": "Violated metric name"
|
|
476
|
+
},
|
|
477
|
+
"severity": {
|
|
478
|
+
"type": "string",
|
|
479
|
+
"enum": ["critical", "high", "medium", "low"],
|
|
480
|
+
"description": "Severity of the violation"
|
|
481
|
+
},
|
|
482
|
+
"expected": {
|
|
483
|
+
"type": "number",
|
|
484
|
+
"description": "Expected threshold value"
|
|
485
|
+
},
|
|
486
|
+
"actual": {
|
|
487
|
+
"type": "number",
|
|
488
|
+
"description": "Actual measured value"
|
|
489
|
+
},
|
|
490
|
+
"deviation": {
|
|
491
|
+
"type": "number",
|
|
492
|
+
"description": "Percentage deviation from threshold"
|
|
493
|
+
},
|
|
494
|
+
"impact": {
|
|
495
|
+
"type": "string",
|
|
496
|
+
"description": "Business impact description"
|
|
497
|
+
},
|
|
498
|
+
"timestamp": {
|
|
499
|
+
"type": "string",
|
|
500
|
+
"type": "string",
|
|
501
|
+
"description": "When violation was detected"
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"bottleneck": {
|
|
506
|
+
"type": "object",
|
|
507
|
+
"required": ["id", "type", "severity", "description"],
|
|
508
|
+
"properties": {
|
|
509
|
+
"id": {
|
|
510
|
+
"type": "string",
|
|
511
|
+
"pattern": "^PERF-\\d{3,6}$",
|
|
512
|
+
"description": "Unique bottleneck identifier (e.g., PERF-001)"
|
|
513
|
+
},
|
|
514
|
+
"type": {
|
|
515
|
+
"type": "string",
|
|
516
|
+
"enum": ["cpu", "memory", "disk", "network", "database", "api", "cache", "queue", "thread-pool", "connection-pool", "external-service", "application", "other"],
|
|
517
|
+
"description": "Type of bottleneck"
|
|
518
|
+
},
|
|
519
|
+
"severity": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"enum": ["critical", "high", "medium", "low"],
|
|
522
|
+
"description": "Severity of the bottleneck"
|
|
523
|
+
},
|
|
524
|
+
"description": {
|
|
525
|
+
"type": "string",
|
|
526
|
+
"maxLength": 1000,
|
|
527
|
+
"description": "Detailed description of the bottleneck"
|
|
528
|
+
},
|
|
529
|
+
"component": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"description": "Affected system component"
|
|
532
|
+
},
|
|
533
|
+
"threshold": {
|
|
534
|
+
"type": "number",
|
|
535
|
+
"description": "Threshold at which bottleneck occurs (e.g., VU count)"
|
|
536
|
+
},
|
|
537
|
+
"impact": {
|
|
538
|
+
"type": "string",
|
|
539
|
+
"description": "Performance impact description"
|
|
540
|
+
},
|
|
541
|
+
"evidence": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"maxLength": 2000,
|
|
544
|
+
"description": "Evidence supporting the bottleneck identification"
|
|
545
|
+
},
|
|
546
|
+
"recommendation": {
|
|
547
|
+
"type": "string",
|
|
548
|
+
"description": "Recommended fix for the bottleneck"
|
|
549
|
+
},
|
|
550
|
+
"estimatedImprovement": {
|
|
551
|
+
"type": "string",
|
|
552
|
+
"description": "Estimated improvement if bottleneck is resolved"
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
"performanceFinding": {
|
|
557
|
+
"type": "object",
|
|
558
|
+
"required": ["id", "title", "severity"],
|
|
559
|
+
"properties": {
|
|
560
|
+
"id": {
|
|
561
|
+
"type": "string",
|
|
562
|
+
"pattern": "^PERF-\\d{3,6}$",
|
|
563
|
+
"description": "Unique finding identifier"
|
|
564
|
+
},
|
|
565
|
+
"title": {
|
|
566
|
+
"type": "string",
|
|
567
|
+
"minLength": 10,
|
|
568
|
+
"maxLength": 200,
|
|
569
|
+
"description": "Finding title"
|
|
570
|
+
},
|
|
571
|
+
"description": {
|
|
572
|
+
"type": "string",
|
|
573
|
+
"maxLength": 2000,
|
|
574
|
+
"description": "Detailed finding description"
|
|
575
|
+
},
|
|
576
|
+
"severity": {
|
|
577
|
+
"type": "string",
|
|
578
|
+
"enum": ["critical", "high", "medium", "low", "info"],
|
|
579
|
+
"description": "Finding severity"
|
|
580
|
+
},
|
|
581
|
+
"category": {
|
|
582
|
+
"type": "string",
|
|
583
|
+
"enum": ["latency", "throughput", "error-rate", "resource", "scalability", "stability", "memory-leak", "connection-exhaustion", "timeout", "other"],
|
|
584
|
+
"description": "Finding category"
|
|
585
|
+
},
|
|
586
|
+
"metric": {
|
|
587
|
+
"type": "string",
|
|
588
|
+
"description": "Related metric"
|
|
589
|
+
},
|
|
590
|
+
"value": {
|
|
591
|
+
"type": "number",
|
|
592
|
+
"description": "Measured value"
|
|
593
|
+
},
|
|
594
|
+
"threshold": {
|
|
595
|
+
"type": "number",
|
|
596
|
+
"description": "Threshold value"
|
|
597
|
+
},
|
|
598
|
+
"location": {
|
|
599
|
+
"$ref": "#/$defs/location",
|
|
600
|
+
"description": "Location of the issue"
|
|
601
|
+
},
|
|
602
|
+
"evidence": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"description": "Supporting evidence"
|
|
605
|
+
},
|
|
606
|
+
"confidence": {
|
|
607
|
+
"type": "number",
|
|
608
|
+
"minimum": 0,
|
|
609
|
+
"maximum": 1,
|
|
610
|
+
"description": "Confidence in finding (0.0-1.0)"
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
"performanceRecommendation": {
|
|
615
|
+
"type": "object",
|
|
616
|
+
"required": ["id", "title", "priority"],
|
|
617
|
+
"properties": {
|
|
618
|
+
"id": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"pattern": "^REC-\\d{3,6}$",
|
|
621
|
+
"description": "Unique recommendation identifier"
|
|
622
|
+
},
|
|
623
|
+
"title": {
|
|
624
|
+
"type": "string",
|
|
625
|
+
"minLength": 10,
|
|
626
|
+
"maxLength": 200,
|
|
627
|
+
"description": "Recommendation title"
|
|
628
|
+
},
|
|
629
|
+
"description": {
|
|
630
|
+
"type": "string",
|
|
631
|
+
"maxLength": 2000,
|
|
632
|
+
"description": "Detailed recommendation"
|
|
633
|
+
},
|
|
634
|
+
"priority": {
|
|
635
|
+
"type": "string",
|
|
636
|
+
"enum": ["critical", "high", "medium", "low"],
|
|
637
|
+
"description": "Implementation priority"
|
|
638
|
+
},
|
|
639
|
+
"effort": {
|
|
640
|
+
"type": "string",
|
|
641
|
+
"enum": ["trivial", "low", "medium", "high", "major"],
|
|
642
|
+
"description": "Estimated implementation effort"
|
|
643
|
+
},
|
|
644
|
+
"impact": {
|
|
645
|
+
"type": "integer",
|
|
646
|
+
"minimum": 1,
|
|
647
|
+
"maximum": 10,
|
|
648
|
+
"description": "Expected performance impact (1-10)"
|
|
649
|
+
},
|
|
650
|
+
"category": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"enum": ["optimization", "scaling", "caching", "database", "infrastructure", "code", "configuration", "architecture"],
|
|
653
|
+
"description": "Recommendation category"
|
|
654
|
+
},
|
|
655
|
+
"relatedBottlenecks": {
|
|
656
|
+
"type": "array",
|
|
657
|
+
"items": {
|
|
658
|
+
"type": "string",
|
|
659
|
+
"pattern": "^PERF-\\d{3,6}$"
|
|
660
|
+
},
|
|
661
|
+
"description": "Related bottleneck IDs"
|
|
662
|
+
},
|
|
663
|
+
"estimatedImprovement": {
|
|
664
|
+
"type": "string",
|
|
665
|
+
"description": "Estimated performance improvement"
|
|
666
|
+
},
|
|
667
|
+
"codeExample": {
|
|
668
|
+
"type": "object",
|
|
669
|
+
"properties": {
|
|
670
|
+
"before": { "type": "string" },
|
|
671
|
+
"after": { "type": "string" },
|
|
672
|
+
"language": { "type": "string" }
|
|
673
|
+
},
|
|
674
|
+
"description": "Before/after code examples"
|
|
675
|
+
},
|
|
676
|
+
"resources": {
|
|
677
|
+
"type": "array",
|
|
678
|
+
"items": {
|
|
679
|
+
"type": "object",
|
|
680
|
+
"required": ["title", "url"],
|
|
681
|
+
"properties": {
|
|
682
|
+
"title": { "type": "string" },
|
|
683
|
+
"url": { "type": "string" }
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
"maxItems": 10,
|
|
687
|
+
"description": "External resources"
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
},
|
|
691
|
+
"testScenario": {
|
|
692
|
+
"type": "object",
|
|
693
|
+
"required": ["name", "status"],
|
|
694
|
+
"properties": {
|
|
695
|
+
"name": {
|
|
696
|
+
"type": "string",
|
|
697
|
+
"description": "Scenario name"
|
|
698
|
+
},
|
|
699
|
+
"description": {
|
|
700
|
+
"type": "string",
|
|
701
|
+
"description": "Scenario description"
|
|
702
|
+
},
|
|
703
|
+
"status": {
|
|
704
|
+
"type": "string",
|
|
705
|
+
"enum": ["passed", "failed", "skipped"],
|
|
706
|
+
"description": "Scenario execution status"
|
|
707
|
+
},
|
|
708
|
+
"virtualUsers": {
|
|
709
|
+
"type": "integer",
|
|
710
|
+
"minimum": 1,
|
|
711
|
+
"description": "Virtual users for this scenario"
|
|
712
|
+
},
|
|
713
|
+
"duration": {
|
|
714
|
+
"type": "integer",
|
|
715
|
+
"minimum": 0,
|
|
716
|
+
"description": "Scenario duration in seconds"
|
|
717
|
+
},
|
|
718
|
+
"metrics": {
|
|
719
|
+
"$ref": "#/$defs/performanceMetrics",
|
|
720
|
+
"description": "Scenario-specific metrics"
|
|
721
|
+
},
|
|
722
|
+
"thresholdsResult": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"enum": ["passed", "failed", "partial"],
|
|
725
|
+
"description": "Whether scenario met its thresholds"
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
"resourceUtilization": {
|
|
730
|
+
"type": "object",
|
|
731
|
+
"properties": {
|
|
732
|
+
"cpu": {
|
|
733
|
+
"$ref": "#/$defs/resourceMetric",
|
|
734
|
+
"description": "CPU utilization"
|
|
735
|
+
},
|
|
736
|
+
"memory": {
|
|
737
|
+
"$ref": "#/$defs/resourceMetric",
|
|
738
|
+
"description": "Memory utilization"
|
|
739
|
+
},
|
|
740
|
+
"disk": {
|
|
741
|
+
"$ref": "#/$defs/resourceMetric",
|
|
742
|
+
"description": "Disk I/O utilization"
|
|
743
|
+
},
|
|
744
|
+
"network": {
|
|
745
|
+
"$ref": "#/$defs/resourceMetric",
|
|
746
|
+
"description": "Network utilization"
|
|
747
|
+
},
|
|
748
|
+
"database": {
|
|
749
|
+
"type": "object",
|
|
750
|
+
"properties": {
|
|
751
|
+
"connectionPoolUsage": {
|
|
752
|
+
"type": "number",
|
|
753
|
+
"minimum": 0,
|
|
754
|
+
"maximum": 100,
|
|
755
|
+
"description": "Connection pool usage percentage"
|
|
756
|
+
},
|
|
757
|
+
"queryTime": {
|
|
758
|
+
"type": "number",
|
|
759
|
+
"minimum": 0,
|
|
760
|
+
"description": "Average query time in ms"
|
|
761
|
+
},
|
|
762
|
+
"activeConnections": {
|
|
763
|
+
"type": "integer",
|
|
764
|
+
"minimum": 0,
|
|
765
|
+
"description": "Active database connections"
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
"description": "Database metrics"
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
"resourceMetric": {
|
|
773
|
+
"type": "object",
|
|
774
|
+
"properties": {
|
|
775
|
+
"avg": {
|
|
776
|
+
"type": "number",
|
|
777
|
+
"minimum": 0,
|
|
778
|
+
"maximum": 100,
|
|
779
|
+
"description": "Average utilization percentage"
|
|
780
|
+
},
|
|
781
|
+
"max": {
|
|
782
|
+
"type": "number",
|
|
783
|
+
"minimum": 0,
|
|
784
|
+
"maximum": 100,
|
|
785
|
+
"description": "Maximum utilization percentage"
|
|
786
|
+
},
|
|
787
|
+
"min": {
|
|
788
|
+
"type": "number",
|
|
789
|
+
"minimum": 0,
|
|
790
|
+
"maximum": 100,
|
|
791
|
+
"description": "Minimum utilization percentage"
|
|
792
|
+
},
|
|
793
|
+
"p95": {
|
|
794
|
+
"type": "number",
|
|
795
|
+
"minimum": 0,
|
|
796
|
+
"maximum": 100,
|
|
797
|
+
"description": "95th percentile utilization"
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
"testConfiguration": {
|
|
802
|
+
"type": "object",
|
|
803
|
+
"properties": {
|
|
804
|
+
"target": {
|
|
805
|
+
"type": "string",
|
|
806
|
+
"description": "Test target (URL or service)"
|
|
807
|
+
},
|
|
808
|
+
"tool": {
|
|
809
|
+
"type": "string",
|
|
810
|
+
"enum": ["k6", "artillery", "jmeter", "gatling", "locust", "wrk", "ab", "vegeta", "custom"],
|
|
811
|
+
"description": "Performance testing tool used"
|
|
812
|
+
},
|
|
813
|
+
"toolVersion": {
|
|
814
|
+
"type": "string",
|
|
815
|
+
"description": "Version of the testing tool"
|
|
816
|
+
},
|
|
817
|
+
"testType": {
|
|
818
|
+
"type": "string",
|
|
819
|
+
"enum": ["load", "stress", "endurance", "spike", "volume", "scalability", "smoke", "soak"],
|
|
820
|
+
"description": "Type of performance test"
|
|
821
|
+
},
|
|
822
|
+
"duration": {
|
|
823
|
+
"type": "integer",
|
|
824
|
+
"minimum": 0,
|
|
825
|
+
"description": "Total test duration in seconds"
|
|
826
|
+
},
|
|
827
|
+
"virtualUsers": {
|
|
828
|
+
"type": "integer",
|
|
829
|
+
"minimum": 1,
|
|
830
|
+
"description": "Number of virtual users"
|
|
831
|
+
},
|
|
832
|
+
"rampUp": {
|
|
833
|
+
"type": "integer",
|
|
834
|
+
"minimum": 0,
|
|
835
|
+
"description": "Ramp-up time in seconds"
|
|
836
|
+
},
|
|
837
|
+
"steadyState": {
|
|
838
|
+
"type": "integer",
|
|
839
|
+
"minimum": 0,
|
|
840
|
+
"description": "Steady state duration in seconds"
|
|
841
|
+
},
|
|
842
|
+
"rampDown": {
|
|
843
|
+
"type": "integer",
|
|
844
|
+
"minimum": 0,
|
|
845
|
+
"description": "Ramp-down time in seconds"
|
|
846
|
+
},
|
|
847
|
+
"thresholds": {
|
|
848
|
+
"type": "object",
|
|
849
|
+
"additionalProperties": {
|
|
850
|
+
"type": ["string", "number", "array"]
|
|
851
|
+
},
|
|
852
|
+
"description": "Configured thresholds"
|
|
853
|
+
},
|
|
854
|
+
"scenarios": {
|
|
855
|
+
"type": "array",
|
|
856
|
+
"items": {
|
|
857
|
+
"type": "string"
|
|
858
|
+
},
|
|
859
|
+
"description": "Scenario names"
|
|
860
|
+
},
|
|
861
|
+
"endpoints": {
|
|
862
|
+
"type": "array",
|
|
863
|
+
"items": {
|
|
864
|
+
"type": "string"
|
|
865
|
+
},
|
|
866
|
+
"description": "Endpoints tested"
|
|
867
|
+
},
|
|
868
|
+
"environment": {
|
|
869
|
+
"type": "string",
|
|
870
|
+
"enum": ["development", "staging", "production", "ci"],
|
|
871
|
+
"description": "Test environment"
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
},
|
|
875
|
+
"performanceComparison": {
|
|
876
|
+
"type": "object",
|
|
877
|
+
"properties": {
|
|
878
|
+
"baselineVersion": {
|
|
879
|
+
"type": "string",
|
|
880
|
+
"description": "Baseline version for comparison"
|
|
881
|
+
},
|
|
882
|
+
"currentVersion": {
|
|
883
|
+
"type": "string",
|
|
884
|
+
"description": "Current version being tested"
|
|
885
|
+
},
|
|
886
|
+
"comparisonType": {
|
|
887
|
+
"type": "string",
|
|
888
|
+
"enum": ["baseline", "previous", "release", "custom"],
|
|
889
|
+
"description": "Type of comparison"
|
|
890
|
+
},
|
|
891
|
+
"regressionDetected": {
|
|
892
|
+
"type": "boolean",
|
|
893
|
+
"description": "Whether performance regression was detected"
|
|
894
|
+
},
|
|
895
|
+
"tolerancePercentage": {
|
|
896
|
+
"type": "number",
|
|
897
|
+
"minimum": 0,
|
|
898
|
+
"maximum": 100,
|
|
899
|
+
"description": "Allowed deviation percentage"
|
|
900
|
+
},
|
|
901
|
+
"metrics": {
|
|
902
|
+
"type": "array",
|
|
903
|
+
"items": {
|
|
904
|
+
"$ref": "#/$defs/metricComparison"
|
|
905
|
+
},
|
|
906
|
+
"description": "Individual metric comparisons"
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
},
|
|
910
|
+
"metricComparison": {
|
|
911
|
+
"type": "object",
|
|
912
|
+
"required": ["metric", "baseline", "current"],
|
|
913
|
+
"properties": {
|
|
914
|
+
"metric": {
|
|
915
|
+
"type": "string",
|
|
916
|
+
"description": "Metric name"
|
|
917
|
+
},
|
|
918
|
+
"baseline": {
|
|
919
|
+
"type": "number",
|
|
920
|
+
"description": "Baseline value"
|
|
921
|
+
},
|
|
922
|
+
"current": {
|
|
923
|
+
"type": "number",
|
|
924
|
+
"description": "Current value"
|
|
925
|
+
},
|
|
926
|
+
"change": {
|
|
927
|
+
"type": "number",
|
|
928
|
+
"description": "Absolute change"
|
|
929
|
+
},
|
|
930
|
+
"changePercentage": {
|
|
931
|
+
"type": "number",
|
|
932
|
+
"description": "Change as percentage"
|
|
933
|
+
},
|
|
934
|
+
"status": {
|
|
935
|
+
"type": "string",
|
|
936
|
+
"enum": ["improved", "stable", "degraded", "regression"],
|
|
937
|
+
"description": "Comparison status"
|
|
938
|
+
},
|
|
939
|
+
"withinTolerance": {
|
|
940
|
+
"type": "boolean",
|
|
941
|
+
"description": "Whether change is within tolerance"
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
},
|
|
945
|
+
"location": {
|
|
946
|
+
"type": "object",
|
|
947
|
+
"properties": {
|
|
948
|
+
"endpoint": {
|
|
949
|
+
"type": "string",
|
|
950
|
+
"description": "API endpoint"
|
|
951
|
+
},
|
|
952
|
+
"method": {
|
|
953
|
+
"type": "string",
|
|
954
|
+
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"],
|
|
955
|
+
"description": "HTTP method"
|
|
956
|
+
},
|
|
957
|
+
"service": {
|
|
958
|
+
"type": "string",
|
|
959
|
+
"description": "Service name"
|
|
960
|
+
},
|
|
961
|
+
"component": {
|
|
962
|
+
"type": "string",
|
|
963
|
+
"description": "System component"
|
|
964
|
+
},
|
|
965
|
+
"file": {
|
|
966
|
+
"type": "string",
|
|
967
|
+
"description": "Source file if applicable"
|
|
968
|
+
},
|
|
969
|
+
"line": {
|
|
970
|
+
"type": "integer",
|
|
971
|
+
"minimum": 1,
|
|
972
|
+
"description": "Line number if applicable"
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
},
|
|
976
|
+
"artifact": {
|
|
977
|
+
"type": "object",
|
|
978
|
+
"required": ["type", "path"],
|
|
979
|
+
"properties": {
|
|
980
|
+
"type": {
|
|
981
|
+
"type": "string",
|
|
982
|
+
"enum": ["report", "data", "log", "chart", "flamegraph", "profile", "trace", "config"],
|
|
983
|
+
"description": "Artifact type"
|
|
984
|
+
},
|
|
985
|
+
"path": {
|
|
986
|
+
"type": "string",
|
|
987
|
+
"maxLength": 500,
|
|
988
|
+
"description": "Path to artifact"
|
|
989
|
+
},
|
|
990
|
+
"format": {
|
|
991
|
+
"type": "string",
|
|
992
|
+
"enum": ["json", "html", "csv", "xml", "txt", "png", "svg", "pdf"],
|
|
993
|
+
"description": "Artifact format"
|
|
994
|
+
},
|
|
995
|
+
"description": {
|
|
996
|
+
"type": "string",
|
|
997
|
+
"maxLength": 500,
|
|
998
|
+
"description": "Artifact description"
|
|
999
|
+
},
|
|
1000
|
+
"sizeBytes": {
|
|
1001
|
+
"type": "integer",
|
|
1002
|
+
"minimum": 0,
|
|
1003
|
+
"description": "File size in bytes"
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
},
|
|
1007
|
+
"timelineEvent": {
|
|
1008
|
+
"type": "object",
|
|
1009
|
+
"required": ["timestamp", "event"],
|
|
1010
|
+
"properties": {
|
|
1011
|
+
"timestamp": {
|
|
1012
|
+
"type": "string",
|
|
1013
|
+
"type": "string",
|
|
1014
|
+
"description": "Event timestamp"
|
|
1015
|
+
},
|
|
1016
|
+
"event": {
|
|
1017
|
+
"type": "string",
|
|
1018
|
+
"maxLength": 200,
|
|
1019
|
+
"description": "Event description"
|
|
1020
|
+
},
|
|
1021
|
+
"type": {
|
|
1022
|
+
"type": "string",
|
|
1023
|
+
"enum": ["start", "ramp-up", "steady-state", "ramp-down", "checkpoint", "warning", "error", "complete"],
|
|
1024
|
+
"description": "Event type"
|
|
1025
|
+
},
|
|
1026
|
+
"durationMs": {
|
|
1027
|
+
"type": "integer",
|
|
1028
|
+
"minimum": 0,
|
|
1029
|
+
"description": "Duration since previous event"
|
|
1030
|
+
},
|
|
1031
|
+
"phase": {
|
|
1032
|
+
"type": "string",
|
|
1033
|
+
"enum": ["initialization", "warmup", "load", "cooldown", "analysis", "reporting"],
|
|
1034
|
+
"description": "Test phase"
|
|
1035
|
+
},
|
|
1036
|
+
"virtualUsers": {
|
|
1037
|
+
"type": "integer",
|
|
1038
|
+
"minimum": 0,
|
|
1039
|
+
"description": "Virtual users at this point"
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
},
|
|
1043
|
+
"metadata": {
|
|
1044
|
+
"type": "object",
|
|
1045
|
+
"properties": {
|
|
1046
|
+
"executionTimeMs": {
|
|
1047
|
+
"type": "integer",
|
|
1048
|
+
"minimum": 0,
|
|
1049
|
+
"maximum": 86400000,
|
|
1050
|
+
"description": "Total execution time in milliseconds (max 24 hours)"
|
|
1051
|
+
},
|
|
1052
|
+
"toolsUsed": {
|
|
1053
|
+
"type": "array",
|
|
1054
|
+
"items": {
|
|
1055
|
+
"type": "string",
|
|
1056
|
+
"enum": ["k6", "artillery", "jmeter", "gatling", "locust", "wrk", "ab", "vegeta", "prometheus", "grafana", "datadog", "newrelic"]
|
|
1057
|
+
},
|
|
1058
|
+
"uniqueItems": true,
|
|
1059
|
+
"description": "Performance tools used"
|
|
1060
|
+
},
|
|
1061
|
+
"agentId": {
|
|
1062
|
+
"type": "string",
|
|
1063
|
+
"pattern": "^qe-[a-z][a-z0-9-]*$",
|
|
1064
|
+
"description": "Agent ID (e.g., qe-performance-tester)"
|
|
1065
|
+
},
|
|
1066
|
+
"modelUsed": {
|
|
1067
|
+
"type": "string",
|
|
1068
|
+
"description": "LLM model used for analysis"
|
|
1069
|
+
},
|
|
1070
|
+
"inputHash": {
|
|
1071
|
+
"type": "string",
|
|
1072
|
+
"pattern": "^[a-f0-9]{64}$",
|
|
1073
|
+
"description": "SHA-256 hash of input"
|
|
1074
|
+
},
|
|
1075
|
+
"targetUrl": {
|
|
1076
|
+
"type": "string",
|
|
1077
|
+
"type": "string",
|
|
1078
|
+
"description": "Target URL"
|
|
1079
|
+
},
|
|
1080
|
+
"environment": {
|
|
1081
|
+
"type": "string",
|
|
1082
|
+
"enum": ["development", "staging", "production", "ci"],
|
|
1083
|
+
"description": "Execution environment"
|
|
1084
|
+
},
|
|
1085
|
+
"retryCount": {
|
|
1086
|
+
"type": "integer",
|
|
1087
|
+
"minimum": 0,
|
|
1088
|
+
"maximum": 10,
|
|
1089
|
+
"description": "Number of retries"
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
},
|
|
1093
|
+
"validationResult": {
|
|
1094
|
+
"type": "object",
|
|
1095
|
+
"properties": {
|
|
1096
|
+
"schemaValid": {
|
|
1097
|
+
"type": "boolean",
|
|
1098
|
+
"description": "Passes JSON schema validation"
|
|
1099
|
+
},
|
|
1100
|
+
"contentValid": {
|
|
1101
|
+
"type": "boolean",
|
|
1102
|
+
"description": "Passes content validation"
|
|
1103
|
+
},
|
|
1104
|
+
"confidence": {
|
|
1105
|
+
"type": "number",
|
|
1106
|
+
"minimum": 0,
|
|
1107
|
+
"maximum": 1,
|
|
1108
|
+
"description": "Confidence score"
|
|
1109
|
+
},
|
|
1110
|
+
"warnings": {
|
|
1111
|
+
"type": "array",
|
|
1112
|
+
"items": {
|
|
1113
|
+
"type": "string",
|
|
1114
|
+
"maxLength": 500
|
|
1115
|
+
},
|
|
1116
|
+
"maxItems": 20,
|
|
1117
|
+
"description": "Validation warnings"
|
|
1118
|
+
},
|
|
1119
|
+
"errors": {
|
|
1120
|
+
"type": "array",
|
|
1121
|
+
"items": {
|
|
1122
|
+
"type": "string",
|
|
1123
|
+
"maxLength": 500
|
|
1124
|
+
},
|
|
1125
|
+
"maxItems": 20,
|
|
1126
|
+
"description": "Validation errors"
|
|
1127
|
+
},
|
|
1128
|
+
"validatorVersion": {
|
|
1129
|
+
"type": "string",
|
|
1130
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
1131
|
+
"description": "Validator version"
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
},
|
|
1135
|
+
"learningData": {
|
|
1136
|
+
"type": "object",
|
|
1137
|
+
"properties": {
|
|
1138
|
+
"patternsDetected": {
|
|
1139
|
+
"type": "array",
|
|
1140
|
+
"items": {
|
|
1141
|
+
"type": "string",
|
|
1142
|
+
"maxLength": 200
|
|
1143
|
+
},
|
|
1144
|
+
"maxItems": 20,
|
|
1145
|
+
"description": "Performance patterns detected (e.g., n+1-query, connection-pool-exhaustion)"
|
|
1146
|
+
},
|
|
1147
|
+
"reward": {
|
|
1148
|
+
"type": "number",
|
|
1149
|
+
"minimum": 0,
|
|
1150
|
+
"maximum": 1,
|
|
1151
|
+
"description": "Reward signal for learning (0.0-1.0)"
|
|
1152
|
+
},
|
|
1153
|
+
"feedbackLoop": {
|
|
1154
|
+
"type": "object",
|
|
1155
|
+
"properties": {
|
|
1156
|
+
"previousRunId": {
|
|
1157
|
+
"type": "string",
|
|
1158
|
+
"type": "string",
|
|
1159
|
+
"description": "Previous run ID for comparison"
|
|
1160
|
+
},
|
|
1161
|
+
"improvement": {
|
|
1162
|
+
"type": "number",
|
|
1163
|
+
"minimum": -1,
|
|
1164
|
+
"maximum": 1,
|
|
1165
|
+
"description": "Improvement over previous run"
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1169
|
+
"newPerformancePatterns": {
|
|
1170
|
+
"type": "array",
|
|
1171
|
+
"items": {
|
|
1172
|
+
"type": "object",
|
|
1173
|
+
"properties": {
|
|
1174
|
+
"pattern": { "type": "string" },
|
|
1175
|
+
"bottleneckType": { "type": "string" },
|
|
1176
|
+
"confidence": { "type": "number" }
|
|
1177
|
+
}
|
|
1178
|
+
},
|
|
1179
|
+
"description": "New performance patterns learned"
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}
|