Du hast Recht. BDD beseitigt keine Probleme mit Sprachmehrdeutigkeiten - überhaupt nicht. Wie andere betonten, müssen die zu übersetzenden Snippets durch ordnungsgemäße Definition abgeglichen werden, dies behebt jedoch auch nicht das zugrunde liegende Mehrdeutigkeitsproblem.
Warum lohnt sich BDD eigentlich, obwohl dieses Problem nicht gelöst wurde? Es gibt einige Gründe und diese Liste ist sicherlich nicht vollständig.
Mehrdeutigkeit wurde nicht gelöst
Dies ist weder ein Grund für BDD noch dagegen. Wenn Sie es jedoch anderen Ansätzen wie User Stories oder Anforderungen gegenüberstellen, leiden alle SW-Entwicklungsansätze unter Sprachmehrdeutigkeiten, da sie alle auf die eine oder andere Weise mit einer natürlichen Sprachformulierung beginnen.
Technisch gesehen wurde das Problem der Sprachmehrdeutigkeit mit künstlichen Sprachen wie Lojban gelöst , aber andererseits werden Ihre Kunden und Entwickler diese Sprache höchstwahrscheinlich nicht kennen.
Allgegenwärtige Sprache
BDD geht Hand in Hand mit der Idee einer allgegenwärtigen Sprache. Durch die Möglichkeit, Szenarien zusammen mit allen Kunden, Testern und Entwicklern festzulegen, hat BDD nur einen Vorteil gegenüber anderen Ansätzen.
Stellen Sie sich einen traditionellen Anforderungsingenieur vor, der alle Anforderungen aufschreibt. Sobald Sie als Tester oder Kunde dieses 300-seitige Dokument mit den zu überprüfenden Anforderungen erhalten, werden Sie viel dringlichere Probleme haben als die dort verwendete Terminologie.
User Stories schneiden in dieser Hinsicht etwas besser ab, da sie auch alle Stakeholder in ihre Erstellung einbeziehen. In Bezug auf die allgegenwärtige Sprache würde ich nicht sagen, dass entweder BDD- oder User Stories besser sind - obwohl sie sich im nächsten Punkt erheblich unterscheiden.
Testbarkeit
Ein Hauptaspekt von BDD ist, dass Ihre Spezifikationen tatsächlich ausführbar sind (über Cucumber oder dergleichen). Weder Anforderungen noch User Stories bieten diese Funktion. Für mich persönlich ist das das Hauptverkaufsargument für BDD.
Vergleichen Sie dies mit herkömmlichen Anforderungen - wir sagen Anforderungsingenieuren seit Ewigkeiten, dass ihre Anforderungen überprüfbar sein sollten. Bei jedem Projekt gibt es jedoch einen Fall, in dem Tester irgendwann feststellen, dass sie keine Ahnung haben, wie sie eine bestimmte Anforderung testen sollen.
Wenn User Stories richtig gemacht werden, beziehen sie Tester in ihre frühe Erstellungsphase ein, um dies sicherzustellen. Leider ist dies ein Fall von theoretischer Kollision mit der realen Welt, in der ich zahlreiche Geschichten gesehen habe, die noch kein Tester gesehen hat.
BDD hingegen gibt Ihnen automatisch ein ausführbares Testszenario. Es gibt keine Ausreden und keinen Weg daran vorbei (es sei denn, Sie ignorieren die Automatisierungsebenen vollständig und schreiben nur Szenarien für die ausgefallene Poesie auf).
Im Allgemeinen ist Test First ein Prinzip, das sich in allen Phasen der Softwareentwicklung als sehr lohnend erwiesen hat, und BDD ist seine Anwendung auf die äußerste Ebene der Entwicklung (im Vergleich zu z. B. TDD auf Einheitenebene).
Zusammenfassung
Zusammenfassend lässt sich sagen, dass BDD Sie nicht von den Problemen der Mehrdeutigkeit natürlicher Sprachen abhebt. Es hilft Ihnen jedoch, dieses Problem über zwei wichtige Punkte anzugehen: Konzentrieren Sie sich auf eine allgegenwärtige Sprache, um die Mehrdeutigkeiten zu verringern (sie werden nicht vollständig beseitigt, aber es hilft einer Menge!) Und indem Sie gezwungen werden, ausführbare Dateien zu schreiben Spezifikationen. Der letztere Punkt hilft dabei, Mehrdeutigkeitsprobleme anzugehen, vor allem, weil an diesem Punkt Mehrdeutigkeiten ansonsten als Probleme auftreten.