Głębiej
Skup się na niezmiennikach:
- Zdefiniuj własności (przemienność, idempotencja, monotoniczność).
- Generuj wejścia i „shrinkuj” przypadki błędów.
- Uzupełnia unit testy, znajdując nieoczekiwane edge-case’y.
Przykłady
Własność sortowania:
Dla dowolnej listy L: sort(L) jest uporządkowana i ma te same elementy
Typowe pułapki
- Zbyt słabe własności.
- Nieskończone generatory i wolne testy.
- Ignorowanie shrinkowanych kontrprzykładów.
Pytania uzupełniające na rozmowie
- Jak wybierasz dobre własności?
- Czym jest shrinking i czemu jest ważny?
- Kiedy property-based nie ma sensu?