Behavior-driven-development-introduction
行動駆動開発-はじめに
行動駆動開発(BDD)は、テスト駆動開発(TDD)から生まれたソフトウェア開発プロセスです。
BDDの進化を担当しているDan North氏によると、「BDDは、複数のレベルで例を使用して、重要なソフトウェアを提供するための共通の理解と表面の不確実性を生み出しています。」
BDDは例を使用して、開発に携わるすべての人にとって読みやすく理解しやすい言語で記述されたシステムの動作を示します。 これらの例が含まれます-
- 実行可能な仕様に変換されます。
- 受け入れテストとして使用されます。
BDD –主な機能
行動駆動型開発は次のことに焦点を当てています-
- ソフトウェア開発者、ビジネスアナリスト、および利害関係者とのコミュニケーションを促進する共有プロセスと共有ツールを提供して、ビジネス価値のある製品を提供することを目的として、ソフトウェア開発で協力します。
- システムの実装方法ではなく、システムが行うべきこと。
- 読みやすさと可視性の向上。
- ソフトウェアの動作だけでなく、顧客の期待に応えていることを確認します。
BDDの起源
欠陥が適切なタイミングで検出されず、検出された時点で修正されると、欠陥を修正するためのコストは倍増します。 次の例を考えてください。
これは、要件が正しく取得されない限り、後の段階で要件を誤解した結果生じる欠陥を修正するのに費用がかかることを示しています。 さらに、最終製品が顧客の期待に応えられない場合があります。
時間の必要性は、開発アプローチです-
- 要件に基づいています。
- 開発全体の要件に焦点を当てています。
- 要件が満たされていることを確認します。
上記の要件を処理できる開発アプローチはBDDです。 したがって、行動駆動開発-
- システムのさまざまな予想される動作の例を導き出します。
- ビジネスドメインの用語を使用して言語で例を記述できるようにし、顧客を含む開発に関わるすべての人が簡単に理解できるようにします。
- 会話を使用して、時々顧客と批准した例を取得します。
- 開発全体の顧客要件(例)に焦点を当てています。
- 受け入れテストとして例を使用します。
BDDプラクティス
BDDの2つの主なプラクティスは次のとおりです-
- 例による指定(SbE)
- テスト駆動開発(TDD)
例による仕様
Example by Specification(SbE)は、会話の例を使用して、ビジネスルールと構築するソフトウェアの動作を示します。
例による仕様により、製品所有者、ビジネスアナリスト、テスター、および開発者は、ビジネス要件に関する一般的な誤解を排除できます。
テスト駆動開発
BDDのコンテキストでのテスト駆動開発は、例を人間が読める実行可能な仕様に変えます。
開発者は、これらの仕様をガイドとして使用して、新しい機能の増分を実装します。 これにより、無駄のないコードベースと一連の自動化された回帰テストが行われ、ソフトウェアのライフタイム全体にわたってメンテナンスコストが低く抑えられます。
アジャイルBDD
アジャイルソフトウェア開発では、BDDメソッドを使用して、保留中の仕様について共通の理解を得ることができます。
以下の手順は、アジャイルBDDで実行されます-
- 開発者と製品所有者は、プレーンテキストエディターで共同で保留中の仕様を記述します。
- 製品所有者は、システムに期待する動作を指定します。
- 開発者
- これらの動作の詳細を仕様に入力します。
- システムの理解に基づいて質問します。
- 現在のシステムの動作は、新しい機能が既存の機能を破壊するかどうかを確認するために考慮されます。
アジャイルマニフェストとBDD
アジャイルマニフェストは次のように述べています-
私たちは、ソフトウェアを開発し、他の人がそれを行うのを支援することにより、ソフトウェアを開発するより良い方法を発見しています。 この作業を通じて、私たちは価値になっています-
- 個人と相互作用-プロセスとツールより
- 動作ソフトウェア-包括的なドキュメント
- 顧客コラボレーション-契約交渉
- 変更への対応-計画に従う
つまり、右側の項目には値がありますが、左側の項目にはさらに値を付けます。
BDDは次のようにアジャイルマニフェストに合わせます-
Agile Manifesto | BDD Alignment |
---|---|
Individuals and interactions over processes and tools. | BDD is about having conversations. |
Working software over comprehensive documentation. | BDD focuses on making it easy to create software that is of business value. |
Customer collaboration over contract negotiation. | BDD focuses on scenarios based on ideas with continuous communication with the customer as the development progresses. It is not based on any promises. |
Responding to change over following a plan. | BDD focuses on continuous communication and collaboration that facilitates absorption of changes. |