Parasoft-Logo Suche

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

Parasoft-Blog

Wie Sie die BDD-Softwareentwicklung erfolgreich einführen und warum sie wichtig ist

By Grigori Trofimow • 23. Oktober 2023 • 7 min gelesen
23. Oktober 2023 | 7 min gelesen
By Grigori Trofimow
Text links: Wie Sie die BDD-Softwareentwicklung erfolgreich einführen und warum sie wichtig ist. Auf der rechten Seite ist ein Bild von zwei weiblichen BDD-Softwareentwicklungsexperten zu sehen, die Code überprüfen.

Die verhaltensgesteuerte Entwicklung (BDD) behebt das Problem der Implementierung schlecht definierter Anforderungen, indem die Fachkompetenz von Geschäfts- und Qualitätssicherungsfachleuten genutzt wird, um sicherzustellen, dass das Entwicklungsteam die richtige Software erstellt. Lesen Sie weiter, um mehr über die Einführung von BDD im Unternehmen zu erfahren.

Einführung in die BDD-Softwareentwicklung

In den letzten Jahren haben viele Unternehmen auf agile Entwicklungsmethoden umgestellt , um die Entwicklung zu beschleunigen und zeitnah Feedback vom Markt zu erhalten. In diesen Unternehmen beschleunigt sich zwar die Entwicklung, doch die Qualitätssicherung kann nicht mithalten, wenn automatisierte Softwaretests nicht in den Entwicklungsprozess integriert werden. Dies ist daher oft der erste Engpass, der überwunden werden muss.

Nach der erfolgreichen Einführung von Testautomatisierung und der damit einhergehenden Beschleunigung der gesamten Organisation stellen sich Unternehmen die Frage, ob sie die richtige Software entwickeln. Die beschleunigte Softwareentwicklung und die Sicherstellung der Softwarequalität durch automatisierte, kontinuierliche Tests sind zwar ein großer Erfolg, aber alles umsonst, wenn die Software nicht den Wünschen und Bedürfnissen der Kunden entspricht.

Entwickler, die sich in dieser Phase ihrer Softwareentwicklungsprozesse befinden, beschäftigen sich intensiv mit BDD, um sicherzustellen, dass ihre Software die Geschäftsanforderungen ihres Unternehmens erfüllt . Doch was genau ist BDD und in welchem ​​Zusammenhang steht es mit dem Testen?

BDD im Kontext von BDD verstehen

BDD ist eine Weiterentwicklung der testgetriebenen Entwicklung (TDD) , bei der Entwickler die Tests vor dem eigentlichen Code schreiben. Nach dem Erstellen eines ersten, fehlschlagenden Tests schreiben TDD-Entwickler nur so viel Code, dass der Test erfolgreich ist, und schreiben dann einen weiteren Test. Dieser Vorgang wird wiederholt. Das Ergebnis ist schlanker und effizienter Code mit hoher Testabdeckung.

TDD ist eine Methode zur Verbesserung der Softwarequalität und Sicherstellung der Codeabdeckung. BDD hingegen löst das Problem der korrekten Implementierung von Anforderungen. Anstatt sich auf Tests zur Überprüfung der gewünschten Funktionalität zu konzentrieren, geht es bei BDD darum, das Verhalten der Anwendung so zu definieren, dass sie spezifische Geschäftsanforderungen erfüllt.

Die Gemeinsamkeit zwischen TDD und BDD besteht darin, dass vor Beginn der eigentlichen Entwicklung ein vertraglicher Mechanismus implementiert wird, um sicherzustellen, dass das Ergebnis einer bestimmten Erwartung entspricht. Hier enden die Gemeinsamkeiten jedoch. Bei TDD ist der Test ein Vertrag, der gewährleisten soll, dass die Anwendung eine spezifische funktionale Anforderung erfüllt. Bei BDD hingegen ist das Verhalten der Vertrag, der sicherstellen soll, dass die Anwendung eine spezifische Geschäftsanforderung erfüllt.

Was macht BDD in der Softwareentwicklung einzigartig?

Wir haben den Begriff „Verhalten“ bisher eher beiläufig verwendet, aber im Kontext von BDD hat er eine technische Bedeutung. In BDD sind Verhaltensweisen sorgfältig formulierte, für Menschen lesbare Aussagen, die einem bestimmten Format folgen. Sie werden in sogenannten Feature-Dateien gesammelt, die in den Entwicklungsprozess integriert werden können.

Feature-Dateien werden normalerweise in Gherkin geschrieben, einer BDD-spezifischen Syntax, die es BDD-Tools wie Cucumber und SpecFlow ermöglicht, den Prozess der Verhaltensvalidierung zu automatisieren.

Diese BDD-Tools analysieren die Verhaltensweisen in der Feature-Datei und führen den entsprechenden „Glue Code“ aus. Dieser Glue Code ordnet „Verhaltensweisen“ Ausführungsschritten zu, typischerweise von einem Entwickler geschriebenem Java- oder .NET-Testcode in einer bestimmten Test-Engine.

Diese Zuordnungen werden üblicherweise als „Schrittdefinitionen“ oder „Step-Defs“ bezeichnet. Dadurch können Tester Feature-Dateien als Testfälle verwenden, um das mit den Anforderungen verbundene Verhalten zu überprüfen.

Grafik mit Zuordnungen, die üblicherweise als „Schrittdefinitionen“ oder „Schrittdefinitionen“ bezeichnet werden. Zeigt „Zum Erstellen und Überprüfen definieren“ an.

Vorteile von BDD in der Softwareentwicklung

Es gibt mehrere Vorteile, die die geschäftsorientierte Entwicklung für die Softwareentwicklung mit sich bringt. Mit BDD können Sie:

  • Steigern Sie die Zusammenarbeit. BDD bietet eine gemeinsame Sprache für die verschiedenen Rollen in der Organisation. Dies hilft technischen und nichttechnischen Teammitgliedern, die beabsichtigte Funktionalität und die Geschäftsanforderungen des Projekts zu verstehen.
  • Nutzen Sie ein breiteres Spektrum an Fachkenntnissen. Da Verhaltensweisen in einem für den Menschen verständlichen Format definiert sind, können Unternehmen das Fachwissen von Testern, Architekten und anderen Interessengruppen mit unterschiedlichen Perspektiven und Hintergründen nutzen.
  • Erfüllen Sie die Anforderungen mit einem starken Fokus auf das Testen. BDD fördert die Testabdeckung mit Schwerpunkt auf der Erfüllung der Anforderungen, wodurch sichergestellt wird, dass das Endprodukt für die Geschäftsanforderungen einer Organisation relevant ist.
  • Fördern Sie die Wiederverwendung und reduzieren Sie die Komplexität der Automatisierung. Entwickler, die den Klebercode schreiben, werden aufgefordert, zu schreiben wiederverwendbar Testschritte sowie besser testbarer Code. Beispielsweise kann eine Anwendung einige sich wiederholende Einrichtungsschritte aufweisen, die aufgerufen werden müssen, um einen bestimmten Zustand zu erreichen. Ein Entwickler kann diese Schritte im Glue-Code definieren, die für die Einrichtung und Ausführung wiederverwendet werden können.

Dieser letzte Punkt ist eines der Hauptmerkmale von BDD. Modulare, wiederverwendbare Testschritte ermöglichen es Testern, sich bei der Überprüfung und Validierung der Anforderungen auf das BDD-Tool zu verlassen, um das schwere Heben durchzuführen. Der Knackpunkt ist jedoch, dass Entwickler weiterhin den Klebercode schreiben müssen, der das Verhalten an die Anforderungen bindet. Wir werden als nächstes mehr darüber sprechen.

Kosten für die Implementierung von BDD im Unternehmen

Die größten mit der Implementierung von BDD verbundenen Kosten sind das Schreiben des Klebercodes. In den meisten Fällen liegt diese Aufgabe beim Entwicklungsteam, wodurch die Last der Erstellung der Testartefakte für die Validierung der Anforderungen von Testern auf Entwickler verlagert wird.

In einer Welt vor BDD würden Tester Tools und Frameworks verwenden, um Tests zu erstellen, die die Funktionalität validieren, nicht unbedingt die Anforderungen. Mit BDD definieren Tester, Geschäftsanalysten und andere Stakeholder Verhaltensweisen in einer Feature-Datei, aber Entwickler oder Personen mit Code-Schreibkenntnissen müssen weiterhin den Klebercode schreiben, der die Verhaltensweisen der Funktionalität zuordnet.

Die Tatsache, dass BDD die Entwicklungskosten erhöht, kann Unternehmen mit begrenzten Entwicklungsressourcen schaden. Obwohl der Klebercode wiederverwendbar und für die Testautomatisierung einfacher zu nutzen sein soll, ist der Aufwand für die Skalierung und Implementierung von BDD im gesamten Unternehmen häufig zu hoch.

Reduzierung der technischen Belastung von BDD

Parasoft trägt dazu bei, den technischen Aufwand bei der Erstellung und Wartung von BDD-Testcode zu reduzieren. Es gibt verschiedene Ansätze für automatisierte Anwendungstests. Zu den wichtigsten zählen API-Tests und UI-Tests. Parasoft kann den technischen Aufwand für beide auf folgende Weise verringern.

Reduzieren Sie die technischen Hindernisse für die Implementierung von Testcode über API-Tests mit BDD

Parasoft ermöglicht es Nicht-Entwicklern, Schrittdefinitionen zu schreiben, die als SOAtest-Tests ausgeführt werden, wodurch die zum Schreiben von Tests erforderlichen technischen Ressourcen reduziert werden. Mit dem Parasoft SOAtest-Cucumber Executor wird jede Schrittdefinition einem wiederverwendbaren SOAtest-Test oder einer wiederverwendbaren Testsuite zugeordnet, die ausgeführt wird, wenn dieser Schritt ausgeführt wird.

Betrachten Sie die folgenden Beispiele:

  • Eine Schrittdefinition verweist auf einen SOAtest-REST-Client, der eine bestimmte API aufruft.
  • Eine zweite Schrittdefinition verweist auf einen SOAtest-REST-Client, der mit einem JSON-Assertor verbunden ist, der die Daten in einer Antwort von einer anderen API validiert.
  • Eine dritte Schrittdefinition verweist auf ein SOAtest-DB-Tool, das mit einem Value Assertor verbunden ist, der eine DB-Abfrage ausführt und die Daten in der Ergebnismenge überprüft.

Schrittdefinitionen können auch auf einen einzelnen SOAtest-Test oder eine Testsuite verweisen, die eine Reihe von Tests enthält.

Screenshot von Parasoft SOAtest-Cucumber Executor

Reduzieren Sie die laufenden Wartungskosten der UI-Testautomatisierung mit Selenium und BDD

Bei der Integration von UI-Tests in Ihre BDD-Lösung ergeben sich zusätzliche und spezifische technische Herausforderungen. Ähnlich wie die API-Testlösung von Parasoft kann Parasoft Selenic UI-Aktionen im Browser aufzeichnen und reinen Selenium-Code generieren, der Ihren Schrittdefinitionen zugeordnet werden kann, um die UI-Testautomatisierung zu steuern.

Um die laufende Wartung der reinen Selenium-Skripte zu reduzieren, erstellt Parasoft Selenic Selenium-Tests unter Nutzung des Seitenobjektmodells. Das Seitenobjektmodell ist ein Designparadigma für UI-Tests, bei dem Benutzer UI-Elemente in Verbindung mit den Seiten definieren können, auf denen sie vorhanden sind. Dies erleichtert die Pflege Ihrer Skripte erheblich, da die Elementspeicherorte an einer Stelle definiert und dann in Ihrer Testsuite genutzt werden. Darüber hinaus werden die technischen Fähigkeiten verringert, die überhaupt für die Erstellung der ersten Testskripte erforderlich sind.

Bild, das den Ablauf eines Seitenobjektmodells zeigt. Hierbei handelt es sich um ein Designparadigma für UI-Tests, bei dem Benutzer UI-Elemente in Verbindung mit den Seiten definieren können, auf denen sie vorhanden sind.

Die Erstellung ist jedoch ein einmaliger Kostenfaktor, und der Großteil der durch den BDD-Testcode verursachten Belastung entfällt auf die Wartung. Wenn sich Ihre Anwendung im Laufe der Zeit ändert, können die ursprünglich im zugrunde liegenden Selenium-Testcode definierten Element-Locators und Wartebedingungen nicht mehr funktionieren. Dies führt bei der Überprüfung der Testergebnisse zu Verwirrung, da es schwierig ist festzustellen, ob Ihre Tests aufgrund echter Fehler in der Anwendung oder einfacher Änderungen an der Benutzeroberfläche fehlschlagen. Dies untergräbt den Wert, den BDD bietet. 

Parasoft Selenic lässt sich in Ihrer IDE aktivieren oder, im CI/CD-Prozess, mit einer einzigen Codezeilenänderung in Ihrer Kommandozeile ausführen und analysiert die Testausführung zur Laufzeit. Schlägt ein Test fehl, wendet Selenic seine KI-Heuristiken an, um zu ermitteln, wie der Fehler hätte vermieden werden können – beispielsweise durch die Aktualisierung von Locators oder Wartebedingungen – und versucht anschließend, den Test zur Laufzeit selbst zu reparieren, damit die Pipeline fortgesetzt werden kann. So sparen Sie wertvolle Zeit beim Debuggen von Build-Fehlern aufgrund instabiler Tests und Selenic lernt gleichzeitig mehr über Ihre Tests.

Bild, das den Parasoft Selenic-Workflow zeigt, der in Ihrer IDE oder CI/CD aktiviert ist. Beginnt mit der Aufzeichnung des Seitenobjekts zum Testen des Skripts. Geht zur Ausführung/Selbstheilung, Empfehlungen, dann zu Ergebnissen + Schnelllösung.

All dies reduziert den Zeitaufwand für die Wartung, Reparatur und Behebung fehlerhafter Tests und ermöglicht es Ihnen, die wahren Vorteile von BDD zu nutzen, nämlich eine verbesserte Zusammenarbeit und ein höheres Vertrauen aufgrund der Testautomatisierung.

Reduzieren Sie die mit Testautomatisierung und BDD verbundenen Kosten

Parasoft gibt Testern mehr Kontrolle und die Gewissheit, die zu testende Funktionalität vollständig abgedeckt zu haben. Die ausgereifte, funktionsreiche End-to-End-Testlösung ermöglicht einen einfachen Einstieg in die Testautomatisierung und -wartung sowie die nahtlose Integration in bestehende CI/CD-Workflows. Dadurch können Unternehmen mit weniger technischen Ressourcen BDD implementieren, Entwicklungsressourcen freisetzen und den Entwicklungsbereich verändern (siehe unten).

Grafik, die den Ablauf der Testautomatisierung, Testwartung und natürlichen Integration in bestehende CI/CD-Workflows zeigt, beginnend mit Definieren, Erstellen mit Parasoft und Verifizieren mit einem BDD-Tool.

Fazit: Die Stärke und Herausforderungen der BDD-Softwareentwicklung

BDD ist eine leistungsstarke Entwicklungsmethode, die sicherstellt, dass die korrekte Funktionalität implementiert wird. Die Skalierung von BDD auf Unternehmensebene kann jedoch schwierig sein, da die Implementierung einen großen Pool an technischen Ressourcen erfordert. Parasoft senkt diese technische Hürde, indem es Benutzern ermöglicht, Verhaltensanweisungen mithilfe einer benutzerfreundlichen Oberfläche Schrittausführungsdefinitionen zuzuordnen.

Die Schrittdefinitionen werden als SOAtest- Tests ausgeführt, wodurch die Mitarbeit von Testern und nicht-technischem Personal am Verifizierungsprozess deutlich vereinfacht wird . Parasoft Selenic reduziert den laufenden Wartungsaufwand für UI-Tests durch KI-generierte Empfehlungen für Locators und Wartebedingungen zur Laufzeit.

Sehen Sie den Parasoft SOAtest-Cucumber Executor in Aktion!
Demo anfordern