Z tego przewodnika dowiesz się, jak uruchomić test instrumentacji, Robo lub Game Loop za pomocą gcloud CLI.
Pełną listę gcloud
poleceń, 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 jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
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 Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu 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 ramach 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 instrumentacji 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 list
W wyniku polecenia:
- Kolumna
MODEL_ID
zawiera identyfikator, którego możesz 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 konkretnym urządzeniu z AndroidemMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Dane 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 list
Aby później przeprowadzić testy na wersji Androida, możesz użyć identyfikatora z jednej z 2 pierwszych kolumn danych wyjściowych polecenia (
OS_VERSION_ID
iVERSION
). 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 versions list
Pierwsza kolumna danych wyjściowych 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 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 instrumentacyjnych, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczne sprawdzenie interfejsu aplikacji. Testowanie automatyczne polega na przeprowadzeniu statycznej analizy różnych ścieżek w interfejsie użytkownika aplikacji, a następnie na przejściu przez 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 robo
jest domyślny, jeśli nie podano wartości--type
. - Aby ułatwić sobie identyfikowanie i znajdowanie macierzy testowych 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.
Uruchom test narzędzi
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
--type
jest domyślny, jeśli testowy plik APK jest określony za pomocą parametru--test
. - Aby łatwiej identyfikować i lokalizować macierze testowe w Firebase konsoli, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label"
do ich oznaczania. - 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 ją 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 ponowić wykonanie testu, 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: 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
gcloud
wydrukował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 Androidzie.
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 z różnymi specyfikacjami:
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 testowe 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 partycje (w wersji beta): flaga, która określa grupę pakietów, klas lub przypadków testowych do uruchomienia w partycji (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na osobnych 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, 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 zakończenia 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 | Nie udało się ustalić, czy macierz testowa została zaliczona, czy nie, z powodu nieoczekiwanego błędu.Firebase Test Lab |
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ł macierz testową. |
20 | Wystąpił błąd infrastruktury testowej. |