Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

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

Headshot von Grigori Trofimov, Senior Solution Architect bei Parasoft
23. Oktober 2023
7 min lesen

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 sind viele Organisationen zu übergegangen Agile Entwicklung um die Lieferung zu beschleunigen und zeitnaheres Feedback vom Markt zu erhalten. Während sich die Entwicklung in diesen Organisationen schneller entwickelt, wird die Qualitätssicherung nur schwer Schritt halten können, wenn sie nicht automatisierte Softwaretestpraktiken in die Entwicklungspipeline integriert. Dies ist häufig der erste Engpass, der überwunden werden muss.

Nach der erfolgreichen Einführung der Testautomatisierung und der schnelleren Umstellung der gesamten Organisation fragen sich die Unternehmen, ob sie die Testautomatisierung aufbauen Recht Software. Beschleunigung der Softwareentwicklung und Sicherstellung der Softwarequalität mit automatisiertes kontinuierliches Testen ist eine großartige Leistung, aber es ist alles umsonst, wenn die Software nicht das ist, was Ihre Kunden wollen oder brauchen.

Leute, die sich in dieser Phase der Weiterentwicklung ihrer Softwareentwicklungsprozesse befinden, schauen sich BDD genau an, um sicherzustellen, dass ihre Software ihren Anforderungen entspricht Geschäftsanforderungen der Organisation. Aber was genau ist BDD und welche Bedeutung hat es für das Testen?

BDD im Kontext von BDD verstehen

BDD ist eine Weiterentwicklung der Test-Driven Development (TDD) -Methode, in dem Entwickler den Test schreiben Bevor den Code schreiben. Nachdem sie einen fehlgeschlagenen Test für den Start erstellt haben, schreiben Entwickler, die TDD praktizieren, gerade genug Code, um sicherzustellen, dass der Test bestanden wird, und schreiben dann einen weiteren Test. Spülen und wiederholen. Das Ergebnis ist ein schlanker und einfacher Code mit hoher Testabdeckung.

TDD ist eine Aktivität zur Verbesserung der Softwarequalität und zur Gewährleistung der Codeabdeckung. Im Gegensatz dazu löst BDD das Problem der korrekten Implementierung von Anforderungen. Anstatt sich auf das zu konzentrieren Test um die zu überprüfen Funktionalität Wenn Sie implementieren möchten, geht es bei BDD darum, das zu definieren Verhalten der Anwendung, so dass es bestimmte Geschäft erfüllt Anforderungen.

Die Ähnlichkeit zwischen TDD und BDD besteht darin, dass vor jeder Arbeit ein vertraglicher Mechanismus implementiert wird, um sicherzustellen, dass die Ausgabe einer bestimmten Erwartung entspricht. Aber hier endet die Ähnlichkeit. Bei TDD handelt es sich bei dem Test um einen Vertrag, mit dem sichergestellt werden soll, dass die Anwendung eine bestimmte funktionale Anforderung erfüllt. In BDD ist das Verhalten der Vertrag, mit dem sichergestellt werden soll, dass die Anwendung eine bestimmte Geschäftsanforderung erfüllt.

Was macht BDD in der Softwareentwicklung einzigartig?

Wir haben den Begriff „Verhalten“ beiläufig herumgeworfen, aber er hat im Kontext von BDD eine technische Bedeutung. In BDD, Verhaltensweisen sind sorgfältig ausgearbeitete, für Menschen lesbare Aussagen, die einem bestimmten Format folgen. Sie werden in „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 „Verhalten“ Ausführungsschritten zu, typischerweise Java- oder .NET-Testcode, der von einem Entwickler in einer bestimmten Test-Engine geschrieben wurde.

Diese Zuordnungen werden üblicherweise als „Schrittdefinitionen“ oder „Schrittdefinitionen“ bezeichnet. Dadurch können Tester Feature-Dateien als Testfälle verwenden, die das mit den Anforderungen verbundene Verhalten ü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 zu reduzieren, der mit der Erstellung und Wartung von BDD-Testcode verbunden ist. Es gibt mehrere Ansätze zum automatisierten Testen einer Anwendung. Dazu gehören vor allem API-Tests und UI-Tests. Parasoft kann den technischen Aufwand für jeden einzelnen auf folgende Weise reduzieren.

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.

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

Zusätzliche und einzigartige technische Herausforderungen ergeben sich bei der Integration von UI-Tests in Ihre BDD-Lösung. Ähnlich zu Die API-Testlösung von ParasoftParasoft Selenic hat die Möglichkeit, UI-Aktionen vom Browser aufzuzeichnen und reinen Selenium-Code zu erstellen, der Ihren Schrittdefinitionen zugeordnet werden kann, um die Automatisierung von UI-Tests voranzutreiben.

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 wird innerhalb Ihrer IDE oder, für CI/CD, mit einer einzeiligen Codeänderung an Ihrer Befehlszeilenausführung aktiviert und führt eine Laufzeitanalyse der Testausführung durch. Wenn ein Test fehlschlägt, wendet er seine KI-Heuristik an, um zu ermitteln, wie dieser Fehler hätte vermieden werden können – beispielsweise durch die Aktualisierung von Locators oder Wartebedingungen – und versucht dann, dies zu tun Heilen Sie den Test zur Laufzeit selbst damit die Pipeline fortgesetzt werden kann. Sie vermeiden es, Zyklen zu verschwenden, die Build-Fehler aufgrund instabiler Tests debuggen, und erfahren 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 den Testern mehr Kontrolle und gibt ihnen die Gewissheit, dass sie die zu testende Funktionalität vollständig abgedeckt haben. Die Nutzung einer ausgereiften, funktionsreichen End-to-End-Testlösung ermöglicht einen einfachen Einstieg in die Testautomatisierung, Testwartung und natürliche Integration in bestehende CI/CD-Workflows. Auf hoher Ebene ermöglicht es Unternehmen, weniger technische Ressourcen für die Implementierung von BDD zu nutzen, wodurch Entwicklungsressourcen frei werden und der Erstellungsbereich geändert wird, wie unten dargestellt.

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 Entwicklungspraxis, die sicherstellen kann, dass die richtige Funktionalität erstellt wird. Die Skalierung von BDD auf Unternehmensebene kann jedoch schwierig sein, da die Umsetzung dieser Praxis einen großen Pool an technischen Ressourcen erfordert. Parasoft senkt die technische Barriere, indem Benutzer Verhaltensanweisungen mithilfe von a auf Schrittausführungsdefinitionen abbilden können einfach zu verstehende Benutzeroberfläche.

Die Schrittdefinitionen werden ausgeführt als SOAtest Tests, was es für Tester und nicht-technisches Personal viel einfacher macht zu zum Überprüfungsprozess beitragen. Parasoft Selenic Reduziert den laufenden Wartungsaufwand im Zusammenhang mit UI-Tests durch Selenic, indem KI-generierte Empfehlungen für Locators und Wartebedingungen zur Laufzeit bereitgestellt werden.

Sehen Sie den Parasoft SOAtest-Cucumber Executor in Aktion!