Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

2021 Leitfaden für BDD-Testframeworks (Behavior Driven Development)

2021 Leitfaden für BDD-Testframeworks (Behavior Driven Development) Lesezeit: 6 Minuten

Was ist ein BDD-Testframework?

Behavior Driven Development (BDD) ist ein Zweig von Prinzipien, die durch definiert werden Testgetriebene Entwicklung (TDD). In TDD bauen wir das Ding richtig. In BDD stellen wir sicher, dass wir das Richtige bauen. Die Prinzipien und Technologien, die in BDD eingesetzt werden, wurden in Funktionstests weitgehend übernommen. Ein BDD-Testframework umfasst beispielsweise Cucumber und SpecFlow, die es nicht-technischen Produktbesitzern ermöglicht haben, das Anwendungsverhalten als lesbaren Text zu definieren. Da diese Verhaltensweisen (oder Funktionen) in Testcode umgesetzt werden, kann das QS-Team die Testautomatisierung auch bei fehlendem Domänenwissen schneller und einfacher durchführen.

BDD ist im Jahr 2021 kaum ein neues Konzept. Die meisten Unternehmen haben BDD als effektivste Methode zur Umsetzung von Geschäftsanforderungen in gute Software eingeführt. In diesem Artikel werden einige der wichtigsten Treiber und Technologien mit Schwerpunkt auf Java vorgestellt.

Was sind Geschäftsanforderungen?

Geschäftsanforderungen dokumentieren die Bedürfnisse und den Zweck des Endprodukts. Die Anforderungen definieren auch Benutzer sowie Standards, die für die Bewertung verwendet werden. BDD bietet gemeinsam genutzte Tools und Prozesse für das gesamte (technische und nicht technische) Team, um die Zusammenarbeit bei der Erfüllung definierter Geschäftsanforderungen zu fördern.

Eine Geschäftsanforderung, die in eine Sprache wie z Gurke kann definiert werden als:

Gegeben Voraussetzung

Wann Action

Dann Ergebnis

Diese Funktionen (oder Verhaltensweisen) werden Testcode zugeordnet, der das Verhalten ausführen und validieren kann. In der Entwicklung besteht die Praxis darin, die Funktion zu definieren, bevor ein Code geschrieben wird. Dies stellt sicher, dass Sie das Richtige bauen - nicht mehr und nicht weniger.

Die Strukturierung der Geschäftsanforderungen als gegebene / wann / dann-Anweisung erleichtert das Schreiben von Abnahmetests.

Was sind Abnahmetests?

Abnahmetests bestimmen, ob die Anforderungen der getesteten Funktionen den Erwartungen entsprechen oder nicht. Dies hilft, die Software an definierten Geschäftsanforderungen auszurichten und sicherzustellen, dass die Spezifikationen erfüllt wurden. Abnahmetests sind ein wesentlicher Bestandteil der Qualitätssicherung, aber das Definieren und Ausführen von Abnahmetests kann ohne Domänenkenntnisse oder ein gutes Tool zur Automatisierung von Funktionstests eine Herausforderung sein.

Worauf habe ich mich eingelassen?

Lassen Sie uns diskutieren, was Test-Frameworks sind, zusammen mit einigen Technologien und Herausforderungen, denen Sie möglicherweise begegnen, wenn Sie das BDD-Test-Framework als Ihre Softwaretestlösung implementieren.

Auf hoher Ebene lesen BDD-Testautomatisierungs-Frameworks ausführbare Spezifikationen, die in einfachem Englisch geschrieben sind, und überprüfen, ob die Tests erfolgreich sind. BDD geht auch Hand in Hand mit Agile, sodass Entwicklungs- und Qualitätsteams ihre Abläufe für Effizienz optimieren können.

Reduzieren Sie die laufenden Wartungskosten Ihres BDD-Testcodes

Die Einführung von BDD ist jedoch kein Übernachtungsprojekt. Der für Menschen lesbare Text muss in Code übersetzt werden, und wo Code vorhanden ist, gibt es Entwickler. Normalerweise muss diese Testbibliothek von Entwicklern oder technischen Testern entwickelt und verwaltet werden (wetten, dass Sie berechnen, wie viel Sie das kosten wird). Hier kommen die BDD-Test-Framework-Tools ins Spiel, um den Tag zu retten. Um auf das BDD-Framework umzusteigen, können Sie sich auf Funktionstestlösungen verlassen, die in das BDD-Framework integriert sind, um die Definition von Features zu unterstützen.

Infografik mit Define - Feature File (oben links), Verify - BDD Tool (oben rechts), Create glue-code.java (unten, Mitte)

BDD in der Entwicklung

Es gibt drei Hauptschritte, wenn Sie BDD-Praktiken auf Ihre Tests anwenden.

  1. Definieren Sie die Geschäftsanforderung als Test (Feature-Datei), der fehlschlägt.
  2. Entwickeln Sie Anwendungen, um die in der Feature-Datei definierten Tests zu bestehen.
  3. Überprüfen Sie den Code erneut, um sicherzustellen, dass die Funktionsanforderungen erfüllt sind und Sie nichts erstellen, was nicht benötigt wird.

Waschen, spülen, wiederholen. Hier sehen wir den Vorteil, Features zu definieren, bevor Code geschrieben wird, um sicherzustellen, dass Sie nur das erstellen, was Sie benötigen - ohne zusätzlichen Aufwand (oder unnötige Arbeit).

So nutzen Sie BDD in der Testautomatisierung

BDD bietet beim Testen viele Vorteile. Durch die Verwendung von einfachem Englisch zum Schreiben von Tests können diese auch von nicht technischen Teammitgliedern schneller geschrieben werden. Darüber hinaus können Setup-Tests und Teardown-Tests, bei denen es sich um eine komplexe Folge von API-Aufrufen handeln kann, in einem „Satz“ definiert werden.

BDD empfiehlt die Verwendung agiler Methoden sowohl während der Entwicklung als auch beim Testen. Es ermöglicht den effektiven Austausch von Wissen über das System und die Testanforderungen zwischen einem gesamten Team. Verhaltensweisen können auch auf Jira-Anforderungen zurückgeführt werden, was für die Rückverfolgbarkeit und Testabdeckung von Nutzen sein kann.

Sobald Ihre Feature-Dateien erstellt wurden, ist es Zeit für die Automatisierung. Feature-Dateien können als Teil eines DevOps-Flows oder einer Release-Pipeline ausgeführt werden. Es ist wichtig, Berichte zu haben, die die Ausführungsergebnisse auf die Anforderungen zurückführen, um sicherzustellen, dass die Geschäftsanforderungen mit den vom Entwicklungsteam vorgenommenen Implementierungen übereinstimmen.

Wie oben erwähnt, sind Kosteneinsparungen ein großer Vorteil. Da Benutzer ihre eigenen Bibliotheken und Testcodes mit Software wie Parasoft Selenic und SOAtest entwickeln können, verringert sich die Abhängigkeit von Entwicklern zur Erleichterung der BDD-Testinfrastruktur.

Wie und warum wird BDD in der Softwareentwicklung eingesetzt?

Was sind die Herausforderungen?

Die größte Herausforderung beim BDD-Testen ist die Notwendigkeit, den „einfachen englischen“ Text dem Code zuzuordnen, der auf jede Funktion zugeschnitten ist. Entwickler werden benötigt, um den zugrunde liegenden Code zu entwickeln, und die Kosten für diese Zeit summieren sich schnell (aber vergessen Sie nicht die oben genannten Vorteile - alle Hoffnung geht nicht verloren).

Parasoft SOAtest verringert diese Herausforderung durch die AI-verbesserte Erstellung von skriptlosen automatisierten API- und Komponententests. Darüber hinaus hilft Parasoft Selenic beim Erstellen und Verwalten von Selenium-UI-Skripten. Dies ist ein anderer Ansatz zur Entwicklung Ihrer Testbibliothek. Dies bedeutet auch, dass nicht-technische Mitarbeiter Tests erstellen können, sodass Entwickler ihre Zeit damit verbringen können, neue Funktionen zu entwickeln, anstatt sie zu testen.

BDD-Tools

Wahrscheinlich war eine Ihrer größten Fragen zu BDD-Tools bisher: Wie verwende ich BDD, ohne Code zu schreiben? Testtools, mit denen nicht-technische Mitarbeiter ihre eigene Testbibliothek erstellen oder das vorhandene Framework erweitern können, können ein entscheidender Schritt zur Steigerung des ROI von BDD sein.

Gurken

Gurke verwendet Gurkensprache, um Testfälle zu definieren. Es ist eine nichttechnische Sprache, die leicht zu lesen ist und Given / When / Then-Anweisungen verwendet, um das Verhalten Ihrer Software zu strukturieren. Es fördert auch BDD-Praktiken und verwendet von Beginn des Prozesses an klare Anforderungen. All diese benutzerfreundlichen Attribute machen Cucumber zu einem der beliebtesten Tools in BDD.

Eine übliche Implementierung von Cucumber führt in JUnit oder TestNG geschriebene Abnahmetests durch, bei denen es sich möglicherweise um einen Funktionstest oder einen Selenium-UI-Test handelt. Funktionen sind in Gurke geschrieben, und jeder Schritt hat eine Schrittdefinition das ordnet die Anweisung einem Code zu.

Bild des Codes für eine Schrittdefinition beginnend mit @Given

Jede Testmethode entspricht einem Satz, und Gurke ist der Rosetta-Stein, der die Übersetzung vornimmt.

Heute unterstützt Cucumber Ruby, Java, JavaScript und Python. Es gibt auch Ports von Cucumber für andere Sprachen, wie SpecFlow für C #.

JUnit

JUnit ist ein einfaches Framework zum Schreiben wiederholbarer Tests. Es wird häufig für Komponententests verwendet, kann jedoch effizient verwendet werden, um Selenium WebDriver zu betreiben oder sogar Leistungstests zu schreiben. Es ermöglicht Benutzern, Testmethoden und Zusicherungen zu schreiben oder Code einzurichten / abzubauen. Dieser Code kann von Cucumber aufgerufen werden, wenn ein Feature-Schritt gelesen wird. JUnit5 hat viele neue Funktionen wie die Parametrisierung hinzugefügt, aber andere gängige Frameworks, einschließlich TestNG und RSpec, haben ihre eigenen Vorteile.

Parasoft

Wenn Unternehmen zwischen Qualität und Lieferung wählen müssen, wenden sie sich häufig an Anbieter wie Parasoft, die sich seit mehr als 30 Jahren auf Softwareentwicklung und Testautomatisierung spezialisiert haben. Mit den folgenden Tools können Teams BDD optimal nutzen.

Blockflöte

Parasoft Recorder ist eine Chrome-Erweiterung, die UI-Aktionen auf der Webseite sowie den API-Verkehr erfasst. Diese Aufzeichnungen können Arbeitselementen, Funktionen oder User Storys zugeordnet werden. Diese Metadaten können mit dem Test leben und an die ursprüngliche Funktion zur Rückverfolgbarkeit im gesamten SDLC gebunden sein.

Selenisch

JUnit5 und TestNG werden häufig verwendet, um Selenium-UI-Tests durchzuführen, aber nicht jeder ist ein Experte für Java, daher Tools wie Parasoft Selenisch Ermöglichen Sie Benutzern, mit Aufnahme und Wiedergabe sowie Selbstheilung für die Testautomatisierung nach links zu wechseln.

Die Möglichkeit, durch einfaches Aufzeichnen manueller Tests reinen Java-Code zu generieren, ordnet den Testcode direkt den Geschäftsanforderungen zu.

Top 10 Web UI-Testtools: Automatisierte Web UI-Tests

SOAtest

API-Tests sind im Allgemeinen schwer zu definieren und erfordern genaue Kenntnisse des Dienstes sowie des Systems. Parasoft SOAtest ist ein Tool für die skriptlose Automatisierung von Funktionstests, kann aber auch mit Cucumber verwendet werden. Sie können einfach eine Service-Definitionsdatei wie Swagger importieren, den Test einrichten und Daten hinzufügen. Sie können die Aufzeichnung vom Parasoft Recorder auch wiederverwenden, um automatisch API-Tests zu erstellen, die dann für Last- und Leistungstests verwendet werden können.

Die Cucumber-Integration ermöglicht es Benutzern dann, Schrittdefinitionen hinzuzufügen, die auf diese Tests verweisen.

Fazit

BDD bietet dem gesamten Team (auch den weniger technischen Teammitgliedern) die Möglichkeit, Ihre Software zu schreiben und zu testen. Einige der mit BDD verbundenen Herausforderungen, wie das Zuordnen von einfachem englischem (auch als nichttechnischem) Text zu Code, können mit Lösungen wie Parasoft Recorder gelöst werden. Insgesamt ist BDD eine großartige Richtlinie, um das Richtige auf die richtige Weise zu entwickeln.

Weißer Text auf Marinehintergrund: Wie Sie mit verhaltensgesteuerter Entwicklung (BDD) effektiver arbeiten können, mit dem roten Knopf darunter, der das On-Demand-Webinar anzeigt.

Geschrieben von

Grigori Trofimow

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.