Z tego przewodnika dowiesz się, jak uruchomić test instrumentacji, Robo lub pętli gry za pomocą gcloud CLI.
Pełną listę gcloudpoleceń, których możesz używaćTest Lab w aplikacji na Androida w Test Lab, znajdziesz w dokumentacji referencyjnej dotyczącej gcloud firebase test android.
Zanim zaczniesz
Jeśli nie korzystasz jeszcze z Firebase w projekcie aplikacji na Androida, dodaj do niego tę usługę.
Krok 1. Konfigurowanie gcloud CLI
- Pobierz Google Cloud SDK.
- 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 w Twoim teście, 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 instrumentacyjnych app-debug-test-unaligned.apk, które znajdują się w NotePad/app/build/outputs/apk/.
models list: uzyskać 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 konkretnym urządzeniu z AndroidemMODEL_ID.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 języka. 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 dostępnych modeli urządzeń, ustawień regionalnych i wersji systemu operacyjnego, możesz określić urządzenia, na których chcesz przetestować aplikację, używając 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 instrumentacyjnych, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczną weryfikację interfejsu aplikacji. Test Robo przeprowadza testy aplikacji, wykonując statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie skanuje aplikację 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"do ich oznaczania. - Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując:
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.
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 instrumentacji
--typejest domyślny, jeśli testowy plik APK jest określony za pomocą parametru--test. - Aby łatwiej identyfikować i lokalizować zestawy testów w Firebasekonsoli
--client-details matrixLabel="Example matrix label", możesz użyć opcjonalnej flagi--client-details matrixLabel="Example matrix label", aby je oznaczyć. - Pełną listę opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując
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.
Narzędzie Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj skrótu 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 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 wykonać test, jeśli co najmniej jeden z jego przypadków testowych 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 Android Test Orchestratora, 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 wydrukuje podstawowe podsumowanie wyników testu:

Wyniki 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 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 flagi, aby poinformować Robo, że ma ignorować określone elementy interfejsu (np. przycisk „Wyloguj się”).
EditText
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 korzysta z najnowszej wersji Orchestratora.Flagi testu pętli gry: zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” symulujący działania gracza w aplikacjach do gier. 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, która określa 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ą testy na urządzeniach fizycznych. Profile sieci emulują różne warunki sieciowe, dzięki czemu możesz 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 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 testu zostały zaliczone. |
| 1 | Wystąpił błąd ogólny. 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 został zaliczony, 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ł zestaw testów. |
| 20 | Wystąpił błąd infrastruktury testowej. |