0

仕様は、仕様を階層的に構造化する2つの異なる手段を提供します。1つは「仕様中のシステム」を定義することによるもので、もう1つはサブ例を作成することによるものです(1つの例は1つの仕様/テストステートメントです)。

誰かがそれらの異なるメカニズムの意図された使用法が一般的に何であるかをウェブサイトに答えるか、または指摘することができますか?仕様/例の再利用にも興味があります。

私のユースケース

特に、特定の入力例Yが与えられた場合にいくつかの出力Xを計算するためのさまざまなアルゴリズムAを含むプロジェクトがあります。たとえば、「正しい結果を計算する必要がある」のような設定を再利用できるように、アルゴリズムAをSUSとして選択する必要があります。 Y_1;たとえばY_2;..."?などの正しい結果を計算する必要があります。または、さまざまな例をSUSとして指定して、「アルゴリズムA_1で解決可能である必要があります。アルゴリズムA_2で解決可能である必要があります; ...」となるように指定する必要がありますか?

何をSUSに、何をサブ例に変換しますか?

4

1 に答える 1

1

通常、仕様下のシステム(SUS)は、データではなく、指定しているコードです。

次に、SUSと仕様の通常の例/サブ例の主な違いは、SUSには->-メソッドなどのコンテキストを設定するためのいくつかの追加メソッドがあるという事実です。

あなたのケースで実際に提案するのは、各アルゴリズムのデータが事実上同じである場合、例を作成するためのメソッドを定義することです。

def examplesMustPassFor(algo: Algorithm) = {
  "The algo "+algo.name should {
    "pass the data set 1" in { ... }
    "pass the data set 2" in { ... }
    "pass the data set 3" in { ... }
  }
}

examplesMustPassFor(algo1)
examplesMustPassFor(algo2)
examplesMustPassFor(algo3)

私が言及したいもう1つの重要な点は、specsプロジェクトがspecs2に取って代わられていることです。したがって、仕様を書き始めたばかりの場合は、これを確認することをお勧めします。

もちろん、必要に応じて、メーリングリストのコードサンプルを使用して、より具体的な質問をすることを躊躇しないでください。

エリック。

于 2011-05-03T12:45:47.357 に答える