在第一部分中,我们实现了100%的覆盖率。在这一部分中,我们更改了代码并检查我们的测试有多好。
有几种突变测试框架。在这种情况下,我们将使用PITEST。
什么突变可以应用于代码?这是最微小的突变列表:
让我介绍一下我们的突变体(只有少数)。首先是起源,其次是突变体(修改后的代码用红色高亮显示):图片标题
现在,让我们执行最简单的Maven插件并检查变异测试结果:
mvn clean test mvn org.pitest:pitest-maven:mutationCoverage
打开报告位于target / pit-reports / 201902032155 / index.html
因此,该报告说:
线路覆盖率100%,但我们早些时候就通过JoCoCo报告知道了这一点 有两个突变幸存下来,有23人被杀死。 突变体1是通过更改第14行的条件边界创建的,而第二个是通过将return替换为true来创建的。 让我们澄清一下突变体是什么样的:
那么,哪些遗漏的测试案例可能会消除我们的突变体呢?
结果为我们提供了100%被杀死的突变体,但是我们可以依靠它吗?
不幸的是没有。变异测试仅给我们一些提示-我们可能会忘记哪些情况(尤其是对于边界条件)。如果我们计算所有可能的应用状态集,则会发现还有更多的“遗漏”情况。
对变异测试的批评
原文链接:http://codingdict.com