Scala:基于属性的测试:在编写测试

时间:2017-06-12 20:11:36

标签: scala property-based-testing

我正在使用Scala语言阅读Property based testing。在这张幻灯片中,他们提出了这个概念:为了证明函数a+b是真的。我们只是为了证明这些陈述对随机数据是正确的:

  1. a + b = b + a
  2. a + 0 = a
  3. a + 1 + 1 = a + 2
  4. 我的问题是:检查我们的测试用例是否足够的哪种方法,可以涵盖不同数据的所有情况。例如,在前面的示例中,我们如何确保在我们的三个属性正确运行后,我们可以确保我们的实现是正确的。

1 个答案:

答案 0 :(得分: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以及某些操作+,那么+确实是添加的。