trailofbits/mewt

GitHub: trailofbits/mewt

多语言变异测试框架,通过向源码注入微小变更来评估测试套件的真实有效性,揭示传统代码覆盖率无法发现的质量盲区。

Stars: 19 | Forks: 0

# Mewt Mewt 是一个 mutation testing(变异测试)工具。Mutation testing 的工作原理是对您的源代码进行微小的更改——例如将 `+` 替换为 `-`,或将 `true` 交换为 `false`——然后针对每个更改运行您的测试套件。如果您的测试在发生更改后仍然通过,那就说明存在缺口:变异体“存活”了下来,这意味着您的测试未能捕获该更改。 这揭示了代码覆盖率无法告诉您的事情:不仅在于您的测试是否*执行*了某一行,还在于如果该行代码有误,测试是否真的会*失败*。 **支持的语言:** - Go - JavaScript/TypeScript - Rust - Solidity 有关活动在底层如何运行的详细信息,请参阅 [工作原理](docs/how-it-works.md)。要添加对新语言的支持,请参阅 [添加语言](docs/adding-a-language.md)。 ## 安装 ### 预编译二进制文件(推荐) ``` curl --proto '=https' --tlsv1.2 -LsSf https://github.com/trailofbits/mewt/releases/latest/download/mewt-installer.sh | sh ``` 如需改为从源代码构建,请参阅 [从源代码构建](docs/building-from-source.md)。 ## 快速开始 - 对单个文件进行变异(自动检测语言): ``` mewt run path/to/contract.rs ``` - 对目录中所有受支持的文件进行变异(递归): ``` mewt run path/to/project ``` - 列出某种语言可用的变异 slug: ``` mewt print mutations --language rust ``` - 打印目标路径的所有变异体: ``` mewt print mutants --target path/to/contract.rs ``` - 显示变异测试结果(可按目标筛选): ``` mewt results --target path/to/contract.rs ``` - 测试所有变异体,即使更严重的变异体未被捕获(禁用跳过优化): ``` mewt run path/to/contract.rs --comprehensive ``` ## 配置 Mewt 从当前工作目录向上查找最近的 `mewt.toml` 文件中读取配置。CLI 标志会覆盖配置文件中的值。 有关完整的配置参考,请参阅 [配置](docs/configuration.md);有关带有注释的示例,请参阅 [`src/example.toml`](src/example.toml)。 ## 示例 本仓库包含您可以试用的示例文件: - Go:`tests/go/examples/hello-world.go` - JavaScript/TypeScript:`tests/javascript/examples/simple.js` - Rust:`tests/rust/examples/hello-world.rs` - Solidity:`tests/solidity/examples/hello-world.sol` ## 备注 - 支持混合语言项目。当针对某个目录时,仅考虑具有受支持扩展名的文件。
标签:Anchore, CMS安全, Go, IPv6支持, JavaScript, Python安全, QA, Ruby工具, Rust, Solidity, TOML配置, TypeScript, 二进制发布, 云安全监控, 代码漏洞检测, 单元测试, 可视化界面, 威胁情报, 安全插件, 客户端加密, 开发者工具, 开源工具, 数据可视化, 日志审计, 智能合约审计, 测试框架, 测试覆盖率, 突变测试, 网络流量审计, 软件测试工具, 静态分析