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

1000 auf einen Streich

1000 auf einen Streich

Das man als Entwickler:in nicht nur Code, sondern auch Tests zu schreiben hat, ist ein alter Hut. Trotzdem ist es für viele eine lästige und monotone Arbeit. Außerdem ist es noch lange nicht garantiert, dass Unit-Tests auch wirklich alle Grenz- und sonstigen Fälle abdecken. Ein moderner Ansatz ist eigenschaftsbasiertes Testen, bei dem eine abstrakte Bedingung spezifiziert und dann vom Testframework automatisch überprüft wird. In diesem Vortrag gebe ich einen Überblick und zeige Beispiele, in welchen Domänen diese praktisch einsetzbar sind.

Errata: Folie 51 ist für jqwik nicht korrekt, da "size" eine untergeordnete Rolle bei den Generatoren spielt

Weiterführende Ressourcen: https://lars.hupel.info/articles/property-testing-ressourcen/

Lars Hupel

May 10, 2023
Tweet

More Decks by Lars Hupel

Other Decks in Programming

Transcript

  1. 2

  2. 5

  3. “Program testing can be a very effective way to show

    the presence of bugs, but it is hopelessly inadequate for showing their absence”
  4. Binäre Suche, die Zweite 21 int mid = (low +

    high) / 2; assert low <= mid; assert mid <= high;
  5. Property Binäre Suche, die Zweite 22 assert low <= high;

    assert 0 <= low; int mid = (low + high) / 2; assert low <= mid; assert mid <= high;
  6. 23

  7. 26

  8. 32

  9. 37

  10. Ja, aber … Sortierfunktionen implementiere ich nicht! Was ist mit

    meiner Geschäftslogik? Soll ich jetzt den ganzen Code spezifizieren?
  11. “One way is to make it so simple that there

    are obviously no deficiencies
  12. “One way is to make it so simple that there

    are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.”
  13. 43

  14. 44

  15. 51 Arbitrary suchen beginnend mit size = 1 … T

    erzeugen Property füttern T schrumpfen size += 1 Property füttern
  16. 52

  17. 53

  18. 54

  19. 56

  20. Central Bank Digital Currency 57 CBDC Banknotes Bank deposits and

    e-money Issued by the central bank Digital money
  21. 58

  22. 60

  23. 61

  24. 62

  25. 63

  26. 64

  27. Fazit 1 Der Einstieg ist leicht. Man muss es bloß

    tun. 2 PT erzwingt besseres Design. 3 Designfehler werden früh aufgedeckt. 4 PT ist nicht das Allheilmittel.
  28. Bildquellen • Edsger W. Dijskstra: Hamilton Richards, CC-BY- SA 3.0,

    https://commons.wikimedia.org/w/index.php?ti tle=File:Edsger_Wybe_Dijkstra.jpg&oldid=7102 50942 • ER-Modell: Jhon, CC-BY-SA 4.0, https://commons.wikimedia.org/w/index.php?ti tle=File:Scd_model.png&oldid=498684760 • BPMN: Mikelo Skarabo, CC-BY-SA 4.0, https://commons.wikimedia.org/w/index.php?ti tle=File:BPMN- AProcessWithNormalFlow.svg&oldid=7345119 59 • Tony Hoare: Rama, CC-BY-SA 2.0, https://commons.wikimedia.org/w/index.php?ti tle=File:Sir_Tony_Hoare_IMG_5125.jpg&oldid= 732060083