Top Banner
Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller, Freelancer Tobias Kraft, exensio GmbH
43

Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

Nov 02, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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

Entwicklertag Karlsruhe, 20.05.2015

Ralf D. Müller, Freelancer

Tobias Kraft, exensio GmbH

Page 2: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

3

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 4: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

4

JUnit vs. Spock

Page 5: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

5

JUnit vs. Spock

Page 6: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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

Page 7: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

7

Klare Strukturierung von Feature-Methoden mit Blöcken

-mal

Page 8: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

8

Mehrfache Durchläufe

Page 9: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

9

Mehrfache Durchläufe

Page 10: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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

Page 11: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

11

Interaction Based Testing

● Verhalten des Codes unter verschiedenen Bedingungen überprüfen

Page 12: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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)

Page 13: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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

Page 14: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

14

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 15: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

15

Spezifikation durch den Fachbereich

Page 16: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

16

Spezifikation durch den Fachbereich

Page 17: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

17

Spezifikation in Code wandeln

Page 18: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

18

Screenshot?

Link klicken?

Formular ausfüllen?

Keine Fehler, aber was

wurde eigentlich getestet?

Ich spezifiziere es einfach!

Keine

Fehler

Page 19: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

19

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 20: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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

Page 21: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

21

Spock in Kombination mit Geb

Geb Testing

Adapter

WebDriver

Spock

Geb

Page 22: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

22

Einfach Selektieren mit JQuery-ähnlicher Syntax

Page 23: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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()

Page 24: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

24

Page Objects – zur Repräsentation von Webseiten

Page 25: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

25

Page Objects – zur Repräsentation von Webseiten

Page 26: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

26

Page Objects – zur Repräsentation von Webseiten

Page 27: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

27

● Nutzung von WebDriver-Implementierungen ● Gängige Browser

● PhantomJS

● Steuerbar über Konfiguration

Testing mit verschiedenen Browsern

Page 28: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

28

● Nutzung von WebDriver-Implementierungen ● Gängige Browser

● PhantomJS

● Steuerbar über Konfiguration

Testing mit verschiedenen Browsern

Page 29: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

29

Meine Tests erfüllen

die fachlichen

Anforderungen!

Keine Fehler, aber was

wurde eigentlich getestet?

Ich spezifiziere es einfach!

Weiterhin

Keine Fehler

Page 30: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

30

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 31: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

31

Probleme beim Reporting

● Testing klappt oder klappt nicht

● Power-Assertions sind schon sehr hilfreich

● 3 Report-Engines

Page 32: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

32

Standard Gradle Reports

Page 33: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

33

Standard Gradle Reports

Page 34: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

34

Spock 1.0-SNAPSHOT Report

http://spockframework.github.io/spock/sampleReports/Ninja%20Commander.html

Page 35: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

35

Spock-Reports Plugin von Renato Athaydes

https://github.com/renatoathaydes/spock-reports

Page 36: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

36

Aber was wurde getestet?

● Fehler geben Hinweis auf tatsächliche Tests

● Ansonsten geben die Reports nur die Spezifikation wieder

Page 37: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

37

Lösung Reporting – Geb Screenshots

Page 38: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

38

Lösung Reporting – Grails Film-Strip Plugin

https://grails.org/plugin/film-strip

Page 39: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

39

Lösung Reporting – Spock Reports mit Geb Screenshots

https://github.com/rdmueller/etka15

Page 40: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

40

Lösung Reporting – Spock Reports mit Geb Screenshots

Page 41: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

41

• Weniger manuelle

Tests

• Nachvollziehbarkeit

der Tests

Fazit

• Übersichtliche Tests

mit Spock und Geb

• Fachbereich hilft bei

Testerstellung

• Steigerung der

Qualität

Page 42: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

Partner:

Fragen?

Vielen Dank! @tokraft

[email protected]

@RalfDMueller

[email protected]

Page 43: Spock und Geb: Übersichtlich und nachvollziehbar Testen ... · Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller,

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/