我应该为排序功能做什么测试?

时间:2014-08-29 15:18:45

标签: sorting testing qa

我接受了面试,他们向我询问了排序功能的测试场景。

问题是: 我们有3个数字和一个对它们进行排序的函数。你会对这个功能做什么测试?

我说

  • 检查零
  • 检查负数
  • 检查是否多次返回相同的号码

他们说答案还可以,但如果数字限制在1 - 1000之间,我应该做哪些额外的测试?

2 个答案:

答案 0 :(得分:1)

我会写下面的测试。我假设该函数采用一个数组,例如, [1,2,3]。

  • 测试该函数实际排序未排序的输入:
    • 输入中必须存在输入中存在的所有数字,而不是其他数字。
    • 必须对输出进行排序,即输出中的每个数字必须小于以下数字。 (你可以通过测试排序来断言这两件事,例如[2,1]给你[1,2],但它们是不同的要求,应该明确说明。)
  • 如果语言允许您使用不同类型的数组(例如整数和浮点)调用函数,请测试排序[1.1,1]返回[1,1.1]。
  • 测试,给定[],函数返回[]。 (这是输入数组长度的边缘情况。)
  • 测试,给定[1],函数返回[1]。 (这是输入数组长度的边缘情况。)
  • 测试,给定[1000],函数返回[1000]。 (这是输入元素大小的边缘情况。)
  • 如果输入为[0](小于允许范围的最大数字),则测试函数是否会引发异常(或者在出现错误时应该执行的任何操作)。如果允许使用浮点数,请使用[0.9]。
  • 如果输入为[1001](大于允许范围的最小数字),则测试函数是否引发异常或其他异常。如果允许使用浮点数,请使用[1000.1]。
  • 如果编写函数的语言允许您使用

    调用该函数
    • 空值,
    • 非空数值,不是数组,
    • [空]
    • 包含非空值的数组,该值不是数字

    测试该函数是否会引发异常或其他情况。

如果性能测试在范围内,请在

上测试功能的时间性能
  • 给定长度的随机排序输入(作为基线)
  • 以有趣的方式排列相同长度的输入:

    • 已经排序最少到最大
    • 反向排序
    • 由重复的相同数字组成

    以及您从研究排序算法和检查实施过程中提出的其他潜在病态案例。

您甚至可能需要测试空间(内存使用情况)性能。

答案 1 :(得分:0)

您也可以进行边界测试(使用非常小或非常大的值进行检查)。如果数字在1-1000范围内,您可以尝试使用小数字(1,2,4)和大数字(998,996,1000)。