TDDとBDDの主な違いは、TDDはアプリケーションの単一ユニットまたは機能に焦点を当てるが、BDDはアプリケーション全体に焦点を当てるという点です。
一般に、企業レベルのソフトウェア開発は複雑な作業です。
チームは、要件収集から顧客への製品納入、保守活動への対応まで、ソフトウェアのライフサイクルを通じてさまざまなプロセスに従います。
TDDとBDDは、ソフトウェアのプロセスです。
簡単に言うと、BDDはTDDをベースにしています。
TDDとは
TDDとは、Test Driven Development(テスト駆動開発)の略です。
小さな開発サイクルで構成されるソフトウェア開発プロセスです。
このプロセスでは、要件を収集した後、それらの要件が具体的なテストケースに変わります。
そして、プログラマーはソフトウェアを実装し、テストにのみ合格するように改善することができる。
さらに、TDDは従来の開発の逆を行くものです。
従来の開発では、まずコードを実装し、それに対するテストを行う。
これに対して、TDDでは、まずテストが行われ、次に実装が行われる。
参考
TDDライフサイクル
テストを追加する – 新しい機能ごとにテストを書くことである。
テストを書くためには、開発者は要件をよく理解する必要があります。
彼は、要件を特定するために、ユーザーケースとストーリーを研究することができる。
そうすることで、開発者はより要件に集中することができる。
すべてのテストを実行し、新しいテストが失敗するかどうかを確認する – テストハーネスが正しく動作していることを検証する。
コードを書く – テストをパスするためのコードを書くことである。
書かれたコードは、この段階では優れているとは言えないかもしれない。
しかし、それは後で改善される。
コードを書く主な目的は、テストに合格することである。
テストに必要な機能のみをカバーする。
テストの実行 – テストケースに合格した場合、新しいコードはテスト要件を満たしていることになる。
新しいコードが既存の機能を低下させないことが保証される。
テストケースに合格しなかった場合、プログラマーは合格するまで調整しなければならない。
コードのリファクタリング -このステップには複数のタスクが含まれる。
コードを論理的に属する場所に移動し、重複を排除し、オブジェクト、クラス、モジュール、変数、メソッドを明確に表現し、読みやすさと保守性を向上させることが、いくつかの活動です。
主な目的は、きれいなコードを作ることです。
リファクタリングの段階でテストケースを何度も実行し、既存の機能が正しく動作することを確認します。
上記のステップは、別の新しいテストケースのために再び繰り返されます。
もしテストが失敗し続ければ、プログラマはコードをデバッグしなければならない。
BDDとは
BDDとは、Behavior Driven Development(行動駆動開発)の略です。
アプリケーションの動作をチームで協力して理解することができます。
BDDは、TDDの技術と原則に、ドメイン駆動設計とオブジェクト指向の分析・設計を加えたものです。
これらにより、開発チームと管理チームがソフトウェア開発中にツールやプロセスを共有することができます。
BDDでは、専用のソフトウェアツールを使って開発を行います。
さらに、BDDプロジェクトのために開発されたツールは、TDDもサポートします。
BDDは、動作や結果を記述するために英語に似た自然言語の構成要素を使用する、単純なドメイン特定言語(DSL)に大きく依存する。
テストスクリプトは、DSLの一般的なアプリケーションです。
全体として、BDDは複雑なビジネス上の問題を解決するために有用な手法です。
TDDとBDDの違い
定義
TDDとは、ソフトウェア開発プロセスの一つで、まず要件を具体的なテストケースに落とし込み、新しいテストに合格するようにソフトウェアを改良していくものです。
これに対し、BDDはアジャイルソフトウェア開発プロセスです。
BDDは、開発者、QA、そして技術者以外の参加者やビジネス参加者が、ソフトウェアプロジェクトで協調して作業することを促進します。
これが、TDDとBDDの根本的な違いです。
の略です。
TDDはテスト駆動開発、BDDは行動駆動開発の略。
機能性
TDDでは、各機能やユニットをカバーするようにテストが書かれるのに対して、BDDではアプリケーション全体に焦点が当てられます。
これがTDDとBDDの大きな違いです。
シナリオ
さらに、TDDとBDDのもう一つの違いは、TDDが高レベルのシナリオを設計するのに対して、BDDは低レベルのシナリオを設計することである。
結論
簡単に言えば、TDDとBDDは2つのソフトウェア開発アプローチです。
さらに、プログラマはシナリオに応じてどちらかを選択することができます。
TDDとBDDの主な違いは、TDDがアプリケーションの単一ユニットまたは機能に焦点を当てるのに対し、BDDはアプリケーション全体に焦点を当てることである。