好吧,让我们假设我有一个函数,它检查给定的数组中哪个是重复次数最多的数字。
然后需要测试这个函数,并且需要使用特定值进行测试,以确保函数正确工作(单元测试)-这些值是什么?我很困惑。
附注:为什么我需要使用这些值,为什么我不能直接调试代码,或者把它写在纸和笔上,看看结果应该是什么,然后把它与输出的值进行匹配?
发布于 2012-11-06 02:19:10
角落里的箱子。
**它能否应对负面影响**
Array = [-5, -5, -5, 5, 5, 5, 5] expected : 5
Array = [-5, -5, -5, -5, 5, 5, 5] expected : -5
它如何处理不明确的情况?
Array = [1,1,1,2,2,2] expected = ?? (See spec for expected)
Array = [1,2,3,4,5,6] expected = ??
它是如何处理任意大整数的
Array = [999999999999999, 999999999999999, 999999999999999, -99999999999999999]
expected = 999999999999999;
它如何处理任意大的数组?
Array = [0,0] + {i : 1 < i < 9999999999999, i is an int }
expected = 0;
它如何处理空值?
Array = null;
expected = null;
Array = [null, 1, 2, 3, 3, 3]
expected = 3;
Array = [null, null, null, 1, 2, 3, 3]
Expected = null or 3 depending on spec.
为什么单元测试而不仅仅是调试?
1.)调试假设您知道错误已经存在。如果我们总是通过查看代码就知道所有的错误,那么我们根本就不需要测试,不是吗?
2.)通常,我们对函数规范中未定义的部分更感兴趣,而不是代码中的错误。你从来没有告诉过我如何处理数组中的空值...在api完成之前,您需要在您的规范中指定这一点
3.)对于这个特殊的函数,手工计算很容易。但是如果你在计算一个函数的雅可比矩阵的行列式呢?你不会真的想在纸上这么做吧?
4.)
发布于 2012-11-06 02:11:46
这些值是测试值。在您的示例中,您可能有一个出现频率最高的1,2,2,3数组,一个具有平局1,1,2,2,3的数组,以及一个空的array [],用于测试最有趣的边缘用例。
https://stackoverflow.com/questions/13237860
复制相似问题