插入程序的黑盒测试用例

时间:2010-04-20 09:08:40

标签: c sorting testcase black-box

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;
    }
}

这个特定的插入程序有哪些好的测试用例?

2 个答案:

答案 0 :(得分:1)

如果我使用此属性正确读取此函数的任何输入 a [0]&gt; a [2]会出现故障

首先遍历for (i=2; i<=N; i++)

追踪变量。

  1. i = 2
  2. k = p[i] == 2
  3. j = 1
  4. p[j-1] = p[0] == 0
  5. 因为a[0] > a[2] while循环条件为真,因此j-- == 0
  6. 接下来条件的评估将会:while (a[p[-1] > k) - &gt;段错误
  7. 这可能是一个很好的测试: - )

    看起来没有任何有用的输入可以使while循环在没有段错误的情况下多次运行所以我会说那里存在逻辑错误

答案 1 :(得分:1)

我会从这些

开始
  • a []中的负数。结果应该是什么?
  • p []中的负数。
  • 负数N。
  • 一个空数组。
  • 一个空的p数组。
  • N = 0

看一下实现(我不用c编程),我怀疑其中一些会AV。

简而言之,您应该至少对输入参数进行边界分析,并为每个参数设置测试,每个参数值超出边界和入站。

示例
如果您有1个参数并确定边界为0和10,则应该生成6个测试用例。你应该传入-1,0,1,9,10和11.

进一步研究
随着参数数量的增加,很快就无法测试所有组合。这就是all-pairs testing派上用场的地方。