Wie und warum wird BDD in der Softwareentwicklung eingesetzt?

Porträtfoto von Grigori Trofimov, Lösungsarchitekt bei Parasoft

Von Grigori Trofimov

24. Januar 2019

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.

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 in dieser Phase ihrer Softwareentwicklungsprozesse betrachten BDD genau, um sicherzustellen, dass ihre Software den Geschäftsanforderungen ihres Unternehmens entspricht. Aber was genau ist BDD und wie bezieht es sich auf das Testen?

TDD gegen BDD

BDD ist eine Weiterentwicklung der Test-Driven Development (TDD) -Methode, in dem Entwickler den Test schreiben Bevor Schreiben des Codes. Nach dem Erstellen eines fehlgeschlagenen Tests schreiben Entwickler, die TDD üben, gerade genug Code, um sicherzustellen, dass der Test erfolgreich ist, und schreiben dann einen weiteren Test. spülen und wiederholen. Das Ergebnis ist schlanker und mittlerer 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 ist BDD in der Softwareentwicklung?

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. Hierbei handelt es sich um eine BDD-spezifische Syntax, mit der BDD-Tools wie Cucumber und SpecFlow den Prozess der Überprüfung des Verhaltens automatisieren können. Diese BDD-Tools analysieren das Verhalten in der Feature-Datei und führen den entsprechenden „Klebercode“ aus. Dieser Klebercode ordnet „Verhalten“ Ausführungsschritten zu, normalerweise Java- oder .NET-Testcode, der von einem Entwickler in einer bestimmten Test-Engine geschrieben wurde. Diese Zuordnungen werden üblicherweise als "Schrittdefinitionen" oder "Schrittdefinitionen" bezeichnet. Infolgedessen können Tester Feature-Dateien als Testfälle verwenden, um das mit den Anforderungen verbundene Verhalten zu überprüfen.

Was sind die Vorteile von BDD?

Business-Driven Development bietet mehrere Vorteile für die Softwareentwicklung. 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 beabsichtigten Funktionen und 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 dem Fokus auf die Erfüllung der Anforderungen, wodurch sichergestellt wird, dass das Endprodukt den Geschäftsanforderungen eines Unternehmens entspricht.
  • 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 mehr testbaren Code. Beispielsweise kann eine Anwendung einige sich wiederholende Einrichtungsschritte aufweisen, die aufgerufen werden müssen, um einen bestimmten Status zu erreichen. Ein Entwickler kann diese Schritte im Klebercode 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 und nicht unbedingt die Anforderungen validieren. Mit BDD definieren Tester, Geschäftsanalysten und andere Interessengruppen Verhaltensweisen in einer Feature-Datei. Entwickler oder Personen mit Code-Schreibfähigkeiten müssen jedoch weiterhin den Klebercode schreiben, der das Verhalten 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.

So reduzieren Sie die technische Belastung durch BDD

Parasoft hilft dabei, den technischen Aufwand für die Erstellung und Wartung von BDD-Testcode zu verringern. Es gibt mehrere Ansätze zum automatisierten Testen einer Anwendung, hauptsächlich API-Tests und UI-Tests. Parasoft kann die technische Belastung für jeden auf unterschiedliche Weise reduzieren.

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

Mit Parasoft können Nicht-Entwickler Step-Defs schreiben, die als SOAtest-Tests ausgeführt werden. Dadurch werden die zum Schreiben von Tests erforderlichen technischen Ressourcen erheblich reduziert. Mit dem Parasoft SOAtest-Cucumber Executor wird jede Schrittdefinition einem wiederverwendbaren SOAtest-Test oder einer 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 Definition im zweiten Schritt verweist auf einen SOAtest-REST-Client, der mit einem JSON-Assertor verbunden ist und die Daten in einer Antwort von einer anderen API überprüft
  • 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 für die Automatisierung von UI-Tests 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 Parasoft, kann Parasoft Selenic UI-Aktionen aus dem Browser aufzeichnen und reinen Selenium-Code erstellen, der mit Ihren Step-Defs verknüpft werden kann, um die UI-Testautomatisierung voranzutreiben. Um die laufende Wartung der reinen Selenium-Skripte zu reduzieren, erstellt Parasoft Selenic Selenium-Tests, die das Seitenobjektmodell nutzen. 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 macht es viel einfacher, Ihre Skripts zu verwalten, da die Elementpositionen an einem Ort definiert und dann genutzt werden in Ihrer Testsuite. Außerdem werden die technischen Fähigkeiten verringert, die erforderlich sind, um die ersten Testskripte überhaupt zu erstellen.

Die Erstellung ist jedoch einmalig und der größte Teil der durch den BDD-Testcode verursachten Belastung entfällt auf die Wartung. Wenn sich Ihre Anwendung ändert, können im Laufe der Zeit die Element-Locators und Wartebedingungen, die ursprünglich im zugrunde liegenden Selenium-Testcode definiert wurden, unterbrochen werden. Dies führt zu Verwirrung bei der Überprüfung der Testergebnisse, da es schwierig ist festzustellen, ob Ihre Tests aufgrund tatsächlicher Fehler in der Anwendung oder einfacher Änderungen an der Benutzeroberfläche fehlschlagen. Dies untergräbt den von BDD bereitgestellten Wert. 

Parasoft Selenic wird in 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-Heuristiken an, um zu bestimmen, wie dieser Fehler hätte vermieden werden können (z. B. durch Aktualisieren der Locators oder Wartebedingungen), und versucht dies dann 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.  

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 das Vertrauen, dass sie die getestete Funktionalität vollständig abgedeckt haben. Nutzung a ausgereifte, funktionsreiche End-to-End-Testlösung Bietet einfachen Einstieg in die Testautomatisierung, Testwartung und eine natürliche Integration in vorhandene CI / CD-Workflows. Auf hoher Ebene können Unternehmen weniger technische Ressourcen für die Implementierung von BDD nutzen, Entwicklungsressourcen freisetzen und den Erstellungsbereich wie unten dargestellt ändern:

Fazit

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 für die Implementierung der Praxis ein großer Pool an technischen Ressourcen erforderlich ist. 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 die laufende Wartung, die mit UI-Tests durch Selenic verbunden ist, indem AI-generierte Empfehlungen für Locators und Wartebedingungen zur Laufzeit bereitgestellt werden. 

Kontakt wenn Sie mehr über die erfahren möchten Parasoft SOAtest-Gurken-Executor. Oder fordern Sie eine kostenlose Testversion an, indem Sie unten klicken. 

Neuer Handlungsaufruf

Porträtfoto von Grigori Trofimov, Lösungsarchitekt bei Parasoft

Von Grigori Trofimov

Grigori Trofimov ist Solution Architect bei Parasoft und bietet potenziellen Kunden, Kunden und Partnern Beratungsdienste für die Testlösungen von Parasoft an. Er hat kürzlich auf Konferenzen zum Thema Service-Virtualisierung und Bereitstellung von Einwegumgebungen in der Cloud gesprochen.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.