关于 mutation-testing
用于评估测试套件质量的技能:向代码引入变异,并检查测试能否发现。内容涵盖 JavaScript、TypeScript、Java 和 Python 项目的相关指南。
主要功能
- 01变异测试基础
- 02Stryker 配置与运行
- 03JavaScript 和 TypeScript 指南
- 04Java 和 Python 指南
- 05解读变异测试报告
适用场景
- 01评估测试能否发现行为变化
- 02查找未测试的代码路径
- 03检查薄弱或冗余测试
- 04为关键逻辑安排测试优先级
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill mutation-testing安装后在 Claude Code 中输入/mutation-testing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/mutation-testing-reports.mdmutmut-for-python.mdpitest-for-java.mdstryker-for-javascripttypescript.mdscripts/scaffold-tests.shtemplates/test-template.js详细介绍
变异测试
目录
概述
变异测试通过对源代码引入小幅改动(变异),并验证测试是否失败,来评估测试套件的质量。如果测试没有发现某个变异,说明测试覆盖率或测试质量存在不足。这种技术有助于识别薄弱或无效的测试。
适用场景
- 评估测试套件的有效性
- 找出未经测试的代码路径
- 提升测试质量指标
- 验证关键业务逻辑是否经过充分测试
- 识别冗余或薄弱的测试
- 衡量超出行覆盖率的实际测试覆盖情况
- 确保测试确实验证了行为
快速开始
最简可运行示例:
# Install Stryker
npm install --save-dev @stryker-mutator/core @stryker-mutator/jest-runner
# Initialize configuration
npx stryker init
# Run mutation testing
npx stryker run
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| Stryker for JavaScript/TypeScript | JavaScript/TypeScript 的 Stryker |
| PITest for Java | Java 的 PITest |
| mutmut for Python | Python 的 mutmut |
| Mutation Testing Reports | 变异测试报告 |
最佳实践
✅ 应该做
- 对关键业务逻辑进行变异测试
- 重要代码的变异分数应达到 80% 以上
- 检查存活的变异体,以改进测试
- 标记等价变异体并将其排除
- 在 CI 中对关键模块使用变异测试
- 彻底测试边界条件
- 验证实际行为,而不只是代码是否执行
❌ 不应该做
- 不要期望所有代码都达到 100% 的变异分数
- 不要对所有代码运行变异测试(速度太慢)
- 不要忽略等价变异体
- 不要对 getter/setter 进行变异测试
- 不要对生成的代码运行变异测试
- 不要跳过对复杂逻辑的变异测试
- 不要只关注行覆盖率
评论
支持 Markdown