我正在使用Scala语言阅读Property based testing。在这张幻灯片中,他们提出了这个概念:为了证明函数a+b
是真的。我们只是为了证明这些陈述对随机数据是正确的:
我的问题是:检查我们的测试用例是否足够的哪种方法,可以涵盖不同数据的所有情况。例如,在前面的示例中,我们如何确保在我们的三个属性正确运行后,我们可以确保我们的实现是正确的。
答案 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以及某些操作+
,那么+
确实是添加的。