变异测试

2021-03-04 10:36:56 浏览数 (1)

什么是变异测试?

变异测试,英文Mutation Testing,是使用变异器 (切换数学运算符,更改返回类型,删除调用等)将代码修改为不同的变异(基于变异器创建新代码),并检查单元测试是否失败。好的单元测试应该使所有突变都失败(杀死)。

所以,变异测试的有效性可以衡量杀死了多少个突变。

变异测试是覆盖率的一个很好的补充。相比覆盖率,它能够使单元测试更加健壮。

执行变异测试

在执行变异测试前需要先执行单元测试,不然变异测试有可能找不到单元测试类。

  1. 找到对应模块下的pitest插件:

注: 如果是要执行指定某个包路径下所有类的单元测试变异测试,则通过targetClasses和targetTests的模糊匹配,比如这样:

com.xxx.util.* testng

  1. 找到插件双击 "pitest:mutationCoverage"即可运行变异测试。运行完成后,会自动生成变异测试报告,报告位置一般在对应模块的target/pit-reports目录下: 报告会详细列出每个包、每个类的覆盖率,变异通过率等。

从上面很明显可以看到我的单元测试其实并没有写得完整,我们看看里面哪些变异详细报告:

如果我的单元测试加上边界测试:

再次执行,变异测试全覆盖了!

0 人点赞