Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spock and AsciiDoc - a perfect match

Spock and AsciiDoc - a perfect match

want to give feedback? => https://rdmueller.github.io/feedback

Write the Docs, Karlsruhe, 19.06.2019
https://www.meetup.com/de-DE/Write-the-Docs-Karlsruhe/events/261826329/

Der Focus dieses Talks ist etwas spezifischer: Automatisieren von Test-Reports!

Hmmm. Klingt erstmal nicht so richtig... spannend.
Es wird aber spannend, und zwar sehr, wenn man Tests und Tooling so ausrichtet, dass man am Ende mehr in den Händen hält, als einen reinen Test Report! Aus dem Spock- und Asciidoc-Universum lassen sich einige Feature elegant verknüpfen; um z.B. Screenshots aus den Tests in die Dokumentation einzubetten. Garniert mit docs-as-code und continuous documentation erhält man so auto-updates für UI-User-Doku die auf Screenshots aufbaut. Wenn man möchte; also den Test für alle verfügbaren Sprachvarianten laufen lässt, sogar mehrsprachig! Doch die Reise endet noch nicht hier! Wie wäre es z.B. mit einer Spec, die vorab schon tests beinhaltet?

Also bleibt gespannt!

Wir freuen uns auf euch!

https://spockasciidocreports.netlify.com/spock-reports.html
https://github.com/docToolchain/SpockAsciiDocReports
https://docs-as-co.de
https://dbsystel.de

Ralf D. Müller

June 19, 2019
Tweet

More Decks by Ralf D. Müller

Other Decks in Technology

Transcript

  1. 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
  2. 3 DB Systel. Digital bewegen. Gemeinsam. Digital | bewegen |

    verstehen | anwenden | begleiten | vernetzen | denken und handeln DB Systel. Digital bewegen. Gemeinsam.
  3. Was ist Spock? DB Systel GmbH | Ralf D. Müller

    | Write the Docs | Karlsruhe 19.06.2019 4
  4. 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) }
  5. 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) }
  6. 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) }
  7. 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 }
  8. 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 }
  9. Was ist AsciiDoc? DB Systel GmbH | Ralf D. Müller

    | Write the Docs | Karlsruhe 19.06.2019 10
  10. 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
  11. AsciiDoc – Special Features: Includes DB Systel GmbH | Ralf

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

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

    D. Müller | Write the Docs | Karlsruhe 19.06.2019 14
  14. ?

  15. 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 }
  16. Was liefern die Tests als Ausgabe? DB Systel GmbH |

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

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

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

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

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

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

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

    Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 24
  24. 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]
  25. Was können wir jetzt damit machen? DB Systel GmbH |

    Ralf D. Müller | Write the Docs | Karlsruhe 19.06.2019 26
  26. Was haben wir erreicht? DB Systel GmbH | Ralf D.

    Müller | Write the Docs | Karlsruhe 19.06.2019 27 Anwendung Tests Test- Report Spec
  27. 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
  28. 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 |===
  29. …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 |===
  30. 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" }
  31. … und ausgeführt wird DB Systel GmbH | Ralf D.

    Müller | Write the Docs | Karlsruhe 19.06.2019 32
  32. …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]
  33. … die Applikation wird entwickelt DB Systel GmbH | Ralf

    D. Müller | Write the Docs | Karlsruhe 19.06.2019 34
  34. 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
  35. + =