Repolode
mbj

mbj/mutant

面向 Ruby 的变异测试工具,自动修改代码并找出测试未能捕获的改动。

Star
2,212
Fork
162
未关闭 Issue
127
最近提交
5天前

这是什么?

Mutant 是一款面向 Ruby 的变异测试工具。它会对代码做小幅改动,例如替换运算符、删除语句或修改返回值,然后针对每处改动运行测试。如果没有任何测试因此失败,该变异会被标记为存活,说明测试并未真正验证这部分行为。

每个存活的变异都需要做出判断:要么确认测试已经明确了正确语义,代码可以精简;要么补充缺失的测试。当代码或测试由 AI 工具生成时,仅仅测试通过并不能说明测试有效,这种场景下它尤其有用。

Mutant 支持 RSpec、Minitest 和 Test::Unit,可用于 Rails 应用并支持按 worker 隔离数据库。它提供增量模式以便在 CI 中运行,并会保存每次运行的结果供后续查看。开源项目可免费使用,商业使用需要订阅。

核心功能

  • 01对 Ruby 代码应用运算符、语句和返回值等变异,并逐一运行测试。
  • 02报告存活的变异,指出未被测试覆盖的行为。
  • 03支持 RSpec、Minitest 和 Test::Unit 集成。
  • 04支持 Rails,并为 PostgreSQL 和 SQLite 提供并行 worker 数据库隔离。
  • 05提供增量模式用于 CI,并保存会话历史以便回看结果。

适用场景

  • 检验 AI 助手编写的测试是否真正验证了代码行为。
  • 在重构前找出现有 Ruby 测试套件中的薄弱环节。
  • 在 CI 中只对变更的代码进行增量变异测试。

快速上手

  1. 1

    安装 RSpec 集成 gem

    gem install mutant-rspec
  2. 2

    对代码中的某个目标运行 mutant

    mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'

使用前须知

  • 仅支持 Linux 和 macOS。
  • 仅对开源项目免费;商业用途需要付费订阅。
  • README 未明确说明开源许可证(元数据显示为 NOASSERTION)。

收录于专题

标签

#mutation-testing#ruby#testing#rspec#minitest#code-quality#rails#code-quality-analyzer#code-review#coverage

常见问题

mutant 是什么?
面向 Ruby 的变异测试工具,自动修改代码并找出测试未能捕获的改动。 Mutant 是一款面向 Ruby 的变异测试工具。它会对代码做小幅改动,例如替换运算符、删除语句或修改返回值,然后针对每处改动运行测试。如果没有任何测试因此失败,该变异会被标记为存活,说明测试并未真正验证这部分行为。
mutant 可以免费使用吗?用的什么许可证?
mutant 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
mutant 还在维护吗?
活跃维护中。mutant 最近一次提交是在 2026年11月2日。
mutant 适合用来做什么?
检验 AI 助手编写的测试是否真正验证了代码行为。 在重构前找出现有 Ruby 测试套件中的薄弱环节。 在 CI 中只对变更的代码进行增量变异测试。
mutant 怎么安装和运行?
安装 RSpec 集成 gem: gem install mutant-rspec 对代码中的某个目标运行 mutant: mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'
在哪里获取 mutant?
源代码和安装说明在 GitHub 上:https://github.com/mbj/mutant

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目