0

我正在阅读使用 Scala 语言进行基于属性的测试。在这张幻灯片中,他们提出了这个概念:证明函数a+b是真的。我们只是为了证明这些陈述在随机数据上是正确的:

  1. a + b = b + a
  2. 一个 + 0 = 一个
  3. 一个 + 1 + 1 = 一个 + 2

我的问题是:哪些方法可以检查我们的测试用例是否足够,并且可以涵盖不同数据的所有案例。例如在前面的例子中,我们如何确定在我们的三个属性正确运行之后,我们可以确定我们的实现是正确的。

4

1 回答 1

0

首先,我假设您在 #3 中有一个错字,它应该是+而不是*.

要回答你的问题,如果你证明这三个属性,你肯定不能确定你的实现是正确的。例如,考虑这个实现,它满足所有三个属性,但肯定是错误的:

def wrongPlus(a: Int, b: Int) = if(a < 3 || b <3) b a+b else 0

要明确证明(整数)加法,您需要有一个独立的next整数实现。然后,根据定义:

1. a + 0 = a
2. a + next(b) = next(a + b) 

如果这些属性适用于任何 a 和 b 以及一些操作+,那么+确实是加法。

于 2017-06-12T21:09:06.340 回答