Files
wenzi/.testing-autonomous/config.yml

307 lines
8.0 KiB
YAML
Raw Permalink Normal View History

# 🎯 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