85 lines
3.1 KiB
Markdown
85 lines
3.1 KiB
Markdown
---
|
||
name: closed-loop-testing
|
||
description: Quality gates, test automation, and feedback loops for AI-generated code. Use when generating tests, running validation pipelines, setting up quality gates, or implementing auto-fix loops for test failures. Covers L1-L5 quality gates, mutation testing, coverage strategies, and failure analysis.
|
||
---
|
||
|
||
# 闭环测试 — 质量门禁与反馈循环
|
||
|
||
> 没有门禁的 Agent 是不受控的。每层门禁捕获特定类型的问题。
|
||
|
||
## 🚪 五层质量门禁
|
||
|
||
| 门禁 | 时间 | 范围 | 失败处理 |
|
||
|---|---|---|---|
|
||
| **L1 编译检查** | <30 秒 | 语法、类型、导入 | Agent 自行修复 |
|
||
| **L2 静态分析** | <2 分钟 | 代码风格、复杂度、安全 | Agent 修复 |
|
||
| **L3 单元测试** | <5 分钟 | 功能正确性、边界条件 | 自动修复或上报 |
|
||
| **L4 集成测试** | <15 分钟 | 模块间交互、数据流 | 上报人工 |
|
||
| **L5 生产验证** | 持续 | 监控、告警、性能 | 自动回滚 |
|
||
|
||
## 🔄 反馈循环机制
|
||
|
||
```
|
||
测试失败
|
||
→ 分析失败原因(编译/逻辑/边界/依赖)
|
||
→ 提取可行动的反馈(文件:行号:错误类型:修复方向)
|
||
→ Agent 修复
|
||
→ 重测
|
||
→ 若持续失败(3次)→ 上报人类
|
||
```
|
||
|
||
### 反馈格式规范
|
||
```
|
||
文件路径:行号 错误类型 错误描述 | 修复建议
|
||
示例:
|
||
src/payment/applepay_processor.py:42 TypeError amount must be int | 添加类型转换 str → int
|
||
```
|
||
|
||
## 🧪 测试生成策略
|
||
|
||
### 策略优先级
|
||
1. **边界值分析** — 测试空值、越界、特殊值
|
||
2. **等价类划分** — 覆盖每个分支路径
|
||
3. **错误猜测** — 基于经验预测常见错误
|
||
4. **组合测试** — 参数组合爆炸场景
|
||
|
||
### 覆盖率目标
|
||
```yaml
|
||
unit_test_coverage: 90% # 行覆盖率
|
||
mutation_score: 80% # 变异测试通过率
|
||
branch_coverage: 85% # 分支覆盖率
|
||
```
|
||
|
||
## 📊 失败原因分析(基于项目数据)
|
||
|
||
| 类型 | 占比 | 典型表现 | 捕获门禁 |
|
||
|---|---|---|---|
|
||
| 架构错误 | 35% | 接口不匹配、依赖错乱 | L1 编译 |
|
||
| 业务逻辑 | 25% | 条件判断错误、数据流断裂 | L3 单元测试 |
|
||
| 创造性偏差 | 20% | 过度设计、不必要的抽象 | L3 + L5 |
|
||
| Debug 残留 | 15% | print、临时变量未清理 | L2 静态分析 |
|
||
| 其他 | 5% | 环境、工具问题 | L5 |
|
||
|
||
## ⚙️ 本项目测试命令
|
||
|
||
```bash
|
||
# L1 编译检查(Java)
|
||
cd /root/.openclaw/workspace/his-repo/openhis-server-new
|
||
mvn compile -pl openhis-application -am
|
||
|
||
# L1 语法检查(Python)
|
||
python3 -c "import py_compile; py_compile.compile('strategy.py', doraise=True)"
|
||
|
||
# L2 全链路验证
|
||
# 检查 AGENTS.md 中的铁律清单:录入 → 保存 → 查询 → 修改 → 删除 → 关联
|
||
```
|
||
|
||
## ⚠️ 常见陷阱
|
||
|
||
| 陷阱 | 表现 | 解决 |
|
||
|---|---|---|
|
||
| 测试滞后 | Agent 写完代码再补测试 | 测试先行或并行生成 |
|
||
| 覆盖幻觉 | 覆盖率数字达标但逻辑没测 | 引入变异测试 |
|
||
| 反馈过载 | 同时报太多错误 | 按优先级逐层暴露 |
|
||
| Mock 泛滥 | 过度 Mock 导致测试失真 | 优先写集成测试 |
|