Co należy przetestować, zależy od czynników takich jak typ aplikacji, zespół programistyczny, ilość starszego kodu i używana architektura. Sekcje poniżej zawierają informacje o tym, co początkujący powinien wziąć pod uwagę przy planowaniu, co warto przetestować w aplikacji.
Organizacja katalogów testowych
Typowy projekt w Android Studio zawiera 2 katalogi, w których przeprowadzane są testy – w zależności od środowiska wykonawczego. Uporządkuj testy w następujących katalogach zgodnie z opisem:
- Katalog
androidTest
powinien zawierać testy wykonywane na rzeczywistych lub wirtualnych urządzeniach. Do takich testów zaliczają się testy integracji, testy kompleksowe i inne, w których tylko JVM nie może zweryfikować funkcji aplikacji. - Katalog
test
powinien zawierać testy wykonane na komputerze lokalnym, takie jak testy jednostkowe. W przeciwieństwie do powyższych testów są to testy wykonywane na lokalnej maszynie wirtualnej JVM.
Niezbędne testy jednostkowe
Zgodnie ze sprawdzonymi metodami korzystaj z testów jednostkowych w tych przypadkach:
- Testy jednostkowe elementów ViewModels i prowadzących.
- Testy jednostkowe warstwy danych, zwłaszcza repozytoriów. Większość warstwy danych powinna być niezależna od platformy. Dzięki temu podwójne preparaty testowe zastępujące moduły bazy danych i zdalne źródła danych w testach. Zapoznaj się z przewodnikiem na temat używania podwójnej precyzji kodu na Androidzie.
- Testy jednostkowe innych warstw niezależnych od platformy, takich jak warstwa Domena, pod kątem przypadków użycia i interaktywnych elementów.
- Testy jednostkowe klas narzędzi, takich jak operacje manipulacyjne ciągami tekstowymi i działania matematyczne.
Testowanie brzegowych przypadków
Testy jednostkowe powinny skupiać się zarówno na przypadkach normalnych, jak i skrajnych. Skrajne przypadki to rzadkie sytuacje, których nie wykrywają testerzy ani większe testy. Przykłady:
- Operacje matematyczne z wykorzystaniem liczb ujemnych, 0 i warunków granic
- Wszystkie możliwe błędy połączenia sieciowego.
- uszkodzone dane, np. nieprawidłowy format JSON;
- Symulowanie pełnego miejsca na dane podczas zapisywania w pliku.
- Obiekt odtwarzany w trakcie procesu (np. działanie przy rotacji urządzenia).
Testy jednostkowe, których należy unikać
Niektórych testów jednostkowych nie należy unikać ze względu na ich niską wartość:
- Testy, które weryfikują prawidłowe działanie platformy lub biblioteki, a nie Twojego kodu.
- Punkty wejścia platformy, takie jak działania, fragmenty lub usługi, nie powinny mieć logiki biznesowej, więc testowanie jednostkowe nie powinno być priorytetem. Testy jednostkowe działań mają niewielką wartość, ponieważ obejmowałyby głównie kod platformy i wymagały bardziej skomplikowanej konfiguracji. Obejmują one testy instrumentalne, np. testy interfejsu.
Testy interfejsu
Istnieje kilka rodzajów testów interfejsu, które warto wykonać:
- Testy interfejsu ekranu pozwalają sprawdzać kluczowe interakcje użytkowników na jednym ekranie. Realizują one działania, takie jak klikanie przycisków, pisanie w formularzach i sprawdzanie widocznych stanów. Dobrym punktem wyjścia jest jedna klasa testowa na każdy ekran.
- Testy przepływu użytkowników lub Testy nawigacji, które obejmują najczęstsze ścieżki. Te testy symulują użytkownika poruszającego się przez proces nawigacji. Są to proste testy, przydatne do sprawdzania awarii w czasie działania podczas inicjowania.
Inne testy
Istnieją bardziej specjalistyczne testy, takie jak testy zrzutów ekranu, testy wydajności i małpy. Testy możesz też dzielić na kategorie według celu, np. regresji, ułatwień dostępu i zgodności.
Więcej materiałów
Aby przeprowadzić testy w izolacji, często trzeba zastąpić zależności testowanego podmiotu zależnościami fałszywymi lub pozornymi, czyli ogólnie nazywanymi „podwójnymi testami”. Przeczytaj o tym w artykule Używanie podwójnej precyzji na potrzeby testów na Androidzie.
Aby dowiedzieć się, jak tworzyć testy jednostkowe i testy interfejsu, zapoznaj się z ćwiczeniami z programowania dotyczącymi testowania.