是否有可能对数字进行不必要的测试?

时间:2018-03-04 04:06:40

标签: unit-testing language-agnostic

例如,如果我想测试该数字x = 5,我可以编写一个测试来测试确实,x等于5。那么是否有必要添加其他测试,例如x != 4x != 6?或者检查x = 5是否意味着那些其他测试也是正确的呢?

2 个答案:

答案 0 :(得分:0)

如果变量ForEach-Object完全代表数字,则不需要针对不同的值进行测试。除了显而易见之外,这源于标准数学中假设的等式算子的传递性。

然而,标准二进制编码无法准确表示许多像0.1这样的小数。在这种情况下,您必须接受某个错误,因此不应该对x进行测试,因为即使两个值在所需的容差范围内相等,它也可以是x == 0.1。相反,您应该测试false x <= 0.1 + e AND x >= 0.1 - e是否为可接受的错误。

顺便说一下,我使用e而不是==作为相等运算符,因为在C语言和相关语言中,=始终为true,无论x = 5的原始值是什么1}}是:)。

答案 1 :(得分:0)

这完全取决于背景和范例。

例如,在面向对象的编程语言中,您可以为类型/类定义相等性,这有时意味着相等性不再是可传递的。 x == 5x == 6都是正确的。最糟糕的是x == 6x不是6