Z tego przewodnika dowiesz się, jak uruchomić test instrumentacji, test Robo lub test pętli gry za pomocą gcloud CLI.
Pełną listę gcloudpoleceń, których możesz używać
w aplikacji 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.
- Sprawdź, czy 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ąć wykonywać polecenia. Użyj pliku binarnego app-debug-unaligned.apk i pliku testów instrumentacyjnych app-debug-test-unaligned.apk, które znajdują się w 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 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: uzyskaj więcej informacji o konkretnymMODEL_IDz Androidem.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 wprowadzenia na rynek oraz informację, czy urządzenie jest fizyczne czy wirtualne.
versions list: Uzyskaj listę obecnie dostępnych wersji systemu operacyjnego, które możesz przetestować.gcloud firebase test android versions listAby później przeprowadzić testy na wersji Androida, 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, które chcesz przetestować, zostanie użyta domyślna wersja podana w kolumnieTAGS.Przykładowe dane wyjściowe

locales list: Pobierz aktualną listę języków, w których można przeprowadzać testy.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 odniesieniu do danego regionu. Jeśli nie określisz regionów, w których chcesz przeprowadzić testy, domyślnie użyjemy języka angielskiego.
Krok 3. Przeprowadź test
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 instrumentacyjne.
Przeprowadź test Robo
Nawet jeśli nie masz żadnych testów z instrumentacją, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić sprawdzenie automatyczne interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, przeprowadzając statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje ją w celu znalezienia awarii i innych potencjalnych problemów.
Aby uruchomić test Robo, wpisz 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"
- Parametr
--type robojest domyślny, jeśli nie podano wartości--type. - 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", aby oznaczyć zestaw testów. - Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, 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. Uruchom
gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.
Aby dowiedzieć się, jak analizować 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ądzenia 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
--typejest domyślny, jeśli plik APK testu jest określony za pomocą parametru--test. - Aby łatwiej identyfikować i znajdować zestawy testów w konsoli Firebase, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label", aby je oznaczyć. - Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, 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. 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 ją 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 uruchamia testy instrumentacji, 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 testowy plik APK. Możesz też sprawdzić, czy test, który się nie powiódł, był w rzeczywistości niestabilny, czy nie, używając flagi --num-flaky-test-attempts, która określa, ile razy należy ponownie podjąć próbę wykonania 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 pokrycia kodu w przypadku testów instrumentacji
Test Lab obsługuje narzędzia do raportowania pokrycia kodu, takie jak EMMA i JaCoCo. Jeśli masz zintegrowane z kompilacją aplikacji jedno z tych narzędzi, możesz uzyskać raport o pokryciu 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, użyj tego kodu:
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, a jednocześnie używasz narzędzia 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 testy, znajdź raporty o pokryciu kodu w Google Cloud Storage:
- Otwórz link do konsoli Firebase, który narzędzie
gcloudwydrukował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
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świetlania wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie wyników Firebase Test Lab na Androida.
Niestandardowe logowanie i wpisywanie tekstu w teście Robo
Test Robo automatycznie wypełnia ekrany logowania, które do uwierzytelniania używają konta Google, chyba że użyjesz parametru
--no-auto-google-login. Może też wypełniać niestandardowe ekrany logowania za pomocą danych logowania na konto testowe, które podasz. Możesz też użyć tego parametru, aby podać niestandardowy tekst wejściowy 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 docelowego elementu interfejsu, a value to ciąg tekstowy. Możesz też użyć tego znacznika, aby poinformować Robo, że ma ignorować określone elementy interfejsu (np. przycisk „Wyloguj się”).
EditText pola są obsługiwane, ale nie pola tekstowe w elementach interfejsu WebView.
Możesz na przykład użyć tego parametru w przypadku niestandardowego logowania:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Interfejs wiersza poleceń Test Lab gcloud ma kilka poleceń i flag, które umożliwiają przeprowadzanie testów o różnych specyfikacjach:
Flaga Android Test Orchestrator: Flaga umożliwiająca włączenie Orchestratora, narzędzia, które pozwala uruchamiać każdy test 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 aplikacjach z grami. Dowiedz się więcej o przeprowadzaniu testów pętli gry za pomocą Test Lab.
Flaga równomiernego dzielenia na fragmenty (w wersji beta): flaga określająca liczbę fragmentów, na które chcesz równomiernie podzielić przypadki testowe. Fragmenty są uruchamiane równolegle na osobnych urządzeniach.
.Flaga ręcznego dzielenia na części (w wersji beta): flaga, która określa grupę pakietów, klas lub przypadków testowych do uruchomienia w części (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ą Twoje testy na urządzeniach fizycznych. Profile sieci emulują różne warunki sieciowe, co pozwala testować wydajność aplikacji w niestabilnych 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 automatyzowania poleceń testowania aplikacji mobilnych, które w inny sposób uruchamiasz za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt powłoki bash przeprowadza test z instrumentacją z 2-minutowym limitem czasu i informuje, 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 pomagają lepiej zrozumieć wyniki testów uruchamianych za pomocą skryptów lub plików wsadowych.
Skrypty kodów wyjścia dla Test Lab
| Kod wyjścia | Uwagi |
|---|---|
| 0 | Wszystkie wykonania testów zostały zaliczone. |
| 1 | Wystąpił ogólny błąd. Możliwe przyczyny to 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 udało się ustalić, czy zestaw testów zakończył się powodzeniem czy niepowodzeniem 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 Android API 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. |