Testy End To End (E2E, funkcjonalne) – testy sprawdzające całe funcjonalności biznesowe, startują z poziomu interfejsu graficznego, przeprowadza je tester manualny lub robot.
Testy integracyjne – testy sprawdzające działanie połączonych poszczególnych modułów, np. testowanie zachowania programu podczas łączenia się z bazą danych lub zewnętrznymi serwisami.
Testy jednostkowe – testy weryfikujące poprawność działania pojedynczych elementów programu. Sprawdzają tylko logikę biznesową bez łączenia się z zewnętrznymi komponentami. Do ich pisania wykorzystujemy popularne frameworki, takie jak: JUnit5 czy mockito 2. Pierwszy z nich służy do uruchamiania testów i tworzenia assercji, drugi zaś wykorzystywany jest głównie do tworzenia MOCKÓW – specjalnych obiektów, które mają symulować zachowanie prawdziwych obiektów.
Typy obiektów pomocniczych stosowanych w testach jednostkowych
Stub
Jest to obiekt zawierajacy przykładową implementajcę kodu, który chcemy przetestować. Pozwala na określenie zachowania tego obiektu. Jest to ręczna implementacja danych zależności, która może być wystarczająca w niewielkich projektach.
Mock
Jest to obiekt tak samo jak stub, symulujący zachowanie prawdziwego obiektu, jednak zapewnia możliwość weryfikacji jego zachowania oraz daje znacznie więcej funkcjonalności. Jest tworzony przy wykorzystaniu biblioteki mockito.
Spy
Jest otoczką na prawdziwy obiekt (wrapper), którego działanie może śledzić ale bez zmiany jego zachowania. Jest to obiekt hybrydowy, ponieważ może być częściowo mockiem, a częsciwo prawdziwym obiektem.
TDD - Test Driven Development
TDD jest podejściem programistycznym, polegającym na napisaniu najpierw testu jednostkwego, a w drugiej kolejności zaimplementowaniu do niego funkcjonaloności. Powyższy graf przedstawia jak poprawnie powinnien wyglądać jeden cykl tej metodyki: RED – piszemy test jednostkowy, który powinien zakończyć się niepowodzeniem, GREEN – piszemy kod (jak najmniej!), żeby test napisany we wcześniejszym kroku zakończył się powodzeniem, REFACTOR – poprawiamy napisany kod (o ile jest to potrzebne).