Slide 1

Slide 1 text

ein perfektes Paar DB Systel GmbH | Ralf D. Müller Spock und AsciiDoc + =

Slide 2

Slide 2 text

Ralf D. Müller Software Architect @ DB Systel mit Schwerpunkt Web-Technologien Qualität (Security, Testautomation) Produktivität (Gradle, Groovy, Grails) Prozessoptimierung In der Freizeit Geek, arc42 Contributor & Maintainer von docToolchain DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 2

Slide 3

Slide 3 text

3 DB Systel. Digital bewegen. Gemeinsam. Digital | bewegen | verstehen | anwenden | begleiten | vernetzen | denken und handeln DB Systel. Digital bewegen. Gemeinsam.

Slide 4

Slide 4 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 4

Slide 5

Slide 5 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 5 void testeAdditionJUnit() { Calculator calculator = new Calculator() BigDecimal result = calculator.plus( 3, 4) assertEquals(7, result, 0.1) }

Slide 6

Slide 6 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 6 void "Rechner kann addieren Spock I"() { given: Calculator calculator = new Calculator() when: BigDecimal result = calculator.plus( 3, 4) then: assertEquals(7, result, 0.1) }

Slide 7

Slide 7 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 7 void "Rechner kann addieren Spock II"() { given: "ein Caclulator Objekt" Calculator calculator = new Calculator() when: "zwei Zahlen addiert werden" BigDecimal result = calculator.plus( 3, 4) then: "erhalte ich das richtige Ergebnis" assertEquals(7, result, 0.1) }

Slide 8

Slide 8 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 8 void "Rechner kann addieren Spock III"() { given: "ein Caclulator Objekt" Calculator calculator = new Calculator() when: "#a und #b addiert werden" BigDecimal result = calculator.plus( a, b) then: "erhalte ich #expected" assertEquals(expected, result, 0.1) where: "Beispieldaten" a | b || expected 3 | 4 || 7 4 | 3 || 7 -5 | 7 || 2 -7 | 5 || -2 }

Slide 9

Slide 9 text

Was ist Spock? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 9 void "Rechner kann addieren Spock IV"() { given: "ein Caclulator Objekt" def calculator = new Calculator() when: "#a und #b addiert werden" def result = calculator.plus( a, b) then: "erhalte ich #expected" result == expected where: "Beispieldaten" a | b || expected 3 | 4 || 7 4 | 3 || 7 -5 | 7 || 2 -7 | 5 || -2 }

Slide 10

Slide 10 text

Was ist AsciiDoc? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 10

Slide 11

Slide 11 text

Was ist AsciiDoc? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 11 = AsciiDoc *AsciiDoc* ist ein Dokumentationsformat, welches mit Hilfe des Tools *Asciidoctor* in verschiedene andere Formate wie z.B. HTML gewandelt werden kann. AsciiDoc hat den Vorteil, dass man es einfach wie eine eMail schreiben kann und sich wie Sourceode versionieren lässt. Sie auch https://asciidoctor.org[asciidoctor.org] AsciiDoc AsciiDoc ist ein Dokumentationsformat, welches mit Hilfe des Tools Asciidoctor in verschiedene andere Formate wie z.B. HTML gewandelt werden kann. AsciiDoc hat den Vorteil, dass man es einfach wie eine eMail schreiben kann und sich wie Sourceode versionieren lässt. Sie auch asciidoctor.org

Slide 12

Slide 12 text

AsciiDoc – Special Features: Includes DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 12

Slide 13

Slide 13 text

AsciiDoc – Special Features: Tabellen DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 13

Slide 14

Slide 14 text

AsciiDoc – Special Features: Diagramme DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 14

Slide 15

Slide 15 text

?

Slide 16

Slide 16 text

Nochmal ein Blick auf Spock… DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 16 void "Rechner kann addieren Spock IV"() { given: "ein Caclulator Objekt" def calculator = new Calculator() when: "#a und #b addiert werden" def result = calculator.plus( a, b) then: "erhalte ich #expected" result == expected where: "Beispieldaten" a | b || expected 3 | 4 || 7 4 | 3 || 7 -5 | 7 || 2 -7 | 5 || -2 }

Slide 17

Slide 17 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 17

Slide 18

Slide 18 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 18

Slide 19

Slide 19 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 19

Slide 20

Slide 20 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 20

Slide 21

Slide 21 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 21

Slide 22

Slide 22 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 22

Slide 23

Slide 23 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 23

Slide 24

Slide 24 text

Was können wir jetzt damit machen? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 24

Slide 25

Slide 25 text

Was können wir jetzt damit machen? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 25 = Spezifikation :pathToSpec: ../../build/spock-reports/ :numbered: Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Akzeptanztest include::{pathToSpec}demo.WebCalcSpec.adoc[tag=Bing- Rechner_aufrufen]

Slide 26

Slide 26 text

Was können wir jetzt damit machen? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 26

Slide 27

Slide 27 text

Was haben wir erreicht? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 27 Anwendung Tests Test- Report Spec

Slide 28

Slide 28 text

Was haben wir erreicht? Was wollen wir erreichen? DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 28 Anwendung Tests Test- Report Spec

Slide 29

Slide 29 text

Also schreiben wir eine Spezifikation… DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 29 = Spezifikation include::config.adoc[] Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Acceptancetests ==== User calls Calculator [cols="1,10"] |=== | Given | User is on the main page | When | User enters 'calc' as search-term and submits the form | Then | the search result displays a calculator |===

Slide 30

Slide 30 text

…welche durch das einfache Format maschinenlesbar ist DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 30 = Spezifikation include::config.adoc[] Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Acceptancetests ==== User calls Calculator [cols="1,10"] |=== | Given | User is on the main page | When | User enters 'calc' as search-term and submits the form | Then | the search result displays a calculator |===

Slide 31

Slide 31 text

Das Testgerüst wird extrahiert… DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 31 = Spezifikation include::config.adoc[] Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Acceptancetests ==== User calls Calculator [cols="1,10"] |=== | Given | User is on the main page | When | User enters 'calc' as search-term and submits the form | Then | the search result displays a calculator |=== @Ignore("not implemented") def "User calls Calculator"() { given: "User is on the main page" when: "User enters 'calc' as search-term and submits the form" then: "the search result displays a calculator" }

Slide 32

Slide 32 text

… und ausgeführt wird DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 32

Slide 33

Slide 33 text

…wodurch die Spezifikation den echten Test zeigt DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 33 = Spezifikation include::config.adoc[] Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Acceptancetests ==== User calls Calculator [cols="1,10"] |=== | Given | User is on the main page | When | User enters 'calc' as search-term and submits the form | Then | the search result displays a calculator |=== = Spezifikation include::config.adoc[] Dieses Projekt soll den Benutzer durch zusätzliche Features länger auf der Suchseite halten um höhere Werbeinnahmen zu generieren. == Story: Taschenrechner Als Benutzer möchte ich bei Eingabe des Suchbegriffs "Rechner" oder bei der Eingabe einer Mathematischen Rechnung einen Taschenrechner als Web-Anwendung angezeigt bekommen, so daß ich nicht die Suche Verlassen muss === Acceptancetests include::{pathToSpec}acceptance.Specification2bSpec.adoc[ tag=User_calls_Calculator]

Slide 34

Slide 34 text

… die Applikation wird entwickelt DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 34

Slide 35

Slide 35 text

Zusammenfassung DB Systel GmbH | Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 35 Teil-Spec Test- Gerüst implementierte Tests implementierte Features getestete Spec

Slide 36

Slide 36 text

+ =

Slide 37

Slide 37 text

Vielen Dank für Ihre Aufmerksamkeit! [email protected] https://docs-as-co.de @docToolchain Clipart: presentermedia.com, licenced to [email protected] www.dbsystel.de