Ten przewodnik opisuje, jak uruchomić test instrumentacji, test Robo lub test pętli gry za pomocą gcloud CLI.
Pełną listę poleceń gcloud
, których możesz używać w aplikacji na Androida w Test Lab, znajdziesz w dokumentacji referencyjnej gcloud firebase test android
.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Krok 1. Konfigurowanie gcloud CLI
- Pobierz pakiet Google Cloud SDK.
- Sprawdź, czy instalacja jest aktualna:
gcloud components update
- Zaloguj się w gcloud CLI za pomocą konta Google:
gcloud auth login
- Skonfiguruj projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu Firebase:
gcloud config set project PROJECT_ID
Obejmuje to narzędzie gcloud CLI.
Krok 2. Sprawdzanie dostępnych urządzeń testowych
Aby wyświetlić urządzenia testowe i lokalizacje dostępne w przypadku testu, użyj tych poleceń gcloud.
Opcjonalnie możesz też pobrać przykładową aplikację Notatnik, aby od razu zacząć uruchamiać polecenia. Użyj pliku binarnego app-debug-unaligned.apk
i pliku testów pomiarowych app-debug-test-unaligned.apk
, które znajdują się w folderze NotePad/app/build/outputs/apk/
.
models list
: uzyskaj aktualną listę urządzeń z Androidem, na których możesz przeprowadzić testy.gcloud firebase test android models list
W wyniku polecenia:
- Kolumna
MODEL_ID
zawiera identyfikator, którego możesz później używać do uruchamiania testów na modelu urządzenia. - Kolumna
OS_VERSION_ID
zawiera wersje systemu operacyjnego obsługiwane przez urządzenie.
Przykładowe dane wyjściowe
- Kolumna
models describe
: uzyskaj więcej informacji o określonym urządzeniu z AndroidemMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Dane wyjściowe zawierają markę, producenta i wersje systemu operacyjnego modelu urządzenia, obsługiwane poziomy interfejsu API, obsługiwane interfejsy binarne aplikacji (ABI), daty wydania oraz informacje o tym, czy urządzenie jest fizyczne, czy wirtualne.
versions list
: uzyskaj listę obecnie dostępnych wersji systemu operacyjnego, na których możesz przeprowadzić testy.gcloud firebase test android versions list
Aby później przeprowadzać testy na wersji systemu operacyjnego Android, możesz użyć identyfikatora z jednej z 2 pierwszych kolumn danych wyjściowych polecenia (
OS_VERSION_ID
iVERSION
). Jeśli nie określisz wersji systemu operacyjnego Android, na których chcesz przeprowadzić test, zostanie użyta wersja domyślna wskazana w kolumnieTAGS
.Przykładowe dane wyjściowe
locales list
: uzyskaj aktualną listę języków, na których możesz przeprowadzić test.gcloud firebase test android versions list
Pierwsza kolumna danych wyjściowych polecenia,
LOCALE
, zawiera identyfikator, którego możesz użyć do przeprowadzenia testów w danym regionie. Jeśli nie określisz języków, na których chcesz przeprowadzić test, jako domyślny język zostanie użyty angielski.
Krok 3. Przeprowadzanie testu
Teraz, gdy znasz zakres modeli urządzeń, lokalizacji i wersji systemu operacyjnego dostępnych do testowania aplikacji, możesz określić urządzenia za pomocą polecenia gcloud firebase test android run
i flagi --device
, aby uruchomić testy Robo lub testy inkrementalne.
Przeprowadź test Robo
Nawet jeśli nie masz żadnych testów pomiarowych, nadal możesz szukać błędów w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczną kontrolę interfejsu użytkownika aplikacji. Test robota testuje aplikację, wykonując statyczną analizę różnych ścieżek w interfejsie użytkownika, a następnie indeksuje aplikację, aby znaleźć awarie i inne potencjalne problemy.
Aby uruchomić test Robo, uruchom to polecenie:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Jeśli nie podasz wartości parametru
--type
, parametr--type robo
będzie używany domyślnie. - Aby ułatwić sobie identyfikację i lokalizowanie w konsoli Firebase macierzy testowych, możesz użyć opcjonalnego flagi
--client-details matrixLabel="Example matrix label"
, aby oznaczyć matrycę testową. - Aby wyświetlić pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisz:
gcloud help firebase test android run
.
Zamiast podawać te argumenty w wierszu poleceń, możesz opcjonalnie podać je w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files
, aby dowiedzieć się, jak korzystać z tej funkcji.
Aby dowiedzieć się, jak analizować wyniki testu Robo, przeczytaj artykuł Analiza wyników testu.
Uruchom test narzędzi
Teraz użyj narzędzia wiersza poleceń gcloud
, aby uruchomić testy Espresso aplikacji Notatnika na określonych konfiguracjach urządzenia z Androidem. Aby uruchomić testy w app-debug-test-unaligned.apk
, użyj typu testu instrumentation
w ten sposób:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Jeśli w parametry
--type
jest podany testowy plik APK, parametr instrumentacji--type
jest domyślny.--test
- Aby ułatwić sobie identyfikowanie i lokalizowanie testowych tablic w konsoli Firebase, możesz użyć opcjonalnego flagi
--client-details matrixLabel="Example matrix label"
, aby oznaczyć testową tablicę. - Aby wyświetlić pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisz
gcloud help firebase test android run
.
Zamiast podawać te argumenty w wierszu poleceń, możesz opcjonalnie podać je w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files
, aby dowiedzieć się, jak korzystać z tej funkcji.
gcloud CLI obsługuje Android Test Orchestrator.
Orchestrator wymaga wersji AndroidJUnitRunner 1.1 lub nowszej. Aby ją włączyć, użyj flagi gcloud firebase test android run
z wartością --use-orchestrator
. Aby ją wyłączyć, użyj flagi --no-use-orchestrator
.
Możesz też kontrolować sposób, w jaki Test Lab uruchamia testy instrumentacji, za pomocą dodatkowych flag, które nie są wymienione powyżej. Możesz na przykład użyć flagi --test-targets
, aby przetestować pojedynczą klasę lub metodę klasy używaną przez testowy plik APK. Możesz też sprawdzić, czy test, który się nie powiódł, był niestabilny, czy nie, za pomocą flagi --num-flaky-test-attempts
, która określa liczbę prób ponownego uruchomienia testu, jeśli co najmniej 1 przypadek testowy nie powiedzie się z jakiegokolwiek powodu. Więcej informacji znajdziesz w artykule gcloud firebase test android run.
Raporty dotyczące pokrycia kodu w przypadku testów instrumentacji
Test Lab obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo. Jeśli masz jedno z tych narzędzi zintegrowane z kompilacją aplikacji, możesz uzyskać raport o zasięgu kodu w przypadku testów Test Lab, uruchamiając gcloud firebase test android run
z dodatkowymi argumentami. Jeśli Android Test Orchestrator nie jest włączony, wykonaj te czynności:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Jeśli generujesz raporty pokrycia kodu, korzystając jednocześnie z Android Test Orchestrator, zmień zmienne środowiskowe w ten sposób:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Gdy Test Lab zakończy wykonywanie testów, sprawdź raporty o zasięgu kodu w Google Cloud Storage:
- Otwórz link do konsoli Firebase, który narzędzie
gcloud
wydrukowało nad tabelą wyników testu w terminalu. - Kliknij na liście pod tym linkiem testowe wykonanie, aby otworzyć jego stronę z informacjami.
- Kliknij Wyniki testu, aby przejść do zasobnika Cloud Storage z wynikami testu z tego wykonania.
- Otwórz
artifacts/coverage.ec
, aby wyświetlić raport o zasięgu kodu.
Analizowanie wyników testu
Po kilku minutach narzędzie gcloud wydrukuje podstawowe podsumowanie wyników testu:
Dane wyjściowe testu przeprowadzonego z poziomu wiersza poleceń zawierają też link do wyświetlenia wyników. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie wyników Firebase Test Lab w przypadku wyników na urządzeniach z Androidem.
Wpisywanie tekstu i logowanie w testach Robo
Test Robo automatycznie wypełnia ekrany logowania, które używają konta Google do uwierzytelniania, chyba że użyjesz parametru --no-auto-google-login
. Może też wypełniać niestandardowe ekrany logowania za pomocą podanych przez Ciebie danych logowania do konta testowego. Możesz też użyć tego parametru, aby podać niestandardowy tekst wprowadzania danych w innych polach tekstowych używanych przez aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj parametru --robo-directives
i podaj listę par key-value
rozdzielonych przecinkami, gdzie key
to nazwa zasobu Androida dla docelowego elementu interfejsu, a value
to ciąg tekstowy. Możesz też użyć tego parametru, aby Robo ignorowało określone elementy interfejsu użytkownika (np. przycisk „Wyloguj się”).
Obsługiwane są pola EditText
, ale nie pola tekstowe w elementach interfejsu WebView
.
Możesz na przykład użyć tego parametru do logowania niestandardowego:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Interfejs wiersza poleceń gcloud Test Lab zawiera kilka poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:
Flaga Android Test Orchestrator: flaga umożliwiająca Orchestrator, czyli narzędzie, które pozwala uruchamiać poszczególne testy aplikacji w ramach własnych wywołań
Instrumentation
. Test Lab zawsze działa w ramach najnowszej wersji Orchestratora.Flagi testów pętli gry: Zestaw flag konfiguracji, które umożliwiają włączanie i sterowanie „demo mode” w celu symulowania działań gracza w aplikacjach z grami. Dowiedz się więcej o przeprowadzaniu testów pętli gry za pomocą Test Lab.
Flaga jednolitego dzielenia na fragmenty (w wersji beta): flaga, która określa liczbę fragmentów, na które chcesz równomiernie rozłożyć przypadki testowe. Fragmenty są wykonywane równolegle na osobnych urządzeniach.
.Flaga ręcznego dzielenia na części (w wersji beta): flaga określająca grupę pakietów, klas lub przypadków testowych do uruchomienia w części (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na różnych urządzeniach.
Flaga profili ruchu w sieci (w wersji beta): flaga określająca, którego profilu sieciowego używają testy na urządzeniach fizycznych. Profile sieci emulują różne warunki sieciowe, dzięki czemu możesz testować działanie aplikacji w niepewnych lub nieprzewidywalnych sieciach.
Tworzenie skryptów poleceń gcloud za pomocą Test Lab
Możesz użyć skryptów powłoki lub plików wsadowych, aby zautomatyzować polecenia testowania aplikacji mobilnej, które w przeciwnym razie musiałbyś uruchomić w wierszu poleceń gcloud. Ten przykładowy skrypt basha przeprowadza test z instrumentacją z czasem oczekiwania wynoszącym 2 minuty i zgłasza, czy test został ukończony:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Kody wyjścia skryptu
Test Lab udostępnia kilka kodów zakończenia, które możesz wykorzystać, aby lepiej zrozumieć wyniki testów uruchamianych za pomocą skryptów lub plików zbiorczych.
Kody wyjścia w skryptach w przypadku Test Lab
Kod wyjścia | Uwagi |
---|---|
0 | Wszystkie wykonania testu zostały zaliczone. |
1 | Wystąpił ogólny błąd. Możliwe przyczyny to np. nieistniejąca nazwa pliku lub błąd HTTP/sieci. |
2 | Testowanie zostało zakończone, ponieważ podano nieznane polecenia lub argumenty. |
10 | Co najmniej 1 przypadek testowy (testowane klasy lub metody klas) w ramach wykonania testu nie został zaliczony. |
15 | Firebase Test Lab nie mógł ustalić, czy testowa matryca przeszła czy nie, z powodu nieoczekiwanego błędu. |
18 | Środowisko testowe dla tego wykonania testu nie jest obsługiwane z powodu niezgodnych wymiarów testu. Ten błąd może wystąpić, jeśli wybrany poziom interfejsu API Androida nie jest obsługiwany przez wybrany typ urządzenia. |
19 | Użytkownik anulował matrycę testów. |
20 | Wystąpił błąd infrastruktury testowej. |