insertion_procedure (int a[], int p [], int N)
{
int i,j,k;
for (i=0; i<=N; i++) p[i] = i;
for (i=2; i<=N; i++)
{
k = p[i];
j = 1;
while (a[p[j-1]] > a[k]) {p[j] = p[j-1]; j--}
p[j] = k;
}
}
这个特定的插入程序有哪些好的测试用例?
答案 0 :(得分:1)
如果我使用此属性正确读取此函数的任何输入 a [0]&gt; a [2]会出现故障
首先遍历for (i=2; i<=N; i++)
追踪变量。
i = 2
k = p[i] == 2
j = 1
p[j-1] = p[0] == 0
a[0] > a[2]
while循环条件为真,因此j-- == 0
while (a[p[-1] > k)
- &gt;段错误这可能是一个很好的测试: - )
看起来没有任何有用的输入可以使while循环在没有段错误的情况下多次运行所以我会说那里存在逻辑错误
答案 1 :(得分:1)
我会从这些
开始看一下实现(我不用c编程),我怀疑其中一些会AV。
简而言之,您应该至少对输入参数进行边界分析,并为每个参数设置测试,每个参数值超出边界和入站。
示例强>
如果您有1个参数并确定边界为0和10,则应该生成6个测试用例。你应该传入-1,0,1,9,10和11.
进一步研究
随着参数数量的增加,很快就无法测试所有组合。这就是all-pairs testing派上用场的地方。