Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Leitfaden für Test-Frameworks für verhaltensgesteuerte Entwicklung (BDD).

Headshot von Grigori Trofimov, Senior Solution Architect bei Parasoft
4. April 2023
6 min lesen

Verhaltensgesteuerte Entwicklung konzentriert sich auf das Geschäftsverhalten, das Ihr Code zu implementieren versucht. BDD erfreut sich bei vielen Unternehmen, die Software entwickeln, großer Beliebtheit, da es sowohl technischem als auch nichttechnischem Personal hilft, das Anwendungsverhalten zu verstehen. Hier finden Sie eine umfassende Anleitung zum BDD-Test-Framework/-Tools.

Was ist ein BDD-Testframework?

Verhaltensgesteuerte Entwicklung (BDD) ist ein Zweig von Prinzipien, die von definiert werden Testgetriebene Entwicklung (TDD). Bei TDD bauen wir das Ding richtig. Bei BDD stellen wir sicher, dass wir das Richtige bauen. Die in BDD genutzten Prinzipien und Technologien wurden in Funktionstests weithin übernommen. Ein BDD-Test-Framework umfasst Systeme wie Cucumber und SpecFlow, die es technisch nicht versierten Produktbesitzern ermöglichen, das Anwendungsverhalten als für Menschen lesbaren Text zu definieren. Da diese Verhaltensweisen (oder Funktionen) in Testcode umgesetzt werden, kann das QA-Team die Testautomatisierung schneller und einfacher durchführen, selbst wenn es an Domänenkenntnissen mangelt.

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 stellt gemeinsame Tools und Prozesse für das gesamte (technische und nichttechnische) Team bereit, 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.

Jedoch müssen auch Einführung von BDD ist kein Unterfangen über Nacht. Der für Menschen lesbare Text muss in Code übersetzt werden, und wo Code ist, gibt es Entwickler. Typischerweise muss diese Testbibliothek von Entwicklern oder technischen Testern entwickelt und gepflegt werden (ich wette, Sie berechnen gerade, wie viel Sie das kosten wird). Hier kommen die Tools des BDD-Testframeworks ins Spiel, um Abhilfe zu schaffen. Beim Übergang zum BDD-Framework können Sie sich auf Funktionstestlösungen verlassen, die in das BDD-Framework integriert sind und Sie bei der Definition von Funktionen 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 Verfassen von Tests können diese auch von technisch nicht versierten Teammitgliedern schneller geschrieben werden. Darüber hinaus können Setup-Tests und Teardown-Tests, bei denen es sich um eine komplexe Abfolge von API-Aufrufen handeln kann, in einem „Satz“ definiert werden.

BDD fördert den Einsatz agiler Methoden sowohl während der Entwicklung als auch beim Testen. Es ermöglicht einen effektiven Wissensaustausch über das System und die Testanforderungen innerhalb eines gesamten Teams. Verhaltensweisen können auch auf Jira-Anforderungen zurückgeführt werden, was für die Rückverfolgbarkeit und Testabdeckung wertvoll 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 ist die Kosteneinsparung ein großer Vorteil. Da Benutzer mit Software wie Parasoft Selenic und SOAtest ihre eigenen Bibliotheken entwickeln und Code testen können, verringert sich die Abhängigkeit von Entwicklern, die die BDD-Testinfrastruktur ermöglichen.

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.

Wie und warum wird BDD in der Softwareentwicklung eingesetzt?

BDD-Tools

Wahrscheinlich war eine Ihrer bisher größten Fragen zu BDD-Tools: Wie verwende ich BDD, ohne Code zu schreiben? Testtools, die es technisch nicht versierten Personen ermöglichen, ihre eigene Testbibliothek zu erstellen oder das vorhandene Framework zu erweitern, 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, das sich seit mehr als 35 Jahren auf Softwareentwicklung und Testautomatisierung spezialisiert hat. 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 API-Verkehr erfasst. Diese Aufzeichnungen können Arbeitselementen, Features oder User Stories zugeordnet werden. Diese Metadaten können mit dem Test fortbestehen und zur Rückverfolgbarkeit im gesamten SDLC mit der ursprünglichen Funktion verknüpft werden.

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.

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.

Zusammenfassung

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.

Erfahren Sie mehr darüber, wie Parasoft Ihrem Softwareentwicklungsteam helfen kann, BDD einzuführen und effektiver zu sein.

 

Verwandte Post + Ressourcen