Z tego przewodnika dowiesz się, jak przeprowadzić test instrumentacji, Robo lub 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 gcloud firebase test android.
Zanim zaczniesz
Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.
Krok 1. Konfigurowanie gcloud CLI
- pobrać pakiet SDK Google Cloud,
- Upewnij się, że instalacja jest aktualna:
gcloud components update
- Zaloguj się w gcloud CLI za pomocą konta Google:
gcloud auth login
- Ustaw projekt w Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu w 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 ustawienia regionalne dostępne na potrzeby testu, użyj tych poleceń gcloud.
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 z instrumentacją app-debug-test-unaligned.apk, które znajdują się w NotePad/app/build/outputs/apk/.
models list: pobierz aktualną listę urządzeń z Androidem dostępnych do testowania.gcloud firebase test android models listW wyniku polecenia:
- Kolumna
MODEL_IDzawiera identyfikator, którego możesz później użyć do przeprowadzenia testów na modelu urządzenia. - Kolumna
OS_VERSION_IDzawiera wersje systemu operacyjnego obsługiwane przez urządzenie.
Przykładowe dane wyjściowe

- Kolumna
models describe: dowiedz się więcej o konkretnym urządzeniu z AndroidemMODEL_ID.gcloud firebase test android models describe MODEL_IDDane wyjściowe zawierają markę modelu urządzenia, producenta, wersje systemu operacyjnego, obsługiwane poziomy interfejsu API, obsługiwane interfejsy binarne aplikacji (ABI), daty wydania oraz informację o tym, czy urządzenie jest fizyczne czy wirtualne.
versions list: pobierz listę obecnie dostępnych wersji systemu operacyjnego, na których można przeprowadzić testy.gcloud firebase test android versions listMożesz użyć identyfikatora z jednej z pierwszych 2 kolumn danych wyjściowych polecenia (
OS_VERSION_IDiVERSION), aby później przeprowadzić testy na wersji systemu operacyjnego Android. Jeśli nie określisz wersji systemu operacyjnego Android, na których chcesz przeprowadzić test, zostanie użyta domyślna wersja podana w kolumnieTAGS.Przykładowe dane wyjściowe

locales list: pobierz aktualną listę języków dostępnych do testowania.gcloud firebase test android locales listPierwsza kolumna wyniku polecenia,
LOCALE, zawiera identyfikator, którego możesz później użyć do przeprowadzenia testów w danym regionie. Jeśli nie określisz regionów, w których chcesz przeprowadzić test, domyślnie zostanie użyty język angielski.
Krok 3. Przeprowadzanie testu
Teraz, gdy znasz już zakres modeli urządzeń, języków 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 z instrumentacją.
Przeprowadź test Robo
Nawet jeśli nie masz żadnych testów z instrumentacją, możesz szukać błędów w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczne sprawdzenie interfejsu aplikacji. Test Robo sprawdza aplikację, przeprowadzając analizę statyczną różnych ścieżek w interfejsie aplikacji, a następnie skanuje aplikację, aby znaleźć awarie i inne potencjalne problemy.
Aby uruchomić test Robo, uruchom to przykładowe 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 określono wartości
--type, parametr--type robojest domyślny. - Aby ułatwić sobie identyfikowanie i znajdowanie zestawów testów w konsoli Firebase, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label"do oznaczenia zestawu testów. - 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 je opcjonalnie określić w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.
Aby dowiedzieć się, jak przeanalizować wyniki testu Robo, przeczytaj artykuł Analizowanie wyników testu.
Przeprowadź test z instrumentacją
Teraz użyj narzędzia wiersza poleceń gcloud, aby uruchomić testy Espresso aplikacji Notatnik na określonych konfiguracjach urządzeń z Androidem. Użyj typu testu instrumentation, aby uruchomić testy w app-debug-test-unaligned.apk 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"
- Parametr instrumentacji
--typejest domyślny, jeśli testowy plik APK jest określony za pomocą--test. - Aby ułatwić sobie identyfikowanie i znajdowanie zestawów testów w konsoli Firebase, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label"do oznaczenia zestawu testów. - Aby zobaczyć 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 określić je w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.
Interfejs wiersza poleceń gcloud obsługuje Android Test Orchestrator.
Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj gcloud firebase test android run z flagą --use-orchestrator. Aby ją wyłączyć, użyj flagi --no-use-orchestrator.
Możesz też kontrolować sposób, w jaki Test Lab przeprowadza testy z instrumentacją, używając dodatkowych flag, które nie są widoczne 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 nieudany test był rzeczywiście niestabilny, używając flagi --num-flaky-test-attempts, która określa, ile razy należy ponowić wykonanie testu, jeśli co najmniej 1 z jego elementów testowania nie powiedzie się z jakiegokolwiek powodu. Więcej informacji znajdziesz w artykule gcloud firebase test android run.
Raporty o pokryciu kodu w przypadku testów z instrumentacją
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 pokryciu kodu dla testów Test Lab, uruchamiając gcloud firebase test android run z dodatkowymi argumentami. Jeśli Android Test Orchestrator nie jest włączony, użyj tego polecenia:
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 o pokryciu kodu i jednocześnie używasz Android Test Orchestrator, zmodyfikuj zmienne środowiskowe w następujący 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 testy, znajdź raporty o pokryciu kodu w Google Cloud Storage:
- Otwórz link do konsoli Firebase, który narzędzie
gcloudwyświetliło nad tabelą wyników testu w terminalu. - Kliknij wykonanie testu na liście pod tym linkiem, aby otworzyć stronę z informacjami o tym wykonaniu.
- Kliknij Wyniki testu, aby przejść do zasobnika Cloud Storage z wynikami testu tego wykonania.
- Otwórz plik
artifacts/coverage.ec, aby wyświetlić raport o pokryciu kodu.
Analizowanie wyników testu
Po kilku minutach narzędzie gcloud wyświetli podstawowe podsumowanie wyników testu:

Dane wyjściowe testu uruchomionego w wierszu poleceń zawierają też link do wyświetlenia wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie wyników Firebase Test Lab na Androidzie.
Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo
Test Robo automatycznie wypełnia ekrany logowania, które używają konta Google do uwierzytelniania, chyba że używasz parametru --no-auto-google-login. Może też wypełniać niestandardowe ekrany logowania, używając podanych przez Ciebie danych logowania na konto testowe. Możesz też użyć tego parametru, aby podać niestandardowy tekst wejściowy dla innych pól tekstowych używanych przez aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj parametru --robo-directives i podaj rozdzieloną przecinkami listę par key-value, gdzie key to nazwa zasobu Androida docelowego elementu interfejsu, a value to ciąg tekstowy. Możesz też użyć tej flagi, aby poinformować Robo, że ma ignorować określone elementy interfejsu (np. przycisk „Wyloguj”).
Obsługiwane są pola EditText, ale nie pola tekstowe w elementach interfejsu WebView.
Możesz na przykład użyć tego parametru do niestandardowego logowania:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
W interfejsie wiersza poleceń gcloud CLI Test Lab dostępnych jest kilka poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:
Flaga Android Test Orchestrator: flaga umożliwiająca włączenie Orchestratora, czyli narzędzia, które pozwala uruchamiać każdy test aplikacji w osobnym wywołaniu
Instrumentation. W Test Lab zawsze działa najnowsza wersja Orchestratora.Flagi testu pętli gry: zestaw flag konfiguracji, które włączają i kontrolują „tryb demonstracyjny” w celu symulowania działań gracza w grach mobilnych. Dowiedz się więcej o przeprowadzaniu testów pętli gry za pomocą Test Lab.
Flaga Uniform Sharding (w wersji beta): flaga określająca liczbę fragmentów, na które chcesz równomiernie rozłożyć elementy testowania. Fragmenty są uruchamiane równolegle na oddzielnych urządzeniach.
Flaga ręcznego fragmentowania (w wersji beta): flaga, która określa grupę pakietów, klas lub elementów testowania do uruchomienia we fragmencie (grupie elementów testowania). Fragmenty są uruchamiane równolegle na oddzielnych 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, umożliwiając testowanie wydajności aplikacji w zawodnych lub nieprzewidywalnych sieciach.
Tworzenie skryptów poleceń gcloud za pomocą Test Lab
Możesz używać skryptów powłoki lub plików wsadowych do automatyzacji poleceń testowania aplikacji mobilnych, które w przeciwnym razie byłyby uruchamiane za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt bash uruchamia test z instrumentacją z limitem czasu wynoszącym 2 minuty i raportuje, czy test zakończył się powodzeniem:
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 wyjścia, które pomagają lepiej zrozumieć wyniki testów przeprowadzanych za pomocą skryptów lub plików wsadowych.
Kody wyjścia skryptów dla Test Lab
| Kod wyjścia | Uwagi |
|---|---|
| 0 | Wszystkie wykonania testu zakończyły się powodzeniem. |
| 1 | Wystąpił błąd ogólny. Możliwe przyczyny: nazwa pliku nie istnieje lub wystąpił błąd HTTP/sieci. |
| 2 | Testowanie zostało zakończone, ponieważ podano nieznane polecenia lub argumenty. |
| 10 | Co najmniej 1 element testowania (testowane klasy lub metody klas) w ramach wykonania testu nie został zaliczony. |
| 15 | Z powodu nieoczekiwanego błędu usługa Firebase Test Lab nie mogła określić, czy zestaw testów zakończył się powodzeniem czy niepowodzeniem. |
| 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 | Zestaw testów został anulowany przez użytkownika. |
| 20 | Wystąpił błąd infrastruktury testowej. |