突变检测,有很多误报。尽管有这些误报,我应该何时何地使用变异测试?
例如。
public int add(int a,int b){
return a+b;
}
public void testAdd() {
add(2,2);
...
}
如果导致突变,则返回a * b
测试用例仍然会通过,但不应该。
答案 0 :(得分:2)
您提供的示例不是误报(通常称为等效突变)
当你的单一测试没有完全描述你想要的行为时,突变体会存活下来(补充)。即变异测试告诉你你的测试套件有缺陷。
这应该会提示您添加更多描述行为的测试(例如声明1 + 2 = 3)。
当你添加更多测试时,这个突变体将被杀死。
你应该使用变异测试作为你的发展来捕捉你的错误。虽然在理论上等效的突变体代表了一个大问题(你只能通过人工检查确定一个幸存的突变体是否相同),但实际上我发现它们很少是一个问题 - 至少在用pitest变异时。