34
Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio GmbH

Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

3

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 4: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

4

JUnit vs. Spock

Page 5: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

6

Klare Strukturierung von Feature-Methoden mit Blöcken

-mal

Page 7: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

7

Mehrfache Durchläufe

Page 8: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

11

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 12: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

12

Spezifikation durch den Fachbereich

Page 13: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

13

Spezifikation durch den Fachbereich

Page 14: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

14

Spezifikation in Code wandeln

Page 15: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

16

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 17: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

18

Spock in Kombination mit Geb

Geb Testing

Adapter

WebDriver

Spock

Geb

Page 19: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

20

Page Objects – zur Repräsentation von Webseiten

Page 21: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

22

Funktionales Testing mit Geb

Einbindung des Fachbereichs

Verständliches Reporting

Spock – kurz und übersichtlich

Page 23: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

24

Standard Gradle Reports

Page 25: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

25

Standard Gradle Reports

Page 26: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

26

Spock 1.0-SNAPSHOT Report

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

Page 27: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

27

Spock-Reports Plugin von Renato Athaydes

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

Page 28: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

29

Lösung Reporting – Geb Screenshots

Page 30: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

30

Lösung Reporting – Spock Reports mit Geb Screenshots

https://github.com/rdmueller/etka15

Page 31: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

31

Lösung Reporting – Spock Reports mit Geb Screenshots

Page 32: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

32

• Weniger manuelle

Tests

• Nachvollziehbarkeit

der Tests

Fazit • Übersichtliche Tests

mit Spock und Geb

• Fachbereich hilft bei

Testerstellung

• Steigerung

der Qualität

Page 33: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

Fragen?

Vielen Dank! @tokraft

[email protected]

@RalfDMueller

[email protected]

Page 34: Spock und Geb: Übersichtliche und nachvollziehbare Tests! · 2019-10-21 · Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias

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/