|
73 | 73 | } |
74 | 74 | ◊meetups{ |
75 | 75 |
|
| 76 | + ◊meetup[#:title "28.01.26"]{ |
| 77 | + ◊par{ |
| 78 | + The next meetup will take place on the 28.01.26 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
| 79 | + } |
| 80 | + ◊div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{ |
| 81 | + ◊orga{18:45 Doors open & Welcome} |
| 82 | + ◊p[#:class ""]{◊span[#:class "font-medium"]{Introduction to Property-Based Testing} (Stefan)} |
| 83 | + ◊abstract{ |
| 84 | + ◊p[#:class "my-2"]{ |
| 85 | + How can we test our software, find bugs and make sure that it works as intended -- without time-consumingly hand-crafting example-based tests, which are still likely to miss important cases? |
| 86 | + } |
| 87 | + ◊p[#:class "my-2"]{ |
| 88 | + Originating from Haskell's QuickCheck and the world of functional programming, *property-based testing* is one interesting approach to this problem: |
| 89 | + } |
| 90 | + ◊p[#:class "my-2"]{ |
| 91 | + instead of writing individual tests, inputs are automatically generated and the implementation is verified by checking expected relationships between inputs and outputs (*properties*). |
| 92 | + } |
| 93 | + ◊p[#:class "my-2"]{ |
| 94 | + This introduction will cover the basics: |
| 95 | + } |
| 96 | + ◊p[#:class "my-2"]{ |
| 97 | + Starting from testing purely functional code, we'll discuss strategies for expressing properties without actually knowing the correct solution beforehand and without having to duplicate implementation logic. |
| 98 | + } |
| 99 | + ◊p[#:class "my-2"]{ |
| 100 | + This will be most useful during development. |
| 101 | + } |
| 102 | + ◊p[#:class "my-2"]{ |
| 103 | + From there on, we'll also take a look into model-based/stateful property tests, which can be used when you are not in full control of the system-under-test, e.g. for testing non-functional stateful code/interfaces and already-existing real-world systems. |
| 104 | + } |
| 105 | + ◊p[#:class "my-2"]{ |
| 106 | + Afterwards I'd like to hear from *YOU*: |
| 107 | + ◊ul[#:class "list-inside list-disc"]{ |
| 108 | + ◊li{When did you use property testing?} |
| 109 | + ◊li{What was a surprising or interesting property that helped you specify system behavior?} |
| 110 | + ◊li{Can you share further strategies for expressing properties?} |
| 111 | + } |
| 112 | + } |
| 113 | + } |
| 114 | + ◊orga{Food, talking, coding, whatever} |
| 115 | + ◊orga{22.00 End} |
| 116 | + } |
| 117 | + } |
| 118 | +
|
76 | 119 | ◊meetup[#:title "03.12.25"]{ |
77 | 120 | ◊par{ |
78 | | - The next meetup will take place on the 29.10.25 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
| 121 | + This meetup took place on the 29.10.25 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
79 | 122 | } |
80 | 123 | ◊div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{ |
81 | 124 | ◊orga{18:45 Doors open & Welcome} |
@@ -124,7 +167,7 @@ Neat tricks welcome :) |
124 | 167 |
|
125 | 168 | ◊meetup[#:title "29.10.25"]{ |
126 | 169 | ◊par{ |
127 | | - The this meetup took place on the 29.10.25 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
| 170 | + This meetup took place on the 29.10.25 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
128 | 171 | } |
129 | 172 | ◊div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{ |
130 | 173 | ◊orga{18:45 Doors open & Welcome} |
|
0 commit comments