加载中...

变异测试(Mutation Testing)是评估测试套件质量的技术:工具按预定义规则对被测代码做微小改动生成"变异体"(如把 > 改成 >=、把 + 改成 -、删除一条语句),然后对每个变异体运行测试。若测试失败,称该变异体被"杀死";若全部通过,变异体"存活",说明测试没有覆盖到这一行为。
被杀死的变异体占比称为变异得分(Mutation Score)。与行覆盖率相比,它衡量的是测试的断言强度:一行代码被执行到但没有断言约束其行为,覆盖率会给高分,变异测试则会暴露问题,因此被认为是比覆盖率更诚实的指标。
常见工具包括 Java 的 PIT(pitest)、JavaScript 的 Stryker、Python 的 mutmut 等。
主要代价是计算量大——变异体数量与代码规模成正比,每个都要跑测试,大型项目需借助增量分析、并行执行来控制耗时;此外存在"等价变异体"(行为与原代码相同、逻辑上不可能被杀死)干扰得分。实践中常只对核心模块或改动部分启用。

登录 后参与讨论
暂无讨论,来发表第一条评论吧