返回术语表
测试

突变测试

一种通过向代码引入小的更改(突变)并检查测试是否检测到它们来评估测试质量的技术。未检测到的突变表示测试较弱。

定义

突变测试创建"突变体"——带有小更改的代码副本,如翻转操作符(>变<)、删除语句或更改返回值。好的测试在针对突变体运行时应该失败("杀死"它们)。存活的突变体揭示了测试覆盖或断言中的差距。工具包括Stryker(JavaScript/TypeScript)、PIT(Java)和mutmut(Python)。突变分数=被杀死的突变体/总突变体。

为什么重要

代码覆盖率可能很高,但测试仍然很弱(例如,执行代码但不断言结果的测试)。突变测试衡量实际的测试有效性。研究表明,突变测试比基于覆盖率的测试发现2-4倍的缺陷。它计算成本高,但对关键代码很有价值。

示例

代码:if (age >= 18) return true。突变体将>=改为>。如果测试没有捕获这个(所有测试用户都>18岁,没有正好18岁的),突变体存活,揭示缺失的边界情况测试。

相关术语

mutation testingStrykerPITmutant testingtest qualitymutation score

使用diffray自动化代码审查

多智能体AI代码审查系统。自动发现bug、安全漏洞和架构问题。