+ All Categories
Home > Documents > Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und...

Spock und Geb: Übersichtliche und nachvollziehbare Tests! · Spock und Geb: Übersichtliche und...

Date post: 02-Nov-2019
Category:
Upload: others
View: 14 times
Download: 0 times
Share this document with a friend
34
Spock und Geb: Übersichtliche und nachvollziehbare Tests! 08.03.2016 Ralf D. Müller, Freelancer Tobias Kraft, exensio GmbH
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fragen?

Vielen Dank! @tokraft

[email protected]

@RalfDMueller

[email protected]

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

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/


Recommended