面试 - 测试值

时间:2012-11-05 18:09:31

标签: unit-testing computer-science

好吧,我们假设我有一个函数检查给定数组中哪个是最重复的数字。

然后需要对此功能进行测试,并且需要使用特定值进行测试,以确保功能正常工作(单元测试) - 这些值是什么?我很困惑。

Ps为什么我需要使用这些值,为什么我不能只调试代码,或者在笔和纸上写它以查看结果应该是什么,然后将它与输出的值相匹配?

2 个答案:

答案 0 :(得分:4)

转角案件。

*它可以处理否定*

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.)对于这个特殊功能,手工操作很容易。但是如果你计算函数的jacobian矩阵的确定性呢?你真的不想在纸上做那件事吗?

4。)在企业环境中,正式化测试可以防止团队在关键时刻偷工减料,这对公司来说非常具有破坏性,并且由于代码稳定性降低,净额将增加开发时间而不是减少开发时间。

答案 1 :(得分:1)

值是测试值。在你的例子中,你可能有一个频繁出现的数组[1,2,2,3],一个带有平局[1,1,2,2,3],一个空数组[]来测试最有趣的边缘情况。

相关问题