動作駆動開発かテスト駆動開発か?[閉まっている]
質問
最近 BDD について聞いたのですが、TDD とよく似ていることがわかりました。
これら 2 つのうちどちらを使用しますか (もしあれば)。
それぞれの長所と短所は何ですか?
解決
私は、BDD = TDD を適切に実行するキャンプを非常に重視しています。Beck によって最初に説明され、多くの人によって実践されているように TDD を実行している場合、本質的に違いはありません。
BDD によって明らかになったのは、プロセスの記述に使用される言語に関する興味深いバリエーションです。BDD 関係者は、プロセスとツールの説明に別の用語を使用することで、より良い実践を奨励したいと考えています。これは賞賛に値する目標です。
私は長い間 TDD を行ってきたので、これが実際に役立つかどうかを判断するのは困難です。私は (希望 :-) BDD ツール/言語が奨励するレッスンの多くをすでに学んでいるので、それらが私に特別な価値を提供することはないようです。もちろん、YMMV - そして私は BDD ツールを使用した「現実世界」プロジェクト全体を行ったことがありません - したがって、私は個人的な実験を取り入れて、過度に推測している可能性があります。
私はそうするだろう 推測 BDD ツール/言語は、このような開発アプローチ方法を紹介されている人々にとってはより便利かもしれません。なぜなら、より伝統的な意味で使用される「テスト」との混乱を避けることができるからです。私自身はまだこれを行ったことはありませんが、ここの人々がそのような経験をしたことがあれば興味があります。
他のヒント
BDD は TDD に似ていますが、考え方が異なります。BDD では、テストではなく実行可能な仕様を作成しようとしています。これは主に、語彙は異なりますが、TDD と同様の仕組みを使用することで実現されます。
BDD は、人々が TDD を行っていると主張しながら単体テストではなく統合テストを作成していた多くのケースに対する反応のようです。BDD の人々は、テストについて話すのは誤解を招くと考えたため、テストが仕様になりました。これは少し形而上学的に思えますが、その背後にはいくつかの良いアイデアがあります。
BDD はシナリオを実行することがすべてです。TDD と同様に、すべてのシナリオをストーリーとしてテストします。
ストーリーはお客様からご説明させていただきます。ストーリーをもとにシナリオを書いていきます。CUCUMBER のようなツールを使用すると、シナリオを簡単に作成できました。
TDD と BDD はほぼ同じです。違いは、それをどのように説明するか、つまり、成功したチームが最終的にそれをどのように機能させるかにあります。
BDD は、最も優れた TDD 実践者の良い習慣を形式化することにより、TDD を基礎として構築されます。TDD は、優れたソフトウェアを作成するための開発者ツールまたはガイドであり、BDD は、ユビキタス言語を使用して開発されるため、ビジネスの関与がさらに高まり、外部の開発を支援する優れたツールです。
私の経験では、BDD はコラボレーションに役立ち、チームの全員がシステムが何をすべきかを説明するドキュメントの作成に携わる場合、ビジネスで読み取り可能な実行可能な仕様を使用すると、共有言語を構築するのに役立ちます。これは、チーム全体がドメインの言語を一緒に学ぶのに役立ちます。
BDD は TDD を成功させるために必要なものです。