Ten przewodnik opisuje, jak uruchomić test instrumentacji, test Robo lub test pętli gry za pomocą interfejsu wiersza poleceń gcloud.
Pełną listę dostępnych poleceń gcloud
za pomocą aplikacji na Androida w usłudze Test Lab, otwórz
dokumentację referencyjną gcloud firebase test android
.
Zanim zaczniesz
Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.
Krok 1. Konfigurowanie interfejsu wiersza poleceń gcloud
- Pobierz pakiet SDK Google Cloud
- Sprawdź, czy masz aktualną wersję systemu:
gcloud components update
- Zaloguj się w interfejsie wiersza poleceń gcloud za pomocą konta Google:
gcloud auth login
- Ustaw projekt Firebase w gcloud, gdzie PROJECT_ID to
identyfikator projektu Firebase:
gcloud config set project PROJECT_ID
Obejmuje to gcloud CLI.
Krok 2. Sprawdź dostępne urządzenia testowe
Użyj tych poleceń gcloud, aby wyświetlić urządzenia testowe i języki, które są do przeprowadzenia testu.
Możesz też pobrać próbkę
Aby uruchomić, aplikację Notatnik
od razu uruchamiać polecenia. Użyj pliku binarnego app-debug-unaligned.apk
oraz pliku testów instrumentacji app-debug-test-unaligned.apk
, który znajduje się
w aplikacji NotePad/app/build/outputs/apk/
.
models list
: pobierz aktualną listę urządzeń z Androidem, które możesz przetestować przeciwko Google.gcloud firebase test android models list
W wyniku polecenia:
- Kolumna
MODEL_ID
zawiera identyfikator, którego można później użyć do przeprowadzenia 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ę modelu urządzenia, nazwę producenta, wersje systemu operacyjnego obsługiwane poziomy API, obsługiwane interfejsy binarne aplikacji (ABI), daty wydania oraz tego, 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
Możesz użyć identyfikatora z jednej z 2 pierwszych kolumn polecenia dane wyjściowe (
OS_VERSION_ID
iVERSION
), aby później przeprowadzić testy na Androidzie Wersja systemu operacyjnego. 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
: pobiera bieżącą listę języków dostępnych do testowania.gcloud firebase test android versions list
Pierwsza kolumna danych wyjściowych polecenia (
LOCALE
) zawiera identyfikator których możesz później użyć do przeprowadzenia testów w danym języku. Jeśli nie określisz języków, które mają zostać przetestowane, domyślnie używany jest język angielski.
Krok 3. Przeprowadź test
Znasz już różne modele urządzeń, języki i wersje systemów operacyjnych.
aby przetestować aplikację, możesz określić urządzenia za pomocą
gcloud firebase test android run
i
flagę --device
, aby uruchomić testy Robo lub instrumentacji.
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 Robo ćwiczy aplikację, wykonując statyczną analizy różnych ścieżek przez interfejs aplikacji, indeksuje 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 robo
jest niejawny. - Aby ułatwić sobie identyfikowanie i znajdowanie macierzy testów w konsoli Firebase,
możesz użyć opcjonalnego
--client-details matrixLabel="Example matrix label"
do oznaczania etykietami macierzy testów. - W wierszu poleceń możesz zobaczyć wszystkie opcje
przeprowadzanie testów, wpisując:
gcloud help firebase test android run
.
Zamiast określać te argumenty w wierszu poleceń, możesz
opcjonalnie podaj argumenty w pliku z argumentami w formacie YAML. Uruchom gcloud topic arg-files
, aby dowiedzieć się, jak korzystać z tej funkcji.
Informacje o badaniu wyników testu Robo można znaleźć w artykule Analizowanie wyników testu.
Uruchom test narzędzi
Teraz użyj narzędzia wiersza poleceń gcloud
, aby uruchomić
Espresso
testów na określonych konfiguracjach urządzeń z Androidem. Użyj
instrumentation
typu testu do uruchomienia w regionie app-debug-test-unaligned.apk
w następujący 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
--type
jest niejawny, jeśli określony jest testowy plik APK. dzięki--test
. - Aby ułatwić sobie rozpoznawanie i zlokalizowanie macierzy testów w konsoli Firebase:
możesz użyć opcjonalnej funkcji
--client-details matrixLabel="Example matrix label"
do oznaczania etykietami macierzy testów. - W wierszu poleceń możesz zobaczyć wszystkie opcje
przeprowadzanie testów, wpisując
gcloud help firebase test android run
.
Zamiast określać te argumenty w wierszu poleceń, możesz
opcjonalnie podaj argumenty w pliku z argumentami w formacie YAML. Bieganie
gcloud topic arg-files
, aby dowiedzieć się, jak korzystać z tej funkcji.
Interfejs wiersza poleceń gcloud obsługuje Android Test Orchestrator.
Orchestrator wymaga wersji AndroidJUnitRunner 1.1 lub nowszej. Aby je włączyć, użyj
gcloud firebase test android run
z: --use-orchestrator
flaga. Aby go 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. Na przykład możesz użyć atrybutu
flaga --test-targets
do przetestowania pojedynczej klasy lub metody klasy używanej w teście
plik APK. Możesz się też dowiedzieć, czy test, który się nie powiódł, był niestabilny,
a nie przez użycie flagi --num-flaky-test-attempts
, która określa liczbę
liczbę prób ponownego wykonania testu, jeśli co najmniej 1 z przypadków testowych
nie powiodą się
z jakiegokolwiek powodu. Więcej informacji znajdziesz na stronie gcloud firebase test android run.
Raporty zasięgu kodu na potrzeby testów narzędzi
Test Lab obsługuje narzędzia do raportowania zasięgu kodu
EMMA i
JaCoCo Jeśli używasz dowolnego z tych narzędzi
zintegrowaną z kompilacją aplikacji, możesz uzyskać raport zasięgu kodu dotyczący
Test Lab testów uruchomiono gcloud firebase test android run
z niektórymi
dodatkowych argumentów. 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 zakresie testowania 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. - Na liście pod tym linkiem kliknij wykonanie testu, by otworzyć stronie szczegółów.
- Kliknij Testuj wyniki, aby przejść do zasobnika Cloud Storage z tym wyniki testu.
- Otwórz aplikację
artifacts/coverage.ec
, aby wyświetlić raport zasięgu kodu.
Analizowanie wyników testu
Po kilku minutach podstawowe podsumowanie wyników testu wyświetli się na Narzędzie gcloud:
Wynik uruchomienia testu wiersza poleceń zawiera też link do testu wyników. Więcej informacji o interpretowaniu tych wyników znajdziesz na stronie Analizuję aplikację Firebase Test Lab pod kątem wyników na Androidzie.
Wpisywanie tekstu i logowanie w testach Robo
Test Robo automatycznie uzupełnia ekrany logowania, które korzystają z konta Google
do uwierzytelniania, chyba że użyjesz
--no-auto-google-login
. Może też wykonywać niestandardowe ekrany logowania za pomocą konta testowego
podane dane logowania. Za pomocą tego parametru możesz też podawać niestandardowe
wprowadzania tekstu w innych polach tekstowych używanych przez aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj
--robo-directives
i podaj rozdzielaną przecinkami listę par key-value
, gdzie
key
to nazwa zasobu Androida dla docelowego elementu interfejsu, a value
to
ciąg tekstowy. Możesz także użyć tej flagi, aby poinformować Robo, że ma ignorować określone
elementy interfejsu (np. „wyloguj się” ).
Obsługiwane są pola EditText
, ale nie pola tekstowe w elementach interfejsu WebView
.
Można np. użyć tego parametru do określenia wartości niestandardowych login:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Interfejs wiersza poleceń gcloud Test Lab ma kilka dostępnych poleceń i flag, przeprowadzanie testów z różnymi specyfikacjami:
Flaga Android Test Assistant: Flaga do włączenia Orchestratora, które pozwala uruchamiać testów aplikacji w jej własnym wywołaniu
Instrumentation
. Test Lab zawsze korzysta z najnowszej wersji narzędzia Symphony.Flagi testowe pętli gry: Zestaw flag konfiguracji, które umożliwiają włączenie i kontrolowanie wersji demonstracyjnej tryb”. aby symulować działania graczy w grach. Więcej informacji o bieganiu Testy pętli gry w 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ą uruchamiane równolegle na osobnych urządzeniach.
Flaga ręcznego fragmentowania (w wersji beta): Flaga określająca grupę pakietów, klas lub przypadków testowych do uruchomienia we fragmencie (grupa przypadków testowych). Fragmenty są uruchamiane równolegle i oddzielnymi urządzeniami.
Flaga profili ruchu sieciowego (w wersji beta): Flaga określająca profil sieci używany przez testy w połączeniu z fizycznym urządzenia. Profile sieci emulują różne warunki sieciowe, dzięki czemu możesz testować działanie aplikacji w niepewnych lub nieprzewidywalnych sieciach.
Pisanie 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 mobilnych które można by uruchomić przy użyciu wiersza 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
Skrypty wyjścia
Test Lab udostępnia kilka kodów wyjścia, dzięki którym lepiej zrozumiesz wyników testów przeprowadzonych za pomocą skryptów lub plików wsadowych.
Skrypty wyjścia dla aplikacji Test Lab
Kod wyjścia | Uwagi |
---|---|
0 | Wszystkie wykonania testu zaliczone. |
1 | Wystąpił błąd ogólny. 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 testu nie udało się wykonać. |
15 | Funkcja Firebase Test Lab nie mogła określić, czy tablica testów zaliczona lub niepowodzenie 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 interfejs API Androida Ten poziom 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. |