Cargo-mutants:注入 Bug 并检查你的测试是否能发现它们 :zombie:
`cargo-mutants` 是一款用于提高 Rust 程序质量的工具,它通过注入 bug 并检查测试是否能发现它们,从而评估测试的有效性,弥补覆盖率检测的不足。该工具易于在 Rust 源代码树上运行,并提供关于潜在 bug 和测试不足的信息。用户可以通过 `cargo install --locked cargo-mutants` 安装,并在项目目录下运行 `cargo mutants` 进行测试。文章还介绍了与 CI 集成的方法,以及如何参与改进该工具。项目目前处于积极维护状态,未来将持续改进。
cargo-mutants 帮助你提高程序的质量,它会找到那些可以被插入 bug 但不会导致任何测试失败的地方。
覆盖率测量会有帮助,但它真正告诉你的是测试 触及 了哪些代码,而不是测试是否真正 检查 了代码的行为。 Mutation 测试提供不同的信息,关于测试是否真正检查了代码的行为。
cargo-mutants
的目标是在任何 Rust 源代码树上都 易于 运行,并告诉你一些关于可能潜伏 bug 或测试可能不足的区域的 有趣 的信息。
主要的文档是用户指南:https://mutants.rs/
前提条件
cargo-mutants
可以帮助那些使用 cargo test
或 cargo nextest run
运行的非不稳定的测试的源代码树。
安装
cargo install --locked cargo-mutants
你也可以使用 cargo-binstall 安装,或者从 GitHub releases 上的二进制文件安装。
快速开始
在 Rust 源代码目录下,只需运行:
cargo mutants
要在单个文件中生成 mutants,运行:
cargo mutants -f src/something.rs
与 CI 集成
手册包含自动在 CI 中测试 mutants 的说明和示例,包括 pull requests 的增量测试和开发分支的完整测试。
帮助改进 cargo-mutants
如果你使用 cargo-mutants
或者只是喜欢这个想法,你可以帮助它变得更好:
- 在 GitHub discussions 中发布体验报告,说明它是否有效、失败、找到有趣的结果等。
- 赞助开发
项目状态
截至 2025 年 1 月,这是一个积极维护的业余时间项目。 我预计大约每隔一两个月会发布releases。
它目前非常有用,并且在未来还有很大的改进空间,特别是在添加新型 mutation 方面。
此软件按原样提供,不提供任何形式的保证。
延伸阅读
另请参阅: