Z tego przewodnika dowiesz się, jak przeprowadzić test instrumentacji, Robo lub pętli gry za pomocą interfejsu wiersza poleceń gcloud.
Pełną listę poleceń gcloud
, których możesz używać w swojej aplikacji na Androida w Laboratorium, znajdziesz w dokumentacji referencyjnej 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 Twoja instalacja jest aktualna:
gcloud components update
- Zaloguj się w interfejsie wiersza poleceń gcloud za pomocą konta Google:
gcloud auth login
- Skonfiguruj projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator Twojego projektu Firebase:
gcloud config set project PROJECT_ID
Obejmuje to gcloud CLI.
Krok 2. Sprawdź dostępne urządzenia testowe
Aby wyświetlić urządzenia testowe i języki dostępne na potrzeby testu, użyj poniższych 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 lokalizacji NotePad/app/build/outputs/apk/
.
models list
: pozwala uzyskać aktualną listę urządzeń z Androidem, które możesz przetestować.gcloud firebase test android models list
W danych wyjściowych 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 konkretnym AndroidzieMODEL_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 informacje o tym, czy urządzenie jest fizyczne czy wirtualne.
versions list
: pozwala uzyskać listę aktualnie dostępnych wersji systemu operacyjnego do przetestowania.gcloud firebase test android versions list
Aby później przeprowadzić testy wersji systemu operacyjnego Android, możesz użyć identyfikatora z jednej z 2 pierwszych kolumn danych wyjściowych poleceń (
OS_VERSION_ID
iVERSION
). Jeśli nie określisz wersji systemu operacyjnego Android, które mają zostać przetestowane, zostanie użyta domyślna wartość podana 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órego można później użyć do testowania danego języka. Jeśli nie określisz regionów, w których będą przeprowadzane testy, domyślnym językiem będzie angielski.
Krok 3. Przeprowadź test
Znasz już różne modele urządzeń, języki i wersje systemu operacyjnego dostępnych do testowania swojej aplikacji. Możesz więc określić urządzenia za pomocą polecenia gcloud firebase test android run
i flagi --device
, aby uruchomić testy Robo lub instrumentacji.
Przeprowadź test Robo
Nawet jeśli nie przeprowadzasz żadnych testów z narzędziami, i tak możesz poszukać błędów w swojej aplikacji. Użyj testu Robo, aby automatycznie sprawdzić interfejs użytkownika. Test Robo sprawdza aplikację, wykonując statyczną analizę różnych ścieżek w interfejsie aplikacji, a następnie 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 zidentyfikować i zlokalizować macierzy testów w konsoli Firebase, możesz oznaczyć tablicę testów za pomocą opcjonalnej flagi
--client-details matrixLabel="Example matrix label"
. - Aby wyświetlić pełny zestaw opcji wiersza poleceń używanych do przeprowadzania testów, wpisz:
gcloud help firebase test android run
.
Zamiast określać te argumenty w wierszu poleceń, możesz je opcjonalnie podać w pliku z argumentami w formacie YAML. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom polecenie gcloud topic arg-files
.
Więcej informacji o analizowaniu wyników testu Robo znajdziesz w artykule Analizowanie wyników testu.
Przeprowadź test z instrumentacją
Użyj narzędzia wiersza poleceń gcloud
, by 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 niejawny, jeśli testowy plik APK jest określony za pomocą--test
. - Aby zidentyfikować i zlokalizować macierzy testów w konsoli Firebase, możesz oznaczyć tablicę testów za pomocą opcjonalnej flagi
--client-details matrixLabel="Example matrix label"
. - Aby wyświetlić pełny zestaw opcji wiersza poleceń używanych do uruchamiania testów, wpisz
gcloud help firebase test android run
.
Zamiast określać te argumenty w wierszu poleceń, możesz je opcjonalnie podać w pliku z argumentami w formacie YAML. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom polecenie gcloud topic arg-files
.
Interfejs wiersza poleceń gcloud obsługuje narzędzie Android Test Assistant.
Narzędzie Oracle wymaga AndroidaJUnitRunner w wersji 1.1 lub nowszej. Aby ją włączyć, użyj polecenia gcloud firebase test android run
z flagą --use-orchestrator
. Aby go wyłączyć, użyj flagi --no-use-orchestrator
.
Możesz też kontrolować sposób, w jaki Laboratorium przeprowadza testy instrumentacji, korzystając z dodatkowych flag, które nie są widoczne powyżej. Flagi --test-targets
możesz na przykład użyć do przetestowania pojedynczej klasy lub metody klasy używanej w testowym pliku APK. Możesz też sprawdzić, czy test, który się nie udał, w rzeczywistości był niesprawny czy nie, używając flagi --num-flaky-test-attempts
, która określa, ile razy należy ponawiać test, jeśli z jakiegokolwiek powodu co najmniej 1 przypadek testowy się nie uda. Więcej informacji znajdziesz na stronie gcloud firebase test android run.
Raporty zasięgu kodu na potrzeby testów narzędzi
Laboratorium obsługuje narzędzia do raportowania pokrycia kodu
EMMA i JaCoCo. Jeśli używasz jednego z tych narzędzi zintegrowanych z kompilacją aplikacji, możesz uzyskać raport dotyczący zasięgu kodu w ramach Laboratorium, uruchamiając polecenie gcloud firebase test android run
z dodatkowymi argumentami. Jeśli narzędzie Android Test Assistant nie jest włączone, użyj tego polecenia:
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 zasięgu kodu, jednocześnie korzystając z 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 Laboratorium zakończy testy, znajdź raporty o zasięgu kodu w Google Cloud Storage:
- Otwórz link do konsoli Firebase, który narzędzie
gcloud
wydrukowało nad tabelą z wynikami testu w terminalu. - Kliknij wykonanie testu na liście pod tym linkiem, by otworzyć stronę z informacjami o nim.
- Kliknij Testuj wyniki, aby przejść do zasobnika Cloud Storage z wynikami testu tego wykonania.
- Otwórz aplikację
artifacts/coverage.ec
, aby wyświetlić raport zasięgu kodu.
Analizowanie wyników testu
Po kilku minutach narzędzie gcloud wyświetli podstawowe podsumowanie wyników testu:
Wynik testu wiersza poleceń zawiera też link do wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analiza wyników Laboratorium Firebase dla Androida.
Niestandardowy login i wprowadzanie tekstu z testem Robo
Test Robo automatycznie wypełnia ekrany logowania korzystające z konta Google do uwierzytelniania, chyba że użyjesz parametru --no-auto-google-login
. Może też wypełniać niestandardowe ekrany logowania za pomocą podanych przez Ciebie danych logowania do konta testowego. Możesz go też użyć, by podać własny tekst w innych polach tekstowych używanych przez aplikację.
Aby uzupełnić pola tekstowe w aplikacji, użyj parametru --robo-directives
i podaj oddzieloną przecinkami listę par key-value
, gdzie key
to nazwa zasobu Androida docelowego elementu interfejsu, a value
to ciąg tekstowy. Możesz też użyć tej flagi, by poinformować Robo, że ma ignorować określone elementy interfejsu (np. „wyloguj się”).
W elementach interfejsu WebView
są obsługiwane pola EditText
, ale nie pola tekstowe.
Możesz na przykład użyć tego parametru na potrzeby niestandardowego logowania:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Interfejs wiersza poleceń gcloud w Laboratorium ma kilka poleceń i flag, które pozwalają przeprowadzać testy z różnymi specyfikacjami:
Flaga Android Testinteresor: flaga do włączenia Orchestratora – narzędzia,które pozwala uruchamiać testy aplikacji przy użyciu własnego wywołania
Instrumentation
. Laboratorium zawsze używa najnowszej wersji narzędzia Symphony.Flagi testowe pętli gry: zestaw flag konfiguracji, które włączają i kontrolują „tryb demonstracyjny” w celu symulowania działań graczy w aplikacjach gier. Dowiedz się więcej o testach pętli gry w Laboratorium.
Jednolita flaga fragmentacji (w wersji beta): flaga określająca liczbę fragmentów, między którymi chcesz równomiernie rozdzielić 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 (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na osobnych urządzeniach.
Flaga profili ruchu sieciowego (beta): flaga określająca profil sieci używany przez testy na urządzeniach fizycznych. Profile sieciowe emulują różne warunki sieci, co pozwala testować działanie aplikacji w niestabilnych lub nieprzewidywalnych sieciach.
Tworzenie skryptów poleceń gcloud w Laboratorium
Możesz użyć skryptów powłoki lub plików wsadowych, aby zautomatyzować polecenia testowania aplikacji mobilnych, które normalnie wykonuje się z użyciem wiersza poleceń gcloud. Ten przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym limitem czasu i zgłasza, czy test się zakończył:
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
Laboratorium udostępnia kilka kodów wyjściowych, które pomagają lepiej zrozumieć wyniki testów przeprowadzanych za pomocą skryptów lub plików wsadowych.
Obsługa kodów wyjściowych obsługi w Laboratorium
Kod wyjścia | Notatki |
---|---|
0 | Wszystkie wykonania testu zaliczone. |
1 | Wystąpił błąd ogólny. Możliwe przyczyny: nieistniejąca nazwa pliku lub błąd HTTP/sieciowy. |
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 się nie zaliczył. |
15 | Laboratorium Firebase nie mogło określić, czy macierz testów zaliczona, czy nie, z powodu nieoczekiwanego błędu. |
18 | Środowisko testowe użyte do wykonania tego testu nie jest obsługiwane z powodu niezgodnych wymiarów testowych. 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. |