0

同じ振る舞いを述べる2つの異なる方法を取ります。

オプションA:

Given a customer has 50 items in their shopping cart
When they check out
Then they will receive a 10% discount on their order

オプションB:

Given a customer has a high volume of items in their shopping cart
When they check out
Then they will receive a high volume discount on their order

前者ははるかに具体的です。顧客が大量の割引を受ける時期や、どれだけの割引を受けるかについて誰かが質問がある場合は、このシナリオを読むと非常に明確になります。動作を文書化する目的で、可能な限り具体的ですが、これらの値を変更するにはシナリオを変更する必要があります。

2番目はより一般化されており、最初の明確さはありません。自動化するには、ステップの実装に値「50」と「10」を組み込む必要があります。一方、このシナリオはコアビジネスニーズを捉えています。大量の顧客は割引を受けます。後で「40」と「15」を使用することにした場合、コアビジネスのニーズは実際には変更されていないため、シナリオを変更する必要はありません(ただし、ステップの実装は変更されます)。また、「大量の顧客」という用語は、なぜ割引を提供しているのかを示しています。

それで、どちらが良いですか?むしろ、どのような状況で前者または後者を支持する必要がありますか?

4

1 に答える 1

0

私は選択肢Aに行くと思います。

問題は、BDD シナリオがシステムのドキュメントとして機能する必要があるということです。

したがって、技術者ではない人 (ビジネス担当者、テスター、またはカスタマー サポート チームの誰か) が割引システムがどのように機能しているかを知りたがっている場合は、大量のアイテムを持つことの意味とそれが何であるかを知りたいと思うでしょう。適用された割引。また、この情報を取得するために配管コードにアクセスする必要はありません。

この情報は重要であり、読者から隠すことはできないと思います。

もう 1 つの利点は、開発者以外 (テスターなど) が新しいシナリオを作成し、カートに 1 つのアイテムまたは 100 個のアイテムがある場合に何が起こるかを確認できることです。

物事について抽象的になりすぎると、意図的な発見を適用することが難しくなります。したがって、オプション B のようなシナリオでは、次の質問を自問する機会を失います。

  • 100 個のアイテムのように 50 個以上のアイテムがある場合はどうなりますか? 他に利用可能な割引はありますか?
  • 商品が 1 つしかない場合はどうなるか、割引を適用する必要がないか、カート内の商品数ではなくカートの合計価格に基づいて割引を適用する必要があります。それも ?
  • 割引の種類は 10% のみです。たとえば、定額割引はありますか? より複雑な割引戦略はありますか?

ビジネス変数が表示されている場合は、それらをいじって、忘れている可能性のあるものを見つけたり、新しい興味深い (またはそうでない) 機能について考えたりすることができます。

原則として、シナリオで知ることが重要でないことは非表示にします。その場合、アイテムの数と適用される割引値は、読者にとって本当に重要です。

于 2012-10-06T10:18:05.850 に答える