Wprowadzenie
Firebase Test Lab
jest infrastrukturą opartą o chmurę (cloud
) przeznaczoną do testowania aplikacji na wielu urządzeniach (rzeczywistych i wirtualnych) naraz. W rezultacie zwracane są wyniki w postaci logów, zrzutów ekranu i wideo. Testy przeprowadzane są w partiach zwanych macierzami testowymi (test matrix
) w której aplikacja jest testowana dla wielu kombinacji konfiguracji urządzeń (orientacja, język, urządzenia, wersja systemu itp). Wykorzystanie platformy Test Lab spełnia realizację instrumentalnych testów jednostkowych wykonywanych na wielu poziomach testowania (testy jednostkowe, integracyjne, systemowe). Co więcej dzięki zastosowaniu trybu demo mode
przetestowanie gier staje się znacząco ułatwione.
Urządzenia
Urządzenia są na bieżąco aktualizowane i konfigurowane oraz z uwagi na zachowanie prywatności i bezpieczeństwa użytkowników czyszczone po przeprowadzonych testach (usuwana jest aplikacja i jej dane). Ze względu na niższe koszty, dłuższy możliwy czas na przeprowadzenie testów, większą dostępność i szybsze zwracanie rezultatów jeśli to możliwe rekomendowane jest użycie w procesie deweloperskim urządzeń wirtualnych. Jednakże w przypadku wersji aplikacji przeznaczonych do wydania (release
), wprowadzenia nowej funkcjonalności, wykorzystania cech sprzętowych czy zmian w interfejsie graficznym należy przeprowadzić testy w oparciu o urządzenia fizyczne. Zanim jednak aplikacja zostanie poddana testom w Test Lab warto sprawdzić poprawność testów najpierw na lokalnym urządzeniu lub emulatorze.
Testowanie
Test Lab umożliwia wykonanie testów dla załączonego pliku APK
lub kodu aplikacji na dwa sposoby: uruchamiając testy instrumentalne
przy użyciu Espresso
i UI Automator
lub przygotowując je poprzez narzędzie Robo test
. Następnie należy dokonać wyboru macierzy
urządzeń testowych i konfiguracji. Testy można przeprowadzić nie tylko z konsoli Firebase (Firebase console
), ale także z poziomu Android Studio
, wiersza poleceń gcloud CLI
oraz systemów ciągłej integracji (CI
) takich jak m.in. Jenkins
, Bitrise
i Circle CI
. Wyniki przykładowych testów instrumentalnych dla zadanej macierzy w konsoli Firebase prezentują się następująco.
Widok szczegółów testów na danym urządzeniu dostarcza kompletnych informacji nt metod testowych, logów, rezultatów, a nawet nagranie wideo z przeprowadzonych testów.
W przypadku potrzeby rozróżnienia fragmentów kodu ze względu na wykonanie przez Test Lab można posłużyć się poniższym kodem.
Robo test
Robo test
jest narzędziem testowym zintegrowanym z Test Lab, który na podstawie analizy struktury interfejsu graficznego aplikacji automatycznie symuluje zachowanie użytkownika. Przeprowadza symulacje działań w tej samej kolejności dla danej konfiguracji i ustawień dzięki czemu możliwa jest weryfikacja poprawek i przeprowadzenie testów regresji. Dodatkowo załącza pliki logów, zrzuty ekranu, wideo i diagramy przepływu akcji co pomaga w znalezieniu błędów, a także podczas każdego testu rejestruje statystyki dotyczące podjętych działań i wywołanych ekranów. Dodanie skryptów Robo
pozwala na przejęcie większej kontroli nad testami poprzez ręczne wprowadzenie działań. Należy mieć jednak na uwadzę, że testy Robo wykorzystują Android API
do bezpośredniego wykonywania działań na widżetach interfejsu użytkownika. Jeśli testowany ekran nie używa widżetów UI
wówczas testy przeprowadzane są zgodnie z zasadą małpki testowej (Monkey Actions
), tzn. zachodzi symulacja dotknięć w losowych miejscach na ekranie. Aby temu zapobiec można użyć tryb demo mode
oparty o mechanizm pętli gry Game Loop Test
.