説明からシナリオを導き出すことができれば、完了です。
私がBDDでよく目にするアンチパターンは、すべてのシナリオを詳細に話し合い、書き留める必要性を感じている人々です。
一部のシナリオは非常によく理解されているので、簡単な説明からそれらを導き出すのに十分です。たとえば、「今週のログイン機能が欲しい」と言ったら、それがどのように見えるかわかります。あなたは正しいパスワード、間違ったパスワード、間違ったユーザー名のシナリオがあることを知っています。それらについて話し合ったり、詳細にキャプチャしたりする必要はありません。
同様に、「ここにユーザー登録のフォームがあります。新しいユーザーを作成し、詳細を編集させ、自分自身を削除できるようにする必要があります。ただし、実際に削除するのではなく、削除済みとしてマークする必要があります。必要に応じてアカウントを復元できます。」
そして、「アカウント復旧はこの機能の一部ですか?」と尋ねることができます。
「必要に応じて、2つの機能にすることができます。」
「それでは、作成、読み取り、更新、削除のシナリオを用意しました。これは十分簡単なはずです。アカウントの復旧について話しましょう。これはもっと興味深いですね。」
一般的に、開発チームがシナリオを導き出すのに動作の説明が十分である場合、それらについて説明する必要はありません。疑わしい場合はそうすることができますが、何かをキャプチャーする場合は、覚えておく必要のあるシナリオをキャプチャーすることもできます。
これまでに一度も行ったことがない場合、または確信が持てない場合は、シナリオについて説明します。
特にこれまでに行ったことのない機能がある場合は特に、異常な領域に焦点を当てます。これらは、会話をしたり、出てきた驚くべき例を書き留めたりするのに最適な場所です。通常、BDDテンプレートに基づいて、2つの質問をします。
コンテキストが与えられた
場合イベントが発生
すると、結果が発生します。
- 同じイベントで異なる結果を生み出す他のコンテキストはありますか?
- 他にも重要な結果はありますか?
テーブルにいる全員が退屈に見える場合、あなたが話している機能はおそらくよく理解されています。「Xのように動作するはずですが、代わりにYを使用する」と言うだけで十分な場合がよくあります。これは、ダンノースがジンジャーケーキパターンと呼んでいるものです。チョコレートケーキのレシピみたいですが、チョコレートの代わりに生姜を使っています。
ビジネスの利害関係者が自分でシナリオを導き出すことができたとしても、開発チームが彼と話し、彼の言語を拾い、内面化できることが非常に重要です。その後、その言語がコードに取り込まれ、将来的に会話が改善され、プロジェクトの新規参入者が何が起こっているのかを理解するのに役立ちます。開発者が言語を話せない場合、その言語は使用されません。
ビジネスの利害関係者またはアナリストがセッションで物事をキャプチャすることに時間を費やしたくない場合は、開発者がテスターと協力してシナリオを書き留めてから、レビューを依頼します。これは、逆の方法よりも誤解を明らかにする可能性が高くなります。
BDDが機能しない場合があります。
もう1つの可能性は、ビジネスの利害関係者が不確かなシナリオを見つけることです。「ああ、私はそのことを考えていなかった!よくわからない。」この時点でBDDを放棄し、簡単なことを試してフィードバックを得て、ビジネスに反復可能な何かを与えることは、ビジネスを釘付けにしてビジネスを確実に罰するのではなく、価値があるかもしれません。簡単に変更できるようにし、何が起こっているのかをよりよく理解したら、シナリオを記述します。
BDDがうまく機能すれば、不確実性のある場所を明らかにすることができます。行う価値のあるすべてのプロジェクトには、これまでにない新しい側面があり、どこかで不確実性があります。意図的に無知を発見するのに役立つシナリオの使用に重点を置くと、学習が速くなり、通常、学習はプロジェクトに費やされる時間の大部分を占めます。
さらに、この方法で協力する開発チームが増えるほど、ビジネスが不確実性をもって彼らを信頼する準備が整い、より多くのイノベーションが発生し始めることがわかりました。革新的な企業は、その性質上、プロジェクトに多くの不確実性を持っています。
しばらく前にCynefinに関するブログ投稿を書きましたが、会話が最も効果的な場所を理解するのに本当に役立ちます。あなたがそれを読んで4つのドメインを理解しているなら、ここに私が使うルールがあります:
単純で複雑なもの(既知)はよく理解されており、シナリオを詳細に説明する必要はありません。
非常に複雑なもの(不明)はまったく理解されていません。シナリオを通して話すことによってこれを発見するかもしれません。確実性の欠如は、BDDがここで機能しないことを意味します。そのため、変更が簡単なものを繰り返し、代わりに迅速なフィードバックを取得します。ABテストのように、オプションを保持するプラクティスもこの分野では優れています。
BDDは、知識を伝達し、他の2つの空間を明らかにするためのメカニズムとして、(認識可能な)間の空間で見事に機能します。それはハンマーではなく、すべてが釘ではありません。実際、会話に費やした時間を何かに集中できるとしたら、それはあなたが見つけることができる例ではありません。それはあなたができない例を見つけることです。