变异测试输出未知的程序

时间:2017-08-17 10:23:14

标签: testing mutation-testing

由于突变测试的最终目的是通过查找可以揭示错误的测试用例(通过更改程序的各个部分然后验证输出)来检测程序的错误,似乎只有输出不同的与原始突变体相比,突变体可以检测到与该突变体相关的缺陷。

但是,如果开发人员不确定程序的输出,或者对于不同的测试用例,确实预期不同的值 ,她/他如何检测是否有突变体是否检测到故障(当然,当突变导致编译时错误时除外)?

编辑:如果原始和突变体的输出不同而不确认原始程序的输出是否正确,那么说突变体被杀死是否正确?

2 个答案:

答案 0 :(得分:0)

没有。 突变测试的主要目标是检查测试用例的质量。

如果测试用例质量很好,它会杀死大多数突变体。

答案 1 :(得分:0)

这取决于您所谈论的突变检测类型。

弱突变测试中,如果突变体导致程序内部状态发生变化,则认为该突变体被杀死 - 这种变化甚至不需要在外部可见。

坚定突变检测中,如果变异从其起源传播一定距离,则认为该突变体被杀死。

强变异测试中,更改必须传播并在测试用例中通过断言进行检测。

答案

  

“说突变体被杀死是不正确的,只是如果它被杀死了   原始和突变体有不同的输出,没有验证是否   原始程序的输出是对的吗?“

  • 弱 - 是
  • 坚定 - 是
  • 强 - 没有

流行的开源变异测试工具主要是(全部?)强变异测试系统。