变异测试 - 原因

时间:2015-07-27 10:26:39

标签: unit-testing

突变检测,有很多误报。尽管有这些误报,我应该何时何地使用变异测试?

例如。

public int add(int a,int b){ 
return a+b; 
}

public void testAdd() {
add(2,2);
...
}

如果导致突变,则返回a * b

测试用例仍然会通过,但不应该。

1 个答案:

答案 0 :(得分:2)

您提供的示例不是误报(通常称为等效突变

当你的单一测试没有完全描述你想要的行为时,突变体会存活下来(补充)。即变异测试告诉你你的测试套件有缺陷。

这应该会提示您添加更多描述行为的测试(例如声明1 + 2 = 3)。

当你添加更多测试时,这个突变体将被杀死。

你应该使用变异测试作为你的发展来捕捉你的错误。虽然在理论上等效的突变体代表了一个大问题(你只能通过人工检查确定一个幸存的突变体是否相同),但实际上我发现它们很少是一个问题 - 至少在用pitest变异时。