KraQA #13

„Więcej testów/mniej kodu”. Prezentacji o tym (wymownym) tytule wysłuchali liczni uczestnicy naszego trzynastego spotkania na Barce. Pomimo „pechowej” liczby nic złego się nie stało: prowadzący nie stracił głosu, nie zabrakło piwa ani nawet deszcz nie padał. Po prostu pięknie:)

Automatyzacja testów to nieustannie jeden z najgorętszych tematów poruszanych w testerskim gronie. Jak to zwykle bywa w przypadku trudnych zagadnień – najcenniejsze informacje można uzyskać bezpośrednio od „weteranów”. Jeden z takich specjalistów – Michał Gaworski – Przyniósł swój pokaźny bagaż doświadczeń na naszą barkę. Michał skupił się w swojej prelekcji na zagadnieniu organizacji kodu testów w taki sposób by z jednej strony zapewnić ich maksymalną czytelność i wygodę użycia, a przy okazji zapewnić że ich utrzymywalność jest łatwa i nie marnuje cennego czasu.

Bazując na doświadczeniach wyniesionych z licznych projektów, w których brał udział, Prowadzący przedstawił najpierw szereg złych praktyk i pozornie niewinnych problemów, które w krótkim czasie narastają lawinowo i sprawiają, że naprawianie testów i utrzymanie kodu zaczyna zajmować cały dostępny czas. Przytoczył tu zgrabną analogię do „osobliwości” w fizyce, czyli stanu w którym jeden z parametrów, w tym wypadku czas tworzenia nowych testów, dąży do nieskończoności. Za główny powód tego problemu Michał uważa duplikację kodu testów.

Na szczęście nie zostaliśmy pozostawieni wobec tych trudności sami. W drugiej części prezentacji Prowadzący pokazał jak za pomocą dobrego framework’a, rozumianego nie tylko jako narzędzie ale też cały sposób organizacji pracy (bardzo ważne!) ustrzec się wielu problemów. Metodą która można zastosować w kodzie jest stworzenie trzech osobnych warstw: Testów, DSL (Domain Specific Language, jezyk dedykowany do wybranego framework’a) i Implementacji. Na zmiany w aplikacji możemy reagować przez punktowe, jednokrotne aktualizacje kodu w warstwie implementacyjnej. Jako przykład Michał pokazał nam swoje testy oparte o przedstawianą już kiedyś na KraQA metodologię Page Object Pattern i „język” Cucumber.

Prezentacja niewątpliwie błyskotliwa i z wieloma mądrymi wnioskami, które nagle okazują się być oczywiste i na wyciągnięcie ręki. Ktokolwiek szukał inspiracji do swojej pracy z testami automatycznymi z pewnością się nie zawiódł.