由于突变测试的最终目的是通过查找可以揭示错误的测试用例(通过更改程序的各个部分然后验证输出)来检测程序的错误,似乎只有输出不同的与原始突变体相比,突变体可以检测到与该突变体相关的缺陷。
但是,如果开发人员不确定程序的输出,或者对于不同的测试用例,确实预期不同的值 ,她/他如何检测是否有突变体是否检测到故障(当然,当突变导致编译时错误时除外)?
编辑:如果原始和突变体的输出不同而不确认原始程序的输出是否正确,那么说突变体被杀死是否正确?
答案 0 :(得分:0)
没有。 突变测试的主要目标是检查测试用例的质量。
如果测试用例质量很好,它会杀死大多数突变体。
答案 1 :(得分:0)
这取决于您所谈论的突变检测类型。
在弱突变测试中,如果突变体导致程序内部状态发生变化,则认为该突变体被杀死 - 这种变化甚至不需要在外部可见。
在坚定突变检测中,如果变异从其起源传播一定距离,则认为该突变体被杀死。
在强变异测试中,更改必须传播并在测试用例中通过断言进行检测。
答案
“说突变体被杀死是不正确的,只是如果它被杀死了 原始和突变体有不同的输出,没有验证是否 原始程序的输出是对的吗?“
是
流行的开源变异测试工具主要是(全部?)强变异测试系统。