嘿,伙计们,我有个关于突变测试的问题,这是样本代码
//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)如果可能,找一个杀死突变体的测试输入。
发布于 2015-11-25 10:53:37
您的问题中没有包括可达性、感染和传播的定义--我假设如下:
还请注意,(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.有许多输入满足传播,这意味着突变体可以被杀死--测试是否真的杀死突变体取决于测试是否对结果进行断言。
https://stackoverflow.com/questions/33909868
复制相似问题