307 lines
8.0 KiB
YAML
307 lines
8.0 KiB
YAML
|
|
# 🎯 Testing-Autonomous: 蚊子项目专用配置
|
|||
|
|
# 基于1210个测试经验的优化方案
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 1. 目标设定
|
|||
|
|
targets:
|
|||
|
|
# 覆盖率目标(生产级标准)
|
|||
|
|
coverage:
|
|||
|
|
instruction: 85% # 指令覆盖率
|
|||
|
|
branch: 60% # 分支覆盖率
|
|||
|
|
method: 85% # 方法覆盖率
|
|||
|
|
class: 95% # 类覆盖率
|
|||
|
|
|
|||
|
|
# 质量目标
|
|||
|
|
quality:
|
|||
|
|
min_tests_per_class: 5
|
|||
|
|
max_tests_per_class: 50
|
|||
|
|
avg_test_execution_time: 100ms # 毫秒
|
|||
|
|
|
|||
|
|
# 缺陷发现目标
|
|||
|
|
defects:
|
|||
|
|
min_boundary_tests: 10
|
|||
|
|
min_exception_tests: 5
|
|||
|
|
min_concurrency_tests: 3
|
|||
|
|
|
|||
|
|
# 迭代限制
|
|||
|
|
iteration:
|
|||
|
|
max_rounds: 10
|
|||
|
|
coverage_gain_threshold: 2% # 每轮至少提升2%
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 2. 自动恢复配置
|
|||
|
|
recovery:
|
|||
|
|
# 超时设置
|
|||
|
|
timeout_threshold: 300s # 5分钟无响应视为卡住
|
|||
|
|
|
|||
|
|
# 恢复策略(基于蚊子项目经验)
|
|||
|
|
strategies:
|
|||
|
|
# 策略1: DTO默认构造函数缺失
|
|||
|
|
dto_noargs_constructor:
|
|||
|
|
trigger: "Cannot construct instance.*no Creators.*exist"
|
|||
|
|
action: "auto_fix_dto"
|
|||
|
|
fix_steps:
|
|||
|
|
- "分析DTO类结构"
|
|||
|
|
- "添加@NoArgsConstructor注解"
|
|||
|
|
- "重新编译验证"
|
|||
|
|
- "重新生成JSON测试"
|
|||
|
|
max_retry: 3
|
|||
|
|
|
|||
|
|
# 策略2: 文件过大拆分
|
|||
|
|
file_too_large:
|
|||
|
|
trigger: "test_file_lines > 500"
|
|||
|
|
action: "split_to_nested"
|
|||
|
|
split_rules:
|
|||
|
|
- "按功能分组(Constructor/Getter/Boundary)"
|
|||
|
|
- "每类最多100个测试"
|
|||
|
|
- "使用@Nested注解"
|
|||
|
|
max_retry: 2
|
|||
|
|
|
|||
|
|
# 策略3: 覆盖率停滞突破
|
|||
|
|
coverage_stalled:
|
|||
|
|
trigger: "coverage_gain < 1% after 100 tests"
|
|||
|
|
action: "switch_strategy"
|
|||
|
|
alternatives:
|
|||
|
|
- name: "focus_branches"
|
|||
|
|
description: "专注分支覆盖"
|
|||
|
|
target: "if/else/switch语句"
|
|||
|
|
|
|||
|
|
- name: "focus_dtos"
|
|||
|
|
description: "专注DTO测试"
|
|||
|
|
target: "com.mosquito.project.dto.*"
|
|||
|
|
|
|||
|
|
- name: "focus_integration"
|
|||
|
|
description: "专注集成测试"
|
|||
|
|
target: "API端到端流程"
|
|||
|
|
|
|||
|
|
- name: "use_testcontainers"
|
|||
|
|
description: "使用真实数据库"
|
|||
|
|
target: "Repository层"
|
|||
|
|
|
|||
|
|
# 策略4: 内存溢出处理
|
|||
|
|
out_of_memory:
|
|||
|
|
trigger: "heap_usage > 90% OR OutOfMemoryError"
|
|||
|
|
action: "reduce_batch_size"
|
|||
|
|
batch_sizes: [100, 50, 25, 10]
|
|||
|
|
cleanup:
|
|||
|
|
- "强制GC"
|
|||
|
|
- "清理临时文件"
|
|||
|
|
- "减少并发线程"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 3. 质量门禁配置
|
|||
|
|
gates:
|
|||
|
|
# 门禁1: 基础检查(必须全部通过)
|
|||
|
|
level1_basic:
|
|||
|
|
compile_check:
|
|||
|
|
command: "mvn compile -q"
|
|||
|
|
must_pass: true
|
|||
|
|
error_message: "编译失败,请检查代码语法"
|
|||
|
|
|
|||
|
|
test_execution:
|
|||
|
|
command: "mvn test -q"
|
|||
|
|
must_pass: true
|
|||
|
|
error_message: "测试执行失败"
|
|||
|
|
|
|||
|
|
# 门禁2: 覆盖率检查
|
|||
|
|
level2_coverage:
|
|||
|
|
instruction_coverage:
|
|||
|
|
metric: "instruction_coverage"
|
|||
|
|
threshold: 85%
|
|||
|
|
must_pass: true
|
|||
|
|
auto_fix: true # 未达标自动触发优化
|
|||
|
|
|
|||
|
|
branch_coverage:
|
|||
|
|
metric: "branch_coverage"
|
|||
|
|
threshold: 60%
|
|||
|
|
must_pass: false # 警告但不阻止
|
|||
|
|
warning_message: "分支覆盖率未达标,建议加强条件测试"
|
|||
|
|
|
|||
|
|
method_coverage:
|
|||
|
|
metric: "method_coverage"
|
|||
|
|
threshold: 85%
|
|||
|
|
must_pass: true
|
|||
|
|
|
|||
|
|
# 门禁3: 质量检查
|
|||
|
|
level3_quality:
|
|||
|
|
test_quality_score:
|
|||
|
|
metric: "test_quality_score"
|
|||
|
|
threshold: 0.7 # 70分
|
|||
|
|
must_pass: true
|
|||
|
|
evaluation_criteria:
|
|||
|
|
- "代码覆盖贡献 > 0.5"
|
|||
|
|
- "分支覆盖贡献 > 0.3"
|
|||
|
|
- "断言数量 >= 2"
|
|||
|
|
- "复杂度适中"
|
|||
|
|
|
|||
|
|
duplicate_test_ratio:
|
|||
|
|
metric: "duplicate_test_ratio"
|
|||
|
|
threshold: 5% # 重复率<5%
|
|||
|
|
must_pass: true
|
|||
|
|
auto_deduplicate: true # 自动去重
|
|||
|
|
|
|||
|
|
low_value_test_ratio:
|
|||
|
|
metric: "low_value_test_ratio"
|
|||
|
|
threshold: 20% # 低价值测试<20%
|
|||
|
|
must_pass: false
|
|||
|
|
warning_message: "低价值测试过多(getter/setter),建议使用参数化测试"
|
|||
|
|
|
|||
|
|
# 门禁4: 缺陷检查(建议性质)
|
|||
|
|
level4_defects:
|
|||
|
|
boundary_test_coverage:
|
|||
|
|
metric: "boundary_test_count"
|
|||
|
|
threshold: 10
|
|||
|
|
must_pass: false
|
|||
|
|
suggestion: "增加边界条件测试(null/空值/极大值/负数)"
|
|||
|
|
|
|||
|
|
exception_test_coverage:
|
|||
|
|
metric: "exception_test_count"
|
|||
|
|
threshold: 5
|
|||
|
|
must_pass: false
|
|||
|
|
suggestion: "增加异常处理测试"
|
|||
|
|
|
|||
|
|
concurrency_test_coverage:
|
|||
|
|
metric: "concurrency_test_count"
|
|||
|
|
threshold: 3
|
|||
|
|
must_pass: false
|
|||
|
|
suggestion: "增加并发安全测试"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 4. 缺口分析配置
|
|||
|
|
gap_analysis:
|
|||
|
|
# 未覆盖代码优先级
|
|||
|
|
priority_rules:
|
|||
|
|
- condition: "class_name contains 'Config'"
|
|||
|
|
priority: 10 # 最高
|
|||
|
|
reason: "配置类影响系统启动"
|
|||
|
|
|
|||
|
|
- condition: "class_name contains 'Service'"
|
|||
|
|
priority: 9
|
|||
|
|
reason: "核心业务逻辑"
|
|||
|
|
|
|||
|
|
- condition: "class_name contains 'Controller'"
|
|||
|
|
priority: 8
|
|||
|
|
reason: "API入口"
|
|||
|
|
|
|||
|
|
- condition: "class_name contains 'Security'"
|
|||
|
|
priority: 10
|
|||
|
|
reason: "安全相关"
|
|||
|
|
|
|||
|
|
- condition: "class_name contains 'Dto' OR class_name contains 'DTO'"
|
|||
|
|
priority: 7
|
|||
|
|
reason: "数据传输对象"
|
|||
|
|
|
|||
|
|
- condition: "complexity > 10"
|
|||
|
|
priority: 9
|
|||
|
|
reason: "复杂度高,风险大"
|
|||
|
|
|
|||
|
|
- condition: "branch_count > 5"
|
|||
|
|
priority: 8
|
|||
|
|
reason: "分支多,测试价值高"
|
|||
|
|
|
|||
|
|
# 忽略规则
|
|||
|
|
ignore_patterns:
|
|||
|
|
- "com.mosquito.project.config.Test*" # 测试配置
|
|||
|
|
- "*.class" # 已编译类
|
|||
|
|
- "target/**" # 构建目录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 5. 蚊子项目特定优化
|
|||
|
|
mosquito_optimizations:
|
|||
|
|
# DTO优化(基于发现的问题)
|
|||
|
|
dto_optimization:
|
|||
|
|
enabled: true
|
|||
|
|
actions:
|
|||
|
|
- "检查并添加@NoArgsConstructor"
|
|||
|
|
- "验证Jackson兼容性"
|
|||
|
|
- "生成JSON序列化/反序列化测试"
|
|||
|
|
- "测试边界值(null/空字符串/极大值)"
|
|||
|
|
|
|||
|
|
# 分支覆盖优化
|
|||
|
|
branch_optimization:
|
|||
|
|
enabled: true
|
|||
|
|
target_classes:
|
|||
|
|
- "com.mosquito.project.service.*"
|
|||
|
|
- "com.mosquito.project.web.*"
|
|||
|
|
focus_areas:
|
|||
|
|
- "if/else条件分支"
|
|||
|
|
- "switch语句"
|
|||
|
|
- "三元运算符"
|
|||
|
|
- "异常处理路径"
|
|||
|
|
|
|||
|
|
# 配置类优化
|
|||
|
|
config_optimization:
|
|||
|
|
enabled: true
|
|||
|
|
target_classes:
|
|||
|
|
- "com.mosquito.project.config.AppConfig"
|
|||
|
|
- "com.mosquito.project.config.CacheConfig"
|
|||
|
|
- "com.mosquito.project.config.WebMvcConfig"
|
|||
|
|
test_focus:
|
|||
|
|
- "默认值验证"
|
|||
|
|
- "配置加载"
|
|||
|
|
- "边界条件(0/负数/极大值)"
|
|||
|
|
- "异常处理(无效配置)"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 6. 监控和日志
|
|||
|
|
monitoring:
|
|||
|
|
# 进度记录
|
|||
|
|
progress_log: ".testing-autonomous/progress.log"
|
|||
|
|
|
|||
|
|
# 失败模式记录
|
|||
|
|
failure_log: ".testing-autonomous/failures.log"
|
|||
|
|
|
|||
|
|
# 覆盖率历史
|
|||
|
|
coverage_history: ".testing-autonomous/coverage-history.csv"
|
|||
|
|
|
|||
|
|
# 告警设置
|
|||
|
|
alerts:
|
|||
|
|
- condition: "coverage < 50% after 3 rounds"
|
|||
|
|
level: "warning"
|
|||
|
|
message: "覆盖率提升缓慢,建议检查测试策略"
|
|||
|
|
|
|||
|
|
- condition: "test_execution_time > 2 minutes"
|
|||
|
|
level: "warning"
|
|||
|
|
message: "测试执行时间过长,建议优化测试性能"
|
|||
|
|
|
|||
|
|
- condition: "recovery_triggered > 5 times"
|
|||
|
|
level: "error"
|
|||
|
|
message: "多次触发恢复机制,建议人工介入检查"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 7. 预设命令
|
|||
|
|
commands:
|
|||
|
|
# 快速开始
|
|||
|
|
quick_start: |
|
|||
|
|
@skill testing-autonomous
|
|||
|
|
analyze-and-optimize --target 85% --auto-recovery --max-rounds 10
|
|||
|
|
|
|||
|
|
# 仅缺口分析
|
|||
|
|
gap_analysis_only: |
|
|||
|
|
@skill testing-autonomous
|
|||
|
|
analyze-gaps --output report.html
|
|||
|
|
|
|||
|
|
# 质量检查
|
|||
|
|
quality_check: |
|
|||
|
|
@skill testing-autonomous
|
|||
|
|
check-quality --gates all
|
|||
|
|
|
|||
|
|
# 持续优化(适合CI/CD)
|
|||
|
|
continuous_optimization: |
|
|||
|
|
@skill testing-autonomous
|
|||
|
|
optimize --incremental --coverage-threshold 85% --fail-on-miss
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 使用说明
|
|||
|
|
# 1. 复制此文件到项目根目录: .testing-autonomous/config.yml
|
|||
|
|
# 2. 根据项目实际情况调整阈值
|
|||
|
|
# 3. 运行: @skill testing-autonomous
|
|||
|
|
# 4. 执行: optimize-project --config .testing-autonomous/config.yml
|