spock und geb: Übersichtliche und nachvollziehbare tests! · spock und geb: Übersichtliche und...
TRANSCRIPT
![Page 1: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/1.jpg)
Spock und Geb: Übersichtliche und nachvollziehbare Tests!
08.03.2016
Ralf D. Müller, Freelancer
Tobias Kraft, exensio GmbH
![Page 2: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/2.jpg)
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
![Page 3: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/3.jpg)
3
Funktionales Testing mit Geb
Einbindung des Fachbereichs
Verständliches Reporting
Spock – kurz und übersichtlich
![Page 4: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/4.jpg)
4
JUnit vs. Spock
![Page 5: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/5.jpg)
5
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
![Page 6: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/6.jpg)
6
Klare Strukturierung von Feature-Methoden mit Blöcken
-mal
![Page 7: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/7.jpg)
7
Mehrfache Durchläufe
![Page 8: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/8.jpg)
8
Extensions über Annotationen
@Ignore("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
![Page 9: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/9.jpg)
9
Was ist sonst noch interessant in Spock?
● Interaction Based Testing
● Stubs, Mocks und Spies
● 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)
![Page 10: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/10.jpg)
10
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
![Page 11: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/11.jpg)
11
Funktionales Testing mit Geb
Einbindung des Fachbereichs
Verständliches Reporting
Spock – kurz und übersichtlich
![Page 12: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/12.jpg)
12
Spezifikation durch den Fachbereich
![Page 13: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/13.jpg)
13
Spezifikation durch den Fachbereich
![Page 14: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/14.jpg)
14
Spezifikation in Code wandeln
![Page 15: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/15.jpg)
15
Screenshot?
Link klicken?
Formular ausfüllen?
Keine Fehler, aber was wurde
eigentlich getestet?
Ich spezifiziere es einfach!
Keine
Fehler
![Page 16: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/16.jpg)
16
Funktionales Testing mit Geb
Einbindung des Fachbereichs
Verständliches Reporting
Spock – kurz und übersichtlich
![Page 17: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/17.jpg)
17
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.13.1
![Page 18: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/18.jpg)
18
Spock in Kombination mit Geb
Geb Testing
Adapter
WebDriver
Spock
Geb
![Page 19: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/19.jpg)
19
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()
![Page 20: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/20.jpg)
20
Page Objects – zur Repräsentation von Webseiten
![Page 21: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/21.jpg)
21
Meine Tests erfüllen die
fachlichen
Anforderungen!
Keine Fehler, aber was wurde
eigentlich getestet?
Ich spezifiziere es einfach!
Weiterhin
Keine Fehler
![Page 22: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/22.jpg)
22
Funktionales Testing mit Geb
Einbindung des Fachbereichs
Verständliches Reporting
Spock – kurz und übersichtlich
![Page 23: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/23.jpg)
23
Probleme beim Reporting
● Testing klappt oder klappt nicht
● Power-Assertions sind schon sehr hilfreich
● 3 Report-Engines
![Page 24: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/24.jpg)
24
Standard Gradle Reports
![Page 25: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/25.jpg)
25
Standard Gradle Reports
![Page 26: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/26.jpg)
26
Spock 1.0-SNAPSHOT Report
http://spockframework.github.io/spock/sampleReports/Ninja%20Commander.html
![Page 27: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/27.jpg)
27
Spock-Reports Plugin von Renato Athaydes
https://github.com/renatoathaydes/spock-reports
![Page 28: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/28.jpg)
28
Aber was wurde getestet?
● Fehler geben Hinweis auf tatsächliche Tests
● Ansonsten geben die Reports nur die Spezifikation wieder
![Page 29: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/29.jpg)
29
Lösung Reporting – Geb Screenshots
![Page 30: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/30.jpg)
30
Lösung Reporting – Spock Reports mit Geb Screenshots
https://github.com/rdmueller/etka15
![Page 31: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/31.jpg)
31
Lösung Reporting – Spock Reports mit Geb Screenshots
![Page 32: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/32.jpg)
32
• Weniger manuelle
Tests
• Nachvollziehbarkeit
der Tests
Fazit • Übersichtliche Tests
mit Spock und Geb
• Fachbereich hilft bei
Testerstellung
• Steigerung
der Qualität
![Page 34: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio](https://reader030.vdocuments.mx/reader030/viewer/2022040105/5e1f4a59f25fd62ac26030af/html5/thumbnails/34.jpg)
34
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/