突变测试可达性感染和传播
mutation testing reachability infection and propagation
大家好,我有一个关于突变测试的问题,这里是示例代码
//Effects: If numbers null throw NullPointException
// else return LAST occurance of val in numbers[]
//If val not in numbers [] return -1
public static int findVal (int numbers[], int val)
{
int findVal = -1;
for( int i = 0 ; i < numbers.length ; i++) // for( int i = 1 ; i < numbers.length ; i++)
if( numbers[i] == val)
findVal = i;
return (findVal);
}
(a) 如果可能,找到未到达突变体的测试输入。
(b) 如果可能,找到满足可达性但不满足突变体感染的测试输入。
(c) 如果可能,找到满足感染但不满足突变体传播的测试输入。
(d) 如果可能,找到杀死突变体的测试输入。
您没有在问题中包含可达性、感染和传播的定义——我假设如下:
- 可达性:变异表达式的执行
- 感染:变异表达式的值不同于原始(未变异)表达式的值
- 传播:感染状态(不同的表达值)导致感染可观察状态
另请注意,(d) 不仅取决于输入,还取决于测试预言——实现传播并不意味着杀死突变体。
以下输入满足您的要求:
(a) 不存在这样的输入;循环初始值设定项 int i = 0
为每个输入执行,即使 numbers
为 null 并因此 numbers.length
引发 NullPointerException。请注意,只有不调用 findVal
方法的测试才能到达突变体——调用 findVal
意味着满足此突变体的可达性。
(b) 不存在这样的输入;突变的表达独立于方法参数(i=0
!= i=1
对于任何输入)——满足可达性意味着满足该突变体的感染。
(c) numbers
为空数组;如果 numbers.length
为 0,则 i
的初始值(对于任何 i
>=0)无关紧要,即使 i
的状态已被感染。为 numbers
传入 null 是另一个满足感染但不满足传播的示例。
(d) numbers
是单元素数组,其元素值为val
。有很多满足传播的输入,这意味着突变体可以被杀死——测试是否真正杀死突变体取决于测试是否断言结果。
大家好,我有一个关于突变测试的问题,这里是示例代码
//Effects: If numbers null throw NullPointException
// else return LAST occurance of val in numbers[]
//If val not in numbers [] return -1
public static int findVal (int numbers[], int val)
{
int findVal = -1;
for( int i = 0 ; i < numbers.length ; i++) // for( int i = 1 ; i < numbers.length ; i++)
if( numbers[i] == val)
findVal = i;
return (findVal);
}
(a) 如果可能,找到未到达突变体的测试输入。
(b) 如果可能,找到满足可达性但不满足突变体感染的测试输入。
(c) 如果可能,找到满足感染但不满足突变体传播的测试输入。
(d) 如果可能,找到杀死突变体的测试输入。
您没有在问题中包含可达性、感染和传播的定义——我假设如下:
- 可达性:变异表达式的执行
- 感染:变异表达式的值不同于原始(未变异)表达式的值
- 传播:感染状态(不同的表达值)导致感染可观察状态
另请注意,(d) 不仅取决于输入,还取决于测试预言——实现传播并不意味着杀死突变体。
以下输入满足您的要求:
(a) 不存在这样的输入;循环初始值设定项 int i = 0
为每个输入执行,即使 numbers
为 null 并因此 numbers.length
引发 NullPointerException。请注意,只有不调用 findVal
方法的测试才能到达突变体——调用 findVal
意味着满足此突变体的可达性。
(b) 不存在这样的输入;突变的表达独立于方法参数(i=0
!= i=1
对于任何输入)——满足可达性意味着满足该突变体的感染。
(c) numbers
为空数组;如果 numbers.length
为 0,则 i
的初始值(对于任何 i
>=0)无关紧要,即使 i
的状态已被感染。为 numbers
传入 null 是另一个满足感染但不满足传播的示例。
(d) numbers
是单元素数组,其元素值为val
。有很多满足传播的输入,这意味着突变体可以被杀死——测试是否真正杀死突变体取决于测试是否断言结果。