Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle!

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle!

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 sorgen seit einiger Zeit für Aufsehen in der Java-Welt. Über Spock werden die Tests schon um einiges lesbarer. 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.

exensio

May 20, 2015
Tweet

More Decks by exensio

Other Decks in Technology

Transcript

  1. Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag

    Karlsruhe, 20.05.2015 Ralf D. Müller, Freelancer Tobias Kraft, exensio GmbH
  2. 2 Meine Software wird durch automatisierte Tests überprüft  Keine

    Fehler, aber was wurde eigentlich getestet? Ich muss manuell testen! Wir haben einen teuren Bug im System! Warum wurde der nicht vorher gefunden? Keine Fehler
  3. 6 Spock im Überblick • Test und Spezifikations-Framework • Groovy

    ist Basis • DSL (Domain Specific Language) • Testing für JVM-fähige Sprachen • IDE-Unterstützung • Version 1.0 seit März 2015 verfügbar
  4. 10 Extensions über Annotationen @Ignore(reason = "Not yet implemented") @IgnoreRest

    @IgnoreIf({ properties."os.name" ==~ /Linux.*/) }) @Timeout @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
  5. 12 Was ist sonst noch interessant in Spock? • Stubs,

    Mocks und Spies • Umgang mit Exceptions • old Methode • Hamcrest Matchers when: myList .add('foo') then: myList.size() == old(myList.size()) + 1 then: def e = thrown(IllegalArgumentException) e.getMessage().startsWith("No tagCategory") expect: 2.9d closeTo(3, 0.5)
  6. 13 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
  7. 18 Screenshot? Link klicken? Formular ausfüllen? Keine Fehler, aber was

    wurde eigentlich getestet? Ich spezifiziere es einfach! Keine Fehler
  8. 20 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 0.10.0
  9. 23 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()
  10. 27 • Nutzung von WebDriver-Implementierungen • Gängige Browser • PhantomJS

    • Steuerbar über Konfiguration Testing mit verschiedenen Browsern
  11. 28 • Nutzung von WebDriver-Implementierungen • Gängige Browser • PhantomJS

    • Steuerbar über Konfiguration Testing mit verschiedenen Browsern
  12. 29 Meine Tests erfüllen die fachlichen Anforderungen! Keine Fehler, aber

    was wurde eigentlich getestet? Ich spezifiziere es einfach! Weiterhin Keine Fehler
  13. 31 Probleme beim Reporting • Testing klappt oder klappt nicht

    • Power-Assertions sind schon sehr hilfreich • 3 Report-Engines
  14. 36 Aber was wurde getestet? • Fehler geben Hinweis auf

    tatsächliche Tests • Ansonsten geben die Reports nur die Spezifikation wieder
  15. 41 • Weniger manuelle Tests • Nachvollziehbarkeit der Tests Fazit

    • Übersichtliche Tests mit Spock und Geb • Fachbereich hilft bei Testerstellung • Steigerung der Qualität
  16. 43 Referenzen • Spock und Geb: Übersichtlich und nachvollziehbar Testen

    für alle! Vortrag, Beispiele Source Code http://rdmueller.github.io/etka15/ • Teil 1 : Mit Mr. Spock beim Testeinsatz, Javamagazin (12/2014) Teil 2 : Mr. Spock ruft Geb, Javamagazin (01/2015) http://www.exensio.de/articles/