Slide 1

Slide 1 text

Vom Test zur Spezifikation und zurück DB Systel GmbH | Christian Fischer, Ralf D. Müller Spock und AsciiDoc + =

Slide 2

Slide 2 text

Was ist Spock? DB Systel GmbH | Christian Fischer | Ralf D. Müller 2 Leonard Brüning

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Was ist Spock? DB Systel GmbH | Christian Fischer | Ralf D. Müller 4 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 5

Slide 5 text

Was ist Spock? DB Systel GmbH | Christian Fischer | Ralf D. Müller 5 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 6

Slide 6 text

Was ist Spock? DB Systel GmbH | Christian Fischer | Ralf D. Müller 6 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 7

Slide 7 text

Was ist Spock? DB Systel GmbH | Christian Fischer | Ralf D. Müller 7 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 8

Slide 8 text

Was ist AsciiDoc? DB Systel GmbH | Christian Fischer | Ralf D. Müller 8

Slide 9

Slide 9 text

Was ist AsciiDoc? DB Systel GmbH | Christian Fischer | Ralf D. Müller 9 = 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 10

Slide 10 text

AsciiDoc – Special Features: Includes DB Systel GmbH | Christian Fischer | Ralf D. Müller 10

Slide 11

Slide 11 text

AsciiDoc – Special Features: Tabellen DB Systel GmbH | Christian Fischer | Ralf D. Müller 11

Slide 12

Slide 12 text

AsciiDoc – Special Features: Diagramme DB Systel GmbH | Christian Fischer | Ralf D. Müller 12

Slide 13

Slide 13 text

? DB Systel GmbH | Christian Fischer | Ralf D. Müller 13

Slide 14

Slide 14 text

Nochmal ein Blick auf Spock… DB Systel GmbH | Christian Fischer | Ralf D. Müller 14 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 15

Slide 15 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 15

Slide 16

Slide 16 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 16

Slide 17

Slide 17 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 17

Slide 18

Slide 18 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 18

Slide 19

Slide 19 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 19 Tilman Ginzel

Slide 20

Slide 20 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 20

Slide 21

Slide 21 text

Was liefern die Tests als Ausgabe? DB Systel GmbH | Christian Fischer | Ralf D. Müller 21

Slide 22

Slide 22 text

Was können wir jetzt damit machen? DB Systel GmbH | Christian Fischer | Ralf D. Müller 22

Slide 23

Slide 23 text

Was können wir jetzt damit machen? DB Systel GmbH | Christian Fischer | Ralf D. Müller 23 = 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 24

Slide 24 text

Was können wir jetzt damit machen? DB Systel GmbH | Christian Fischer | Ralf D. Müller 24

Slide 25

Slide 25 text

Was haben wir erreicht? DB Systel GmbH | Christian Fischer | Ralf D. Müller 25 Anwendung Tests Test- Report Spec

Slide 26

Slide 26 text

Was haben wir erreicht? Was wollen wir erreichen? DB Systel GmbH | Christian Fischer | Ralf D. Müller 26 Anwendung Tests Test- Report Spec

Slide 27

Slide 27 text

Zusammenfassung DB Systel GmbH | Christian Fischer | Ralf D. Müller Feature-Spec (draft) implementierte Tests Acceptance- Test (Ziel) Test-Gerüst

Slide 28

Slide 28 text

Zusammenfassung DB Systel GmbH | Christian Fischer | Ralf D. Müller Acceptance- Test (Ziel) Test-Gerüst implementierte Tests Unvollständige Test-Liste Test schreiben Test begrünen refactor Tests ergänzen

Slide 29

Slide 29 text

Zusammenfassung DB Systel GmbH | Christian Fischer | Ralf D. Müller Feature-Spec (draft) implementierte Features getestete Spec (final) Acceptance Test(s) (final) implementierte Tests Acceptance- Test (Ziel) Test-Gerüst selektierte Tests

Slide 30

Slide 30 text

Also schreiben wir eine Spezifikation… DB Systel GmbH | Christian Fischer | Ralf D. Müller 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

…welche durch das einfache Format maschinenlesbar ist DB Systel GmbH | Christian Fischer | Ralf D. Müller 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 |===

Slide 32

Slide 32 text

Das Testgerüst wird extrahiert… DB Systel GmbH | Christian Fischer | Ralf D. Müller 32 = 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 33

Slide 33 text

… und ausgeführt wird DB Systel GmbH | Christian Fischer | Ralf D. Müller 33

Slide 34

Slide 34 text

…wodurch die Spezifikation den echten Test zeigt DB Systel GmbH | Christian Fischer | Ralf D. Müller 34 = 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 35

Slide 35 text

… die Applikation wird entwickelt DB Systel GmbH | Christian Fischer | Ralf D. Müller 35

Slide 36

Slide 36 text

Fazit DB Systel GmbH | Christian Fischer | Ralf D. Müller 36

Slide 37

Slide 37 text

+ =

Slide 38

Slide 38 text

Vielen Dank für Ihre Aufmerksamkeit! [email protected] [email protected] https://rdmueller.github.io/feedback Clipart: presentermedia.com, licenced to [email protected] www.dbsystel.de