Pewnie masz w swoim projekcie takie testy, które niby działają, ale nie są najpiękniejsze? Albo takie, które zostały napisane dawno temu i nie wiadomo do końca co sprawdzają? Jest kilka małych kroków, które możesz przejść, żeby małym wkładem pracy nieco odpicować Twoje testy.

 

1. Zmień nazwy

Raport testowy powinien być dobrą dokumentacją tego co robi system. Jeśli testy nazywają się testGrossPrice albo co gorsza test2112, to średnio wiadomo co w nim się dzieje, prawda? Wystarczy zastanowić się co ten test tak naprawdę sprawdza, jakie są okoliczności i oczekiwany wynik. Nie musisz od razu orać wszystkich testów, ale sukcesywnie upiększać po jednym teście. Jak mówią starzy górale one test a day keeps bugs away (czy jakoś tak).

 

2. Wydziel metody

Kiedy w teście jest trochę kodu, który można określić jednym zdaniem, może czas na metodę pomocniczą? Testy powinno się czytać jak język naturalny. Ułatw pracę tym, którzy przyjdą po Tobie i skróć test, zwiększając równocześnie jego czytelność.

 

3. Wydziel zmienne

Dzisiaj wiesz doskonale dlaczego mnożysz cenę przez 1.23-0.05, ale gwarantuję Ci, że za kilka tygodni zapomnisz. Może warto zapakować takie magiczne liczby w jakieś pudełeczko jako zmienną lokalną, albo stałą.

 

4. Użyj rozdzielaczy

Znasz konwencję given-when-then? Służy zwiększeniu czytelności testów i rozdzieleniu ich logiki. W sekcji given umieść ekosystem danego testu. To takie mikrośrodowisko, w którym test będzie uruchamiany. W sekcji when dzieje się to co chcesz przetestować. To operacja lub operacje, które coś zmieniają. To czy efekt działania tych operacji jest zgodny z oczekiwaniami sprawdź w sekcji then. Tam jest miejsce asercji. Ta konwencja wzięła się z BDD i jest szeroko stosowana w wielu projektach. Testy z użyciem Spocka wykorzystują ją nawet jako słowa kluczowe!

 

5. Zacznij od najbardziej ogólnych asercji

Jeśli sprawdzasz kilka rzeczy (co może się zdarzyć w ramach jednego scenariusza), to zaczynaj od „najszerszych” asercji. Jeśli na przykład sprawdzasz, czy na ostatnim miejscu w kolekcji znajduje się właściwa wartość, to może warto sprawdzić najpierw, czy ta kolekcja nie jest pusta, potem czy ma właściwą ilość elementów, a dopiero potem tę wartość. To może Cię uchronić przed zbędnym debugowaniem.

 

Już niedługo zaczynam serię Pimp My Tests (edit: już jest na YouTube)  gdzie będę poprawiać testy. Jeśli masz jakiś niedoskonały test pod ręką i możesz się nim podzielić, to po prostu napisz do mnie i wklej kod z krótkim komentarzem. Być może odpicuję właśnie Twój test!

Jeśli masz jakieś swoje sprawdzone metody na poprawianie testów to podziel się w komentarzu 🙂

Kategorie: Testy