Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
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.
Zum Abschnitt springen
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 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.
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.
Es gibt mehrere Vorteile, die die geschäftsorientierte Entwicklung für die Softwareentwicklung mit sich bringt. Mit BDD können Sie:
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.
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.
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.
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:
Schrittdefinitionen können auch auf einen einzelnen SOAtest-Test oder eine Testsuite verweisen, die eine Reihe von Tests enthält.
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.
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.
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.
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).
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.
Weiterführende Inhalte