【问题标题】:Black box test cases for insertion procedure插入过程的黑盒测试用例
【发布时间】:2010-04-20 09:08:39
【问题描述】:
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;
    }
}

对于这个特定的插入过程,有哪些好的测试用例?

【问题讨论】:

  • 我首先要为函数编写规范。最好在它上面的 cmets 中。使用您最喜欢的评论提取引擎的语法。 (我正在使用wwww.doxygen.org,如果你还没有的话。)
  • 如果你想写“黑盒”测试用例,函数代码是没有用的,一个带有前置条件和后置条件的函数规范才是。这就是“黑匣子”的意思。

标签: c sorting testcase black-box


【解决方案1】:

如果我正确阅读了这个函数,任何带有这个属性的输入 a[0] > a[2] 会出现段错误

第一次循环通过for (i=2; i&lt;=N; i++)

追踪我脑海中的变量。

  1. i = 2
  2. k = p[i] == 2
  3. j = 1
  4. p[j-1] = p[0] == 0
  5. 因为a[0] &gt; a[2]while循环条件为真,所以j-- == 0
  6. while 条件的下一个评估将执行:while (a[p[-1] &gt; k) -> SEGFAULT

这可能是一个很好的测试:-)

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

【讨论】:

    【解决方案2】:

    我会从这些开始

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

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

    简而言之,您至少应该对输入参数进行边界分析,并对每个参数进行测试,其中每个值都在边界外、边界上和入站上。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多