W tym przewodniku opisujemy, jak uruchomić test z instrumentacją, test Robo lub test pętli gry za pomocą gcloud CLI.
Pełną listę poleceń gcloud, których możesz używać
z aplikacją na Androida w Test Lab, znajdziesz w
dokumentacji referencyjnej 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
- Pobierz 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 Twojego projektu w Firebase:
gcloud config set project PROJECT_ID
Zawiera on 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.
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 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, na których możesz przeprowadzić testy.gcloud firebase test android models listW wyniku polecenia:
- Kolumna
MODEL_IDzawiera identyfikator, którego możesz później użyć do uruchamiania testów na danym modelu urządzenia. - Kolumna
OS_VERSION_IDzawiera wersje systemu operacyjnego obsługiwane przez urządzenie.
Przykładowe dane wyjściowe

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

locales list: pobierz aktualną listę ustawień regionalnych, na których możesz przeprowadzić testy.gcloud firebase test android locales listPierwsza kolumna wyniku polecenia,
LOCALE, zawiera identyfikator, którego możesz później użyć do uruchamiania testów w danym ustawieniu regionalnym. Jeśli nie określisz ustawień regionalnych, na których chcesz przeprowadzić testy, domyślnie zostanie użyty język angielski.
Krok 3. Uruchamianie testu
Teraz, gdy znasz zakres modeli urządzeń, ustawień regionalnych 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ą.
Uruchom test Robo
Nawet jeśli nie masz testów z instrumentacją, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczne sprawdzanie interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, wykonując statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje aplikację w celu znalezienia awarii i innych potencjalnych problemów.
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ć identyfikowanie i znajdowanie zestawów testów w konsoli Firebase,
możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label", aby oznaczyć zestaw testów. - Pełny zestaw opcji wiersza poleceń do uruchamiania testów znajdziesz, wpisując:
gcloud help firebase test android run.
Zamiast określać te argumenty w wierszu poleceń, możesz opcjonalnie podać je w pliku argumentów w formacie YAML. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom gcloud topic arg-files.
Aby dowiedzieć się, jak analizować wyniki testu Robo, przeczytaj artykuł Analizowanie wyników Laboratorium testów Firebase na Androidzie.
Uruchom 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. 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 plik APK testu jest określony za pomocą
--test, parametr--typeinstrumentation jest domyślny. - Aby ułatwić identyfikowanie i znajdowanie zestawów testów w konsoli Firebase,
możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label", aby oznaczyć zestaw testów. - Pełny zestaw opcji wiersza poleceń do uruchamiania testów znajdziesz, wpisując
gcloud help firebase test android run.
Zamiast określać te argumenty w wierszu poleceń, możesz opcjonalnie podać je w pliku argumentów w formacie YAML. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom gcloud topic arg-files.
gcloud CLI obsługuje narzędzie Android Test Orchestrator.
Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj
gcloud firebase test android run z --use-orchestrator
flagą. Aby go wyłączyć, użyj flagi --no-use-orchestrator.
Możesz też kontrolować sposób uruchamiania testów z instrumentacją w Test Lab za pomocą 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 plik APK testu. Możesz też sprawdzić, czy test, który się nie powiódł, był niestabilny, czy nie, 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 przypadków testowych nie powiedzie się z jakiegokolwiek powodu. Więcej informacji znajdziesz w gcloud firebase test android run.
Raporty pokrycia kodu na potrzeby testów z instrumentacją
Test Lab obsługuje narzędzia do raportowania pokrycia kodu
EMMA i
JaCoCo. Jeśli masz zintegrowane z kompilacją aplikacji jedno z tych narzędzi
, możesz uzyskać raport pokrycia kodu na potrzeby
Test Lab testów, uruchamiając gcloud firebase test android run z kilkoma
dodatkowymi argumentami. Jeśli narzędzie Android Test Orchestrator nie jest włączone, użyj tych argumentów:
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, używając jednocześnie narzędzia Android Test Orchestrator, zmodyfikuj 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 uruchamianie testów, znajdź raporty pokrycia 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 z listy pod tym linkiem, aby otworzyć stronę z informacjami o tym wykonaniu.
- Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage z wynikami testu wykonania.
- Otwórz
artifacts/coverage.ec, aby zobaczyć raport pokrycia kodu.
Analizowanie wyników testu
Po kilku minutach narzędzie gcloud wyświetli podstawowe podsumowanie wyników testu:

Dane wyjściowe uruchomienia testu w wierszu poleceń zawierają też link do wyświetlenia wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie Firebase Test Lab na Androida.
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żyjesz
--no-auto-google-login
parametru. Może też wypełniać niestandardowe ekrany logowania za pomocą podanych przez Ciebie danych logowania na konto testowe. Możesz też użyć tego parametru, aby podać niestandardowy tekst do innych pól tekstowych używanych przez aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj parametru
--robo-directives
i podaj listę par key-value rozdzieloną przecinkami, 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 się”).
EditText
pola są obsługiwane, ale pola tekstowe w elementach interfejsu WebView nie.
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
gcloud CLI Test Lab ma kilka poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:
Flaga narzędzia Android Test Orchestrator: Flaga, która włącza Orchestrator, czyli narzędzie umożliwiające uruchamianie każdego testu aplikacji w osobnym wywołaniu
Instrumentation. Test Lab zawsze uruchamia najnowszą wersję Orchestratora.Flagi testu pętli gry: zestaw flag konfiguracyjnych, które włączają i kontrolują "tryb demonstracyjny" symulujący działania gracza w grach mobilnych. Więcej informacji o uruchamianiu testów pętli gry w Test Lab.
Flaga równomiernego dzielenia na fragmenty (w wersji beta): flaga, która określa liczbę fragmentów, na które chcesz równomiernie rozdzielić przypadki testowe. Fragmenty są uruchamiane równolegle na osobnych urządzeniach.
Flaga ręcznego dzielenia na fragmenty (w wersji beta): flaga, która określa grupę pakietów, klas lub przypadków testowych do uruchomienia we fragmencie (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na osobnych urządzeniach.
Flaga profili ruchu w sieci (w wersji beta): Flaga, która określa, którego profilu sieciowego używają testy na urządzeniach fizycznych. Profile sieciowe emulują różne warunki sieciowe, co pozwala testować wydajność aplikacji w sieciach niestabilnych lub nieprzewidywalnych.
Tworzenie skryptów poleceń gcloud za pomocą Test Lab
Możesz używać skryptów powłoki lub plików wsadowych do automatyzowania poleceń testowania aplikacji mobilnych, które w przeciwnym razie uruchamiałbyś za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt powłoki bash uruchamia test z instrumentacją z 2-minutowym limitem czasu i informuje, czy uruchomienie testu zakończyło się pomyślnie:
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 uruchamianych za pomocą skryptów lub plików wsadowych.
Kody wyjścia skryptu w Test Lab
| Kod wyjścia | Uwagi |
|---|---|
| 0 | Wszystkie wykonania testu zakończyły się pomyślnie. |
| 1 | Wystąpił błąd ogólny. Możliwe przyczyny: 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 element testowania (testowana klasa lub metoda klasy) w wykonaniu testu nie powiódł się. |
| 15 | Firebase Test Lab nie mogło określić, czy zestaw testów zakończył się pomyślnie, 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 | Zestaw testów został anulowany przez użytkownika. |
| 20 | Wystąpił błąd infrastruktury testowej. |