具有未知输出的程序的突变测试

Mutation Testing for programs with an unknown output

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

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

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

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

如果测试用例质量好,它会杀死大部分突变体。

这取决于您所说的突变测试类型。

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

公司突变测试中,如果变化从其起源传播一定距离,则认为突变体已被杀死。

强突变测试中,更改必须通过测试用例中的断言进行传播和检测。

所以

的答案

"Is it correct to say that the mutant is killed, simply if the original and the mutant have different outputs, without verifying if the original program's output is right?"

  • 弱 - 是
  • 公司 - 是
  • 强 - 否

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