Mądrość Cucumber: Strategie testowania
Dowiedz się, jak Cucumber wpisuje się w skuteczne strategie testowania, łącząc biznesowe scenariusze z testami technicznymi. Poznaj Piramidę i Górę Lodową Testów, które ułatwiają zrównoważone pokrycie testami.
Na tej stronie
Dlaczego strategie testowania są ważne
Podejście do testowania to nie tylko liczba testów — chodzi o umieszczenie odpowiednich rodzajów testów na właściwych poziomach. Zbyt często zespoły w dużej mierze polegają na testach end-to-end, co spowalnia pętlę zwrotną i sprawia, że zestawy testów stają się podatne na błędy. Z drugiej strony, skupianie się wyłącznie na niskopoziomowych testach jednostkowych pozostawia luki w tym, jak system jest rozumiany przez nietechnicznych interesariuszy.
Skuteczna strategia równoważy oba te światy: szybkie, techniczne testy pod powierzchnią oraz jasne, zrozumiałe dla biznesu testy powyżej.
W swojej książce „Succeeding with Agile: Software Development Using Scrum” Mike Cohn wprowadził pojęcie piramidy testów, aby podkreślić, że powinno się mieć więcej testów jednostkowych niż testów pełnostosowych (full-stack).
Piramida testów
Model piramidy sugeruje:
- Warstwa podstawowa: duża liczba szybkich i niezawodnych testów jednostkowych.
- Warstwa środkowa: testy integracyjne weryfikujące wspólną pracę komponentów.
- Warstwa górna: mniejszy zestaw testów end-to-end walidujących zachowanie systemu.
Taki kształt zapewnia szybką informację zwrotną, łatwość utrzymania i szerokie pokrycie bez przeciążania zestawu wolnymi, podatnymi na uszkodzenia testami.
Góra lodowa testów
Cucumber wprowadza inną metaforę: Górę Lodową Testów.
Wyobraź sobie, że Piramida Testów stała się Górą Lodową Testów pływającą w wodzie. Nad wodą znajdują się wszystkie testy czytelne dla biznesu. Pod wodą znajdują się wszystkie testy, które potrafią przeczytać tylko osoby techniczne w zespole.
Podkreśla to istotne rozróżnienie:
- Nad wodą: scenariusze napisane językiem biznesowym (Cucumber), które interesariusze mogą przeczytać i którym mogą zaufać.
- Pod wodą: testy jednostkowe i integracyjne, które widzą tylko deweloperzy, ale które zapewniają kluczową głębię i bezpieczeństwo.
Razem zapewniają, że system jest testowany zarówno pod kątem poprawności, jak i wspólnego zrozumienia.
Wprowadzenie w życie
- Używaj testów jednostkowych jako fundamentu — szybkich i licznych.
- Dodawaj testy integracyjne tam, gdzie istotne jest zachowanie między komponentami.
- Utrzymuj scenariusze Cucumber skupione na kluczowych zachowaniach biznesowych.
- Unikaj przeciążania Cucumber technicznymi sprawdzianami — służy do komunikacji, a nie do budowania samego pokrycia.
Podsumowanie
Najskuteczniejsza strategia testowania łączy przejrzystość z siłą techniczną. Z piramidą jako przewodnikiem i górą lodową jako przypomnieniem możesz zbudować zestaw testów, który nie tylko waliduje system, ale także wspiera współpracę w całym zespole.
Podziękowania
Ten artykuł czerpie inspirację z książki The Cucumber for Java Book autorstwa Seba Rose'a, Matta Wynne'a i Aslaka Hellesøy'a oraz z koncepcji Piramidy Testów z książki Succeeding with Agile Mike'a Cohna. Oba te ujęcia wzbogacają sposób, w jaki myślimy o strategiach testowania we współczesnym tworzeniu oprogramowania.
