名称: “QE 迭代循环” 描述: “质量工程迭代循环,用于自主测试改进、覆盖目标达成和质量门合规。在需要测试通过、覆盖目标必须满足、质量门需要合规或不稳定测试需要稳定时使用。与AQE v3代理舰队集成,进行协调的质量迭代。” 信任等级: 2 验证: 架构路径: schemas/output.json 验证器路径: scripts/validate-config.json
QE 迭代循环
概述
QE 迭代循环是Ralph Wiggum技术针对质量工程工作流的专业化适配。它支持自主、自我纠正的质量周期,AI代理迭代直到质量目标达成——测试通过、覆盖目标满足、质量门合格或不稳定测试稳定。
为什么QE受益于迭代
质量工程具有客观、可衡量的成功标准:
- 测试要么通过要么失败(退出码0与非零)
- 覆盖是可量化的(78.5% vs 80%目标)
- 质量门具有二元结果(通过/失败)
- 合同验证具有清晰的架构
这使得QE非常适合迭代循环——我们知道何时完成。
前提条件
- AQE v3舰队初始化
- 测试框架配置(Jest、Vitest、Pytest等)
- 覆盖工具(c8、istanbul、coverage.py)
- 质量门定义
快速开始
模式1: 测试修复迭代
# 任务: 修复所有失败测试
/qe-loop "运行 npm test 并修复所有失败测试。
成功: npm test 以退出码0退出
当所有测试通过时输出 <promise>TESTS_GREEN</promise>。"
模式2: 覆盖目标迭代
# 任务: 达成80%覆盖
/qe-loop "将测试覆盖提高到80%。
成功: 覆盖报告显示 >= 80%
当目标达成时输出 <promise>COVERAGE_MET</promise>。"
模式3: 质量门迭代
# 任务: 通过所有质量门
/qe-loop "为部署通过所有质量门。
门:
- 单元测试: 通过
- 集成测试: 通过
- 覆盖: >= 80%
- 无关键漏洞
- 性能 < 200ms P95
当所有通过时输出 <promise>QUALITY_GATES_PASSED</promise>。"
QE 迭代模式
模式1: 测试修复迭代循环
目标: 所有测试通过
## QE 测试修复循环
### 成功标准
- `npm test`(或测试命令)返回退出码0
- 无跳过测试(除非明确允许)
- 无待处理测试
### 迭代步骤
1. 运行完整测试套件
2. 解析输出以查找失败
3. 分析第一个失败:
- 识别失败测试文件
- 理解失败的断言
- 检查生产代码或测试是否错误
4. 修复问题
5. 仅重新运行失败测试文件(更快反馈)
6. 如果文件通过,运行完整套件
7. 如果所有通过 -> 输出 <promise>TESTS_GREEN</promise>
8. 如果仍有失败 -> 继续到下一个失败
### 安全性
- 最大迭代次数: 30
- 10次迭代后: 报告剩余失败
- 如果同一测试失败5次则停止(可能设计问题)
模式2: 覆盖改进循环
目标: 达成覆盖目标
## QE 覆盖循环
### 成功标准
- 行覆盖 >= {目标}%
- 分支覆盖 >= {目标 - 5}%(通常较低目标)
- 无关键路径未覆盖
### 迭代步骤
1. 运行带覆盖的测试: `npm test -- --coverage`
2. 解析覆盖报告
3. 如果目标达成 -> 输出 <promise>COVERAGE_MET</promise>
4. 识别未覆盖文件,按以下排序:
- 关键业务逻辑(最高优先级)
- 未覆盖行(最大影响)
- 复杂度(McCabe得分)
5. 为最高影响未覆盖代码生成测试
6. 运行测试以验证新测试通过
7. 检查覆盖改进
8. 继续直到目标达成
### 智能集成
- 在内存中存储成功测试模式
- 从覆盖成就中学习
- 预测最佳覆盖策略
### 命令
```bash
# 检查覆盖状态(通过AQE MCP)
mcp__agentic-qe__memory_retrieve --key "coverage-status" --namespace "coverage"
# 存储覆盖成就模式(通过AQE MCP)
mcp__agentic-qe__memory_store \
--key "coverage-pattern-auth" \
--value '{"approach": "模拟外部依赖", "improvement": "12%"}' \
--namespace "coverage-patterns"
### 模式3: 质量门合规循环
**目标**: 通过所有质量门
```markdown
## QE 质量门循环
### 门定义
| 门 | 标准 | 优先级 |
|------|----------|----------|
| 单元测试 | 所有通过 | P0 |
| 集成测试 | 所有通过 | P0 |
| 覆盖 | >= 80% | P1 |
| 代码检查 | 无错误 | P1 |
| 类型检查 | 无错误 | P1 |
| 安全 | 无关键/高CVE | P0 |
| 性能 | P95 < 200ms | P2 |
### 迭代策略
1. 运行所有门检查
2. 识别失败门(按优先级排序)
3. 修复最高优先级失败门
4. 重新运行该门以验证
5. 当门通过时,移动到下一个失败门
6. 当所有通过 -> 输出 <promise>QUALITY_GATES_PASSED</promise>
### 门检查命令
```bash
# 检查所有门
npm test && npm run lint && npm run typecheck && npm run coverage && npm audit
# 单个门检查
npm test # 单元测试
npm run test:integration # 集成测试
npm run coverage # 覆盖
npm run lint # 代码检查
npx tsc --noEmit # 类型检查
npm audit --audit-level=high # 安全
npm run benchmark # 性能
与AQE v3集成
# 提交质量门评估任务
mcp__agentic-qe__quality_assess --runGate true
# 任务编排以符合门
mcp__agentic-qe__task_orchestrate --task "通过所有质量门" --strategy adaptive
### 模式4: 不稳定测试稳定化循环
**目标**: 消除测试不稳定性
```markdown
## QE 不稳定测试循环
### 不稳定性检测
1. 运行测试套件N次(例如,5次)
2. 识别不一致通过/失败的测试
3. 计算不稳定性得分:(不一致运行 / 总运行)
### 迭代步骤
1. 运行: `for i in {1..5}; do npm test; done`
2. 聚合每个测试的结果
3. 识别不稳定测试(部分通过,部分失败)
4. 对于每个不稳定测试:
- 分析失败模式
- 常见原因:
- 时序问题(添加重试/等待)
- 共享状态(隔离测试数据)
- 网络调用(模拟外部服务)
- 随机数据(使用确定性种子)
- 应用适当修复
- 重新运行5次以验证稳定性
5. 当所有测试稳定 -> 输出 <promise>TESTS_STABLE</promise>
### AQE v3 不稳定检测
```bash
# 使用 qe-flaky-hunter 代理
Task("猎杀不稳定测试", "检测和稳定不稳定测试", "qe-flaky-hunter")
# 或提交不稳定检测任务
mcp__agentic-qe__task_submit --type "flaky-detection" --priority "p1"
### 模式5: 合同验证循环
**目标**: API合同对齐
```markdown
## QE 合同循环
### 成功标准
- 提供者实现所有消费者合同
- 无破坏性更改检测
- 架构验证通过
### 迭代步骤
1. 运行合同测试: `npm run test:contracts`
2. 解析合同违规
3. 对于每个违规:
- 确定提供者或消费者需要更新
- 更新适当方
- 重新运行合同测试
4. 当所有合同有效 -> 输出 <promise>CONTRACTS_VALID</promise>
### AQE v3 集成
```bash
# 验证合同
mcp__agentic-qe__contract_validate --contractPath "./contracts"
# 或使用专门代理
Task("验证API合同", "检查消费者-提供者对齐", "qe-contract-validator")
---
## AQE v3 舰队集成
### 生成QE迭代代理
```bash
# 为QE迭代初始化AQE舰队
mcp__agentic-qe__fleet_init --topology "hierarchical" --maxAgents 8
# 使用Task工具生成专门QE迭代器
Task("修复失败测试", "迭代直到所有测试通过", "qe-tdd-green", {run_in_background: true})
Task("改进覆盖", "迭代直到80%覆盖", "qe-coverage-analyzer", {run_in_background: true})
Task("修复安全问题", "迭代直到安全扫描通过", "qe-security-scanner", {run_in_background: true})
Task("稳定不稳定测试", "迭代直到测试稳定", "qe-flaky-hunter", {run_in_background: true})
内存增强QE迭代
# 为学习存储迭代模式(通过AQE MCP)
mcp__agentic-qe__memory_store \
--key "qe-iteration-test-fix" \
--value '{"approach": "模拟外部依赖", "success_rate": 0.85}' \
--namespace "qe-patterns"
# 搜索相关QE模式(通过AQE MCP)
mcp__agentic-qe__memory_query \
--pattern "test-fix-*" \
--namespace "qe-patterns"
# 记录成功迭代完成(通过AQE任务跟踪)
mcp__agentic-qe__task_status --taskId "test-fix-iteration"
QE特定代理路由
| QE任务 | 推荐代理 | 迭代目标 |
|---|---|---|
| 测试修复 | qe-tdd-green |
所有测试通过 |
| 覆盖缺口 | qe-coverage-analyzer |
目标覆盖达成 |
| 质量门 | qe-quality-gate |
所有门通过 |
| 不稳定测试 | qe-flaky-hunter |
测试稳定 |
| 合同验证 | qe-contract-validator |
合同对齐 |
| 安全修复 | qe-security-scanner |
无漏洞 |
| 性能 | qe-performance-validator |
基准测试通过 |
QE的完成承诺
标准QE承诺
# 测试相关
<promise>TESTS_GREEN</promise> # 所有测试通过
<promise>TESTS_STABLE</promise> # 不稳定测试修复
<promise>TDD_COMPLETE</promise> # TDD循环完成
# 覆盖相关
<promise>COVERAGE_MET</promise> # 目标覆盖达成
<promise>GAPS_FILLED</promise> # 覆盖缺口解决
# 质量门
<promise>QUALITY_GATES_PASSED</promise> # 所有门通过
<promise>DEPLOYMENT_READY</promise> # 准备好部署
# 合同/API
<promise>CONTRACTS_VALID</promise> # 合同对齐
<promise>API_COMPLIANT</promise> # API匹配规范
# 安全
<promise>SECURITY_CLEARED</promise> # 无漏洞
<promise>COMPLIANCE_MET</promise> # 合规要求满足
# 性能
<promise>PERF_TARGET_MET</promise> # 基准测试满足
示例: 完整QE迭代工作流
## 完整QE迭代任务
### 目标
通过迭代质量改进实现部署准备就绪
### 阶段1: 测试健康(优先级)
1. 运行 `npm test`
2. 迭代修复失败测试
3. 成功: <promise>TESTS_GREEN</promise>
### 阶段2: 覆盖(阶段1后)
1. 运行 `npm test -- --coverage`
2. 为未覆盖关键路径编写测试
3. 成功: 覆盖 >= 80% -> <promise>COVERAGE_MET</promise>
### 阶段3: 质量门(阶段2后)
1. 运行代码检查: `npm run lint`
2. 运行类型检查: `npx tsc --noEmit`
3. 修复任何违规
4. 成功: <promise>LINT_PASS</promise> + <promise>TYPES_PASS</promise>
### 阶段4: 安全(与阶段3并行)
1. 运行 `npm audit`
2. 修复关键/高漏洞
3. 成功: <promise>SECURITY_CLEARED</promise>
### 阶段5: 集成
1. 运行 `npm run test:integration`
2. 修复任何集成失败
3. 成功: <promise>INTEGRATION_PASS</promise>
### 最终门
当所有阶段完成 -> <promise>DEPLOYMENT_READY</promise>
### 安全限制
- 每个阶段最大迭代次数: 15
- 总最大迭代次数: 50
- 卡住检测: 5次迭代无进展触发升级
故障排除
问题: 测试持续失败相同断言
原因: 可能是设计问题,而非实现错误
解决方案:
- 在同一测试上尝试5次后停止迭代
- 分析测试期望是否正确
- 审查生产行为是否符合设计
- 如果不明确,升级到人工审查
问题: 覆盖平台期
原因: 剩余未覆盖代码复杂/有条件
解决方案:
- 识别未覆盖分支(不仅是行)
- 生成边缘案例测试
- 考虑未覆盖代码是否为死代码
- 对于真正不可测试代码接受较低目标
问题: 不稳定测试无法稳定
原因: 深度时序或状态问题
解决方案:
- 添加显式等待/重试
- 模拟时间依赖行为
- 隔离测试环境
- 考虑标记为跳过并提供解释
相关技能
资源
- AQE v3 文档 - 完整v3参考
- Ralph Wiggum 技术 - 原始方法论
- 代理化QE MCP 工具 - MCP工具参考
起源: 改编自Ralph Wiggum插件(anthropics/claude-code) 专门用于: 代理化QE v3舰队,具有60个QE代理 领域: 测试生成、测试执行、覆盖分析、质量评估