2017-06-12 10 views
0

私はScala言語を使ってProperty based testingについて読んでいます。このスライドでは、この概念を提示しています。関数a+bを証明するためには、真です。私達はちょうどのみのステートメントは、ランダムなデータで満たされていることを証明しますScala:プロパティベースのテスト:テストを書くときのnecssaryのテストケースをすべて知る方法

  1. + B = B +
  2. + 0が
  3. + 1 + 1 = A + 2
を=

私の質問は、テストケースが十分であることを確認するための方法論で、さまざまなデータのすべてのケースをカバーできます。たとえば、前の例では、3つのプロパティが正しく実行された後、実装が正しいことを確認できます。

+1

'3.'が正しく表示されない – stark

答えて

0

まず、#3に入力ミスがあります。*ではなく+となっています。

あなたの質問にお答えするには、最も確かにではありません。これらの3つの特性を証明すれば、実装が正しいことを確認してください。すべての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のといくつかの操作+のために保持する場合は、+は確かに加えてあります。

+0

「次へ」の意味を教えてください。さらに、プロパティベースのテストのすべての条件を確実に満たしていることがわかっているメソッドはありますか?ありがとう –

+0

'next'はちょうど" +1 "です。これは、自然数がどのように定義されるかです。 '1 = next(0)'は自然数であり、各自然Nに対して、ちょうど1つのM =次(N)であり、それも自然である。上記の2つのプロパティは、整数加算の定義です。したがって、条件を満たす場合、操作は定義によって追加されます。任意の操作を検証するプロパティを把握する普遍的なルールはありません。あなたはあなたの操作の特性を持つことができる唯一の人です。 – Dima

関連する問題