具有未知输出的程序的突变测试
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?"
是
- 弱 - 是
- 公司 - 是
- 强 - 否
流行的开源变异测试工具主要(全部?)强变异测试系统。
由于突变测试的最终目的是通过查找可以揭示错误的测试用例(通过更改程序的某些部分然后验证输出)来检测程序错误,似乎只有当输出不同时对于与原始突变体相比的突变体,是否可以检测到与该突变体相关的故障。
但是,如果开发人员不确定程序的输出,或者如果对于不同的测试用例,不同的值 是 确实是预期的,那么 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?"
是
- 弱 - 是
- 公司 - 是
- 强 - 否
流行的开源变异测试工具主要(全部?)强变异测试系统。