あなたは正しいです。BDDは、言語のあいまいさの問題を排除しません。他の人が指摘したように、翻訳されるスニペットは適切に定義することによって一致する必要がありますが、これも根本的なあいまいさの問題に対処していません。
この問題を解決しないにもかかわらず、なぜBDDが実際に価値があるのでしょうか。いくつかの理由があり、このリストは確かに完全ではありません。
あいまいさは解決されていません
これは、BDDを支持する理由でも、反対する理由でもありません。しかし、ユーザーストーリーや要件などの他のアプローチと比較すると、すべてのSW開発アプローチは、言語の曖昧さに悩まされています。これらはすべて、何らかの方法で自然言語の定式化から始まるためです。
技術的には、言語のあいまいさの問題はlojbanのような人工言語で解決されていますが、顧客と開発者はおそらくその言語を知らないでしょう。
ユビキタス言語
BDDは、ユビキタス言語のアイデアと密接に関連しています。すべての顧客、テスター、開発者と一緒にシナリオを指定できるため、BDDは他のアプローチよりも優れています。
すべての要件を書き留める従来の要件エンジニアを検討してください。テスターまたは顧客として、レビューの要件が満載された300ページのドキュメントを取得すると、そこで使用されている用語よりも多くの差し迫った問題が発生します。
ユーザーストーリーはすべての利害関係者も作成に含めるため、その面で少し優れています。ユビキタス言語に関しては、BDDとユーザーストーリーのどちらも優れているとは言えませんが、次の点で大きく異なります。
テスト容易性
BDDの主要な側面は、仕様が実際に(Cucumberなどを介して)実行可能であることです。要件もユーザーストーリーもこの機能を提供しません。私個人としては、それがBDDの主なセールスポイントです。
従来の要件とは対照的です-私たちは、要件エンジニアがテスト可能である必要があることを古くから要件エンジニアに伝えてきました。しかし、どのプロジェクトでも、テスターがどこかに特定の要件をテストする方法がわからないことに気付いた場合に遭遇します。
ユーザーストーリーには、正しく作成されている場合、それを確認するために、初期の作成段階でテスターが含まれています。残念なことに、これは現実の世界と衝突する理論の例であり、テスターがこれまでに見たことのない多くの物語を見てきました。
一方、BDDは自動的に実行可能なテストシナリオを提供します。言い訳も方法もありません(オートメーションレイヤーを完全に無視して、派手な詩のシナリオを書き留めない限り)。
より一般的には、Test Firstはソフトウェア開発のすべての段階で非常に有益な原則であり、BDDは開発の最外層への適用です(ユニットレベルのf.ex. TDDと比較して)。
概要
要約すると、BDDは自然言語のあいまいさの問題からあなたを免れません。ただし、2つの重要なポイントを介してその問題に取り組むのに役立ちます:あいまいさを減らすためにユビキタス言語に焦点を合わせる(完全に排除するわけではありませんが、トンを助ける!)と、実行ファイルを書くように強制する仕様。後者の点は、あいまいさの問題に対処するのに役立ちます。それは、あいまいさが問題として現れ始める点だからです。