Bisher waren unsere Gespräche eher auf einer theoretischen bzw. methodischen Ebene. Jetzt möchte ich es gerne mal etwas konkreter wissen und befrage ChatGPT mal nach Cucumber.
Hinweis zu den Code-Beispielen: diese sind hier lediglich als Screenshots dargestellt, der Code kann also nicht kopiert werden.
Kennst du Cucumber?
Ja, ich kenne Cucumber. Cucumber ist ein Werkzeug, das es Entwicklern ermöglicht, Anforderungen an Software in einer verständlichen Sprache zu beschreiben, die sowohl von Entwicklern als auch von Nicht-Entwicklern verstanden werden kann. Cucumber wird oft in agilen Entwicklungsmethoden wie Scrum und Extreme Programming eingesetzt, um die Kommunikation und Zusammenarbeit zwischen Entwicklern, Testern und anderen Beteiligten zu verbessern.
Hast du ein Beispiel?
Ein Beispiel für die Verwendung von Cucumber könnte sein, dass ein Entwickler einen Schritt definiert, der beschreibt, wie der Benutzer auf eine Schaltfläche klickt und das System eine bestimmte Aktion ausführt. Die Schritte werden in einer sogenannten Feature-Datei gespeichert, die im folgenden Format geschrieben wird:
Beispielsweise könnte ein Feature für einen Login-Bereich wie folgt aussehen:
Diese Feature-Datei kann dann von Cucumber ausgeführt werden, um sicherzustellen, dass das System wie erwartet funktioniert.
Kannst du mir auch ein Beispiel für den given-when-then-Teil geben?
Ja, gerne! Der given-when-then-Teil ist der Hauptteil eines Szenarios und beschreibt, was im Szenario passieren soll. Er besteht aus drei Teilen: given, when und then.
- Given beschreibt die Vorbedingungen, die für das Szenario gelten.
- When beschreibt die Aktionen, die im Szenario durchgeführt werden.
- Then beschreibt das erwartete Ergebnis des Szenarios.
Ein Beispiel für given-when-then könnte folgendermaßen aussehen:
In diesem Beispiel beschreibt given die Vorbedingungen (der Benutzer ist auf der Produktseite und hat das Produkt in den Warenkorb gelegt), when beschreibt die Aktionen (der Benutzer klickt auf „Zur Kasse gehen“ und gibt die Zahlungsinformationen ein) und then beschreibt das erwartete Ergebnis (die Zahlung wird erfolgreich durchgeführt und das Produkt wird geliefert).
Wie wird die Feature-Datei dann von Cucumber ausgeführt?
Um eine Feature-Datei von Cucumber auszuführen, müssen zunächst die benötigten Bibliotheken installiert werden. Cucumber kann dann über die Kommandozeile gestartet werden, indem man den Befehl cucumber
eingibt, gefolgt von der Pfadangabe zur Feature-Datei. Cucumber liest dann die Feature-Datei und führt die Szenarios aus, indem es sie mit dem Code im Projekt vergleicht. Wenn ein Szenario erfolgreich abgeschlossen wird, gibt Cucumber eine entsprechende Meldung aus. Wenn ein Szenario fehlschlägt, gibt Cucumber eine Fehlermeldung aus, die beschreibt, was schief gelaufen ist.
Zum Beispiel:
In diesem Beispiel wird die Feature-Datei ausgeführt, und Cucumber gibt aus, dass alle Szenarios erfolgreich abgeschlossen wurden. Wenn ein Szenario fehlschlägt, würde Cucumber stattdessen eine Fehlermeldung ausgeben, die beschreibt, was schief gelaufen ist.
Aber damit die Feature-Datei ausgeführt werden kann, muss ja auch noch ein entsprechendes Testskript implementiert werden, das übernimmt Cucumber ja nicht?
Ja, das ist richtig. Cucumber selbst ist nur ein Werkzeug, das es Entwicklern ermöglicht, Anforderungen an Software in einer verständlichen Sprache zu beschreiben. Um die Anforderungen tatsächlich auszuführen und zu testen, muss ein Testskript implementiert werden, das Cucumber ausführt. Dieses Skript muss die Schritte in der Feature-Datei nachvollziehen und sicherstellen, dass das System wie erwartet funktioniert. Cucumber vergleicht dann die Ergebnisse des Testskripts mit den erwarteten Ergebnissen in der Feature-Datei und gibt eine Meldung aus, ob der Test erfolgreich war oder fehlgeschlagen ist.
Ein Beispiel für ein Testskript, das die Schritte im obigen Beispiel für den Login-Bereich ausführt, könnte folgendermaßen aussehen:
In diesem Beispiel werden die Schritte in der Feature-Datei durch entsprechende Funktionen im Testskript nachvollzogen und ausgeführt. Die Ergebnisse wer (sic!)
Kannst du mir auch zeigen, wie das Testskript in Java aussieht?
Ja, gerne! Hier ist ein Beispiel für ein Testskript in Java, das die Schritte im obigen Beispiel für den Login-Bereich ausführt:
In diesem Beispiel werden die Schritte in der Feature-Datei durch entsprechende Methoden im Testskript nachvollzogen und ausgeführt. Die Ergebnisse werden überprüft, indem die assertEquals
– und assertTrue
-Methoden verwendet werden, die von der JUnit-Bibliothek bereitgestellt werden. Wenn die tatsächlichen Ergebnisse den erwarteten Ergebnissen entsprechen, wird der Test erfolgreich abgeschlossen. Wenn sie nicht übereinstimmen, wird der Test fehlschlagen und eine Fehlermeldung ausgegeben.
Originalgespräch mit ChatGPT vom 08.12.2022