【问题标题】:Mutation Testing for programs with an unknown output具有未知输出的程序的突变测试
【发布时间】:2018-01-25 17:13:12
【问题描述】:
由于变异测试的最终目的是通过发现可以揭示错误的测试用例来检测程序的错误(通过更改程序的部分然后验证输出),似乎只有当输出不同时与原始突变体相比,是否可以检测到与该突变体相关的故障。
但是,如果开发人员不确定程序的输出,或者对于不同的测试用例,确实需要不同的值 ,那么她/他如何检测突变体是否检测到错误或者不是(当然,除了当突变导致编译时错误)?
编辑: 说突变体被杀死是否正确,只是如果原始程序和突变体有不同的输出,而不验证原始程序的输出是否正确?
【问题讨论】:
标签:
testing
mutation-testing
【解决方案1】:
这取决于您所说的突变测试类型。
在弱突变测试中,如果突变导致程序内部状态发生变化,则认为该突变被杀死——这种变化甚至不需要在外部可见。
在坚定的突变测试中,如果变化传播到距离其起源一定距离的地方,则认为突变体被杀死。
在强突变测试中,更改必须传播并被测试用例中的断言检测到。
所以答案
“说变种人被杀死是否正确,只要
原始和突变有不同的输出,没有验证是否
原程序的输出对吗?”
是
流行的开源突变测试工具主要是(全部?)强大的突变测试系统。
【解决方案2】:
没有。
变异测试的主要目的是检查测试用例的质量。
如果测试用例质量好,它会杀死大部分突变体。