BDDツールの分類に関するこのブログがTDDとATDDについて説明しているのは興味深いことです。Liz Keoghが指摘するように、BDDは会話と探索に関するものです。関係するすべての人が貢献し、意図を伝え、アイデアを共有し、他の人を理解するのが簡単であるなど、適切なソリューションとより優れたソフトウェアをより早く構築できます。最終的にツールパスをたどるとき、ソフトウェアプロジェクトの利害関係者間のコラボレーションを最もよくサポートするツールは何ですか?
TDD、BDD、およびATDDの違いに関するこのブログに基づいて、 BDDツールには少なくとも3つの異なるフレーバーがあると言えます。
- ユニットテストフレームワーク
JUnitは、開発とテストに関する私たちの見方を変えました。その強みの1つは、テストをアプリケーション自体と同じプログラミング言語で記述できることです。したがって、デリバリーチームですでに持っている知識に基づいて構築することができます。テストが開発を推進するためにさえ使用されるとき、私たちはTDDの天国に到達します。
プログラミング言語は冗長性を減らすために最適化されています。これは、開発者の最悪の罪の1つであるRonJeffriesによるものです。したがって、技術テストを行う際にこれらのツールを使用して製品を正しく構築することがよくあります。これらのツールは、最も効率的になるのに役立ちます。
ユニットテストは実際には読みにくいため、何人かの人が自動テストをより理解しやすくしようとしました。最初の試みの1つは、単体テストを解析し、開発者以外でも読める簡潔な要約を提供することでした。たとえば、TestDox / AgileDoxはJUnitテストクラスのメソッド名から簡単なドキュメントを作成するか、PickelsはGherkinで記述された機能ファイルに基づいてドキュメントを生成します。
MSpecなどのフレームワークは、読みやすく、さらに読みやすい出力を提供するテストを作成するのに役立ちます。これらのBDDツールのフレーバーは、人間が読める形式の出力に焦点を合わせています。これにより、開発者が仕事をした後、開発者以外の人が参加できるようになります。
- シナリオテストフレームワーク
開発サイクルの早い段階で利害関係者を巻き込むために、読みやすい入力に焦点を当てた新しいツールが作成されました。Cucumberは、プレーンテキストファイルを利用して、自動テスト用の人間が読める形式の入力を提供します。テキストファイルには、given-when-then構造に基づいて特別に構造化された言語で記述されたシナリオが含まれています。これらのフレームワークは、受け入れ基準の共同定義をサポートする優れたツールです。
- 検収試験フレームワーク
BDDのアイデアと並行して、FITが初期の代表であった別の種類のツールが開発されました。この統合テストのフレームワークを使用すると、例に関連するドキュメントに埋め込まれているテーブル内の例を指定できます。これらのドキュメントを作成するために開発スキルは必要ありません。また、純粋にテキストベースであるため、技術者以外の人でも簡単に読んだりレビューしたりできます。さらに、ドキュメントはプレーンテキストファイルではなく、リッチエディタの出力であるため、テキストを構造化できます。
FitNesseを使用すると、Wikiに基づいて予想される動作を共同で指定できます。Wikiはアクセスと使用が簡単であるため、エントリと学習曲線が低く、チーム全体の共通の作業を推進します。多くのアジャイル支持者は、コラボレーションの最良の方法は対面のコミュニケーションであると強調しています。しかし、あなたが考え、議論したことを書き留めるなら、それは可能な限り豊かでよく構成されているべきです。
Concordionは、段落、表、および適切な句読点を使用して通常の言語で要件を記述できるため、多くの柔軟性を提供します。説明の任意の部分を、自動テストへの入力として、およびテスト対象のシステムの出力の検証に使用できます。HTMLに基づいているため、ドキュメントを構造化し、画像を統合できます。簡単に言うと、予想される動作を説明するWebの表現力があります。
BDDは適切な製品の構築に役立つはずです
3種類のツールすべてでBDDを実装できますが、それぞれに長所と短所があります。ユニットテストフレームワークとxSpecのようなツールは、プログラミングの長所を完全に活用しています。これらは開発者向けの開発者向けツールであるため、技術的な部分を正しく理解しようとする場合に最適です。
アプリケーションの意図を伝えたい場合は、編集者が作業に使用するツールと強く関連しているツールを使用したほうがよいでしょう。仕様に入力と期待される出力のみが含まれている場合、それを読む人は誰でも、入力と期待される出力の関係からアイデアを再構築する必要があります。ヘッダーの仕様の目的を説明する簡単な説明は、読者が仕様の構造を理解するのに役立ちます。例による仕様に基づくドキュメントは、次のようになります。

はい、SpecFlowはかっこいいです、NSpecはかっこいいです...
FitNesseとConcordionもかっこいいです