名称: 分析测试金字塔 描述: 通过检查单元测试、集成测试和端到端测试的分布来分析测试金字塔的健康度。用于测试组合评估和重新平衡建议。 允许工具: Read, Glob, Grep, Bash, Skill, Task 参数提示: [测试目录]
分析测试金字塔命令
分析当前的测试分布,并为更健康的测试金字塔推荐改进措施。
过程
步骤1: 发现测试
如果提供了测试目录,则使用它。否则,搜索常见的测试模式:
# .NET 项目
find . -name "*.Tests.csproj" -o -name "*Tests*.csproj"
find . -name "*Test*.cs" -type f
# 计数测试
grep -r "\\[Fact\\]\\|\\[Theory\\]" --include="*.cs" | wc -l
步骤2: 分类测试
通过项目/文件夹命名识别测试级别:
- 单元测试:
*.Unit.Tests,*.Domain.Tests - 集成测试:
*.Integration.Tests,*.Api.Tests - 端到端测试:
*.E2E.Tests,*.Acceptance.Tests
计算每个级别的测试数量:
| 级别 | 项目 | 测试数量 |
|-------|---------|------------|
| 单元测试 | MyApp.Domain.Tests | 150 |
| 单元测试 | MyApp.Application.Tests | 80 |
| 集成测试 | MyApp.Api.Tests | 60 |
| 端到端测试 | MyApp.E2E.Tests | 40 |
步骤3: 加载金字塔技能
调用 test-strategy:test-pyramid-design 技能进行形状分析模式。
步骤4: 分析分布
计算百分比并识别形状:
## 当前分布
| 级别 | 数量 | 百分比 | 目标 |
|-------|-------|------------|--------|
| 单元测试 | 230 | 70% | 70% ✅ |
| 集成测试 | 60 | 18% | 20% ✅ |
| 端到端测试 | 40 | 12% | 10% ⚠️ |
**形状评估**: 近乎健康的金字塔,端到端测试稍重
步骤5: 识别反模式
检查常见问题:
- 冰淇淋锥形: 端到端测试 > 30%
- 沙漏形: 集成测试 > 50%
- 倒金字塔形: 单元测试 < 50%
- 缺失层: 任何级别为 0%
步骤6: 生成建议
基于分析:
## 建议
### 立即行动
1. **减少端到端测试** 2%(8个测试)
- 审查可以推送到集成级别的测试
- 识别重复低级别覆盖的测试
### 测试迁移候选
| 当前级别 | 候选 | 建议级别 | 原因 |
|---------------|-----------|-------------------|--------|
| 端到端测试 | 登录验证 | 集成测试 | API测试足够 |
| 端到端测试 | 表单验证 | 单元测试 | 纯逻辑测试 |
| 集成测试 | 数据转换 | 单元测试 | 无需I/O |
### 覆盖缺口
- 需要单元测试的领域:[业务逻辑区域]
- 需要集成测试的领域:[API边界]
步骤7: 输出报告
## 测试金字塔分析完成
**当前形状**: [形状名称]
**分布**:
```text
▲
███ 端到端测试: 12%
█████ 集成测试: 18%
███████ 单元测试: 70%
```
**健康得分**: [X/10]
**关键发现**:
1. [发现1]
2. [发现2]
**建议行动**:
1. [行动1]
2. [行动2]
示例
分析当前目录:
/test-strategy:analyze-pyramid
指定测试目录:
/test-strategy:analyze-pyramid tests/