BDD mit Spock und Geb

BDD mit Spock und Geb

want to give feedback? => https://rdmueller.github.io/feedback

German Testing Day, 7.6.2019, Frankfurt
https://www.germantestingday.info/german-testing-day-2019/programm/konferenzprogramm/sessiondetails/action/detail/session/gtd-13-2/title/bdd-mit-spock-und-geb-uebersichtlich-und-nachvollziehbar-testen-fuer-alle.html

Bei automatisierten Tests ist es oftmals nicht einfach nachzuvollziehen was getestet wurde. Des Weiteren laufen Tests meist durch und geben nur im Fehlerfall etwas aus. Wie soll man mit dem Fachbereich kommunizieren, was getestet wurde?

Die beiden auf Groovy basierenden Frameworks Spock und Geb sind in der Java-Welt schon länger bekannt für automatisierte Tests webbasierter Anwendungen. Über Spock werden die Tests über einen integrierten BDD-Ansatz für alle Beteiligten lesbar. Durch die zusätzliche Nutzung von Geb lassen sich funktionale Tests aus der Sicht des Nutzers erstellen - so zu sagen die automatisierte Testfahrt der Applikation. Was noch fehlt sind gute Reports, die das Testvorgehen für alle Beteiligten nachvollziehbar machen...

Zielpublikum: Entwickler, Tester und Testmanager
Vorraussetzungen: Interesse an guten Tests, Webentwicklung, Java-Grundlagen
Schwierigkeitsgrad: Advanced

https://github.com/docToolchain/SpockAsciiDocReports

https://www.dbsystel.de
https://www.exensio.de

Cc5f3bf8b3cb91c985ed4fd046aa451d?s=128

Ralf D. Müller

June 07, 2019
Tweet

Transcript

  1. Lösungen für individuelle Prozesse BDD mit Spock und Geb: Übersichtlich

    und nachvollziehbar Testen für alle! 7.6.2019 Ralf D. Müller, DB Systel GmbH Tobias Kraft, exensio GmbH
  2. 2 Tobias Kraft Ralf D. Müller

  3. 3 Meine Software wird durch automatisierte Tests überprüft ☺ Keine

    Fehler, aber was wurde eigentlich getestet? Ich muss manuell testen! Keine Fehler Problemstellung
  4. 4 Funktionales Testing mit Geb Einbindung des Fachbereichs Verständliches Reporting

    Spock – kurz und übersichtlich
  5. 5 JUnit vs. Spock

  6. 6 Spock im Überblick • Test- und Spezifikations-Framework • Groovy

    als Basis • DSL (Domain Specific Language) • Testing für JVM-fähige Sprachen • IDE-Unterstützung • Version 1.3 wurde am 05.03.2019 released
  7. 7 Mehrfache Durchläufe

  8. 8 Extensions über Annotationen @Ignore("Not yet implemented") @IgnoreRest @IgnoreIf({ properties."os.name"

    ==~ /Linux.*/) }) @Timeout(10) @FailsWidth @Requires({ env.containsKey(„DMS_ENABLED") }) @RestoreSystemProperties @Issue("http://jira.exensio.de/browse/GM-19") @See("http://ldaley.com/post/6570075743/") @Title("a readable title") @Narrative("a beautiful description for a report") Dokumentation Ignorieren Weitere Extensions
  9. 9 Meine automatisierten Tests können jetzt auch vom Fachbereich gelesen

    werden… Keine Fehler, aber was wurde eigentlich getestet? Ich muss manuell testen! Keine Fehler, aber was wurde eigentlich getestet? Ich spezifiziere es einfach! Keine Fehler
  10. 10 Funktionales Testing mit Geb Einbindung des Fachbereichs Verständliches Reporting

    Spock – kurz und übersichtlich
  11. 11 Spezifikation durch den Fachbereich

  12. 12 Spezifikation durch den Fachbereich

  13. 13 Spezifikation in Code wandeln

  14. 14 Screenshot? Link klicken? Formular ausfüllen? Keine Fehler, aber was

    wurde eigentlich getestet? Ich spezifiziere es einfach! Keine Fehler
  15. 15 Funktionales Testing mit Geb Einbindung des Fachbereichs Verständliches Reporting

    Spock – kurz und übersichtlich
  16. 16 Geb im Überblick • Webtesting und Screen-Scraping • DSL

    auf Groovy basierend • jQuery ähnliche Syntax • Nutzung von WebDriver • IDE-Unterstützung • Integration mit Spock, TestNG oder JUnit • Version 3.0 wurde am 28.05.19 freigegeben
  17. 17 Einfach Selektieren mit JQuery-ähnlicher Syntax Beispiele für Selektoren $("div",

    2) $("td.odd", 0..2)*.text() $("img", alt: "Titel") $("img", alt: "Titel").previous() $("div#heading").find("div", 3) $("div", text: iStartsWith ("groovy")) $("form").find("input", name: "speaker").value()
  18. 18 Page Objects – zur Repräsentation von Webseiten

  19. 19 Meine Tests erfüllen die fachlichen Anforderungen! Keine Fehler, aber

    was wurde eigentlich getestet? Ich spezifiziere es einfach! Weiterhin Keine Fehler
  20. 20 Funktionales Testing mit Geb Einbindung des Fachbereichs Verständliches Reporting

    Spock – kurz und übersichtlich
  21. 21 Probleme beim Reporting • Testing klappt oder klappt nicht

    • Power-Assertions sind schon sehr hilfreich • 3 Report-Engines
  22. 22 Standard Gradle Reports

  23. 23 Standard Gradle Reports

  24. 24 Spock-Reports Plugin von Renato Athaydes https://github.com/renatoathaydes/spock-reports Aber was wurde

    getestet? Fehler geben Hinweis auf tatsächliche Tests Ansonsten geben die Reports nur die Spezifikation wieder
  25. 25 Lösung Reporting – Spock Reports mit AsciiDoc https://github.com/docToolchain/SpockAsciiDocReports

  26. 26 Lösung Reporting – Spock Reports mit AsciiDoc https://github.com/docToolchain/SpockAsciiDocReports

  27. 27 • Weniger manuelle Tests • Nachvollziehbarkeit der Tests Fazit

    • Übersichtliche Tests mit Spock und Geb • Fachbereich hilft bei Testerstellung
  28. Lösungen für individuelle Prozesse Vielen Dank für Ihre Aufmerksamkeit! Fragen?

    @tokraft tobias.kraft@exensio.de @RalfDMueller ralf.d.mueller@deutschebahn.com
  29. 29 Referenzen • Spock und Geb: Übersichtlich und nachvollziehbar Testen

    für alle! Vortrag, Beispiele Source Code https://github.com/docToolchain/SpockAsciiDocReports • Teil 1 : Mit Mr. Spock beim Testeinsatz, Javamagazin (12/2014) Teil 2 : Mr. Spock ruft Geb, Javamagazin (01/2015) http://www.exensio.de/articles/ • https://github.com/renatoathaydes/spock-reports • https://github.com/AOEpeople/geb-spock-reports