mcpField
M
mutation-testing

mutation-testing

github.com/aj-geddes测试与质量374475 次安装34 周前更新
代码仓库

关于 mutation-testing

用于评估测试套件质量的技能:向代码引入变异,并检查测试能否发现。内容涵盖 JavaScript、TypeScript、Java 和 Python 项目的相关指南。

主要功能

  1. 01变异测试基础
  2. 02Stryker 配置与运行
  3. 03JavaScript 和 TypeScript 指南
  4. 04Java 和 Python 指南
  5. 05解读变异测试报告

适用场景

  1. 01评估测试能否发现行为变化
  2. 02查找未测试的代码路径
  3. 03检查薄弱或冗余测试
  4. 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.md
mutmut-for-python.md
pitest-for-java.md
stryker-for-javascripttypescript.md
scripts/
scaffold-tests.sh
templates/
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/TypeScriptJavaScript/TypeScript 的 Stryker
PITest for JavaJava 的 PITest
mutmut for PythonPython 的 mutmut
Mutation Testing Reports变异测试报告

最佳实践

✅ 应该做
  • 对关键业务逻辑进行变异测试
  • 重要代码的变异分数应达到 80% 以上
  • 检查存活的变异体,以改进测试
  • 标记等价变异体并将其排除
  • 在 CI 中对关键模块使用变异测试
  • 彻底测试边界条件
  • 验证实际行为,而不只是代码是否执行
❌ 不应该做
  • 不要期望所有代码都达到 100% 的变异分数
  • 不要对所有代码运行变异测试(速度太慢)
  • 不要忽略等价变异体
  • 不要对 getter/setter 进行变异测试
  • 不要对生成的代码运行变异测试
  • 不要跳过对复杂逻辑的变异测试
  • 不要只关注行覆盖率

评论

支持 Markdown