W tym przewodniku opisano, jak przeprowadzić test Instrumentation, Robo lub Game Loop za pomocą interfejsu wiersza polecenia gcloud .
Pełną listę poleceń gcloud
, których możesz używać z aplikacją na Androida w Test Lab, znajdziesz w dokumentacji referencyjnej gcloud firebase test android
.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .
Krok 1. Skonfiguruj interfejs wiersza polecenia gcloud
- Pobierz pakiet Google Cloud SDK.
- Upewnij się, że instalacja jest aktualna:
gcloud components update
- Zaloguj się do gcloud CLI, używając swojego konta Google:
gcloud auth login
- Ustaw swój projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator twojego projektu Firebase:
gcloud config set project PROJECT_ID
Obejmuje to narzędzie gcloud CLI.
Krok 2. Sprawdź dostępne urządzenia testowe
Użyj następujących poleceń gcloud, aby wyświetlić urządzenia testowe i języki, które są dostępne dla Twojego testu.
Opcjonalnie możesz również pobrać przykładową aplikację Notatnik , aby od razu rozpocząć uruchamianie poleceń. Użyj pliku binarnego app-debug-unaligned.apk
i pliku testów oprzyrządowania app-debug-test-unaligned.apk
, które znajdują się w NotePad/app/build/outputs/apk/
.
models list
: Uzyskaj aktualną listę urządzeń z Androidem dostępnych do przetestowania.gcloud firebase test android models list
W danych wyjściowych polecenia:
- Kolumna
MODEL_ID
zawiera identyfikator, którego możesz później użyć do uruchomienia testów na modelu urządzenia. - Kolumna
OS_VERSION_ID
zawiera wersje systemów operacyjnych obsługiwanych przez urządzenie.
Przykładowe wyjście
- Kolumna
models describe
: Uzyskaj więcej informacji na temat konkretnegoMODEL_ID
Androida.gcloud firebase test android models describe MODEL_ID
Dane wyjściowe zawierają markę modelu urządzenia, producenta, wersje systemu operacyjnego, obsługiwane poziomy interfejsu API, obsługiwane interfejsy binarne aplikacji (ABI), daty wydania oraz informację, czy urządzenie jest fizyczne, czy wirtualne.
versions list
: Uzyskaj listę aktualnie dostępnych wersji systemu operacyjnego do przetestowania.gcloud firebase test android versions list
Możesz użyć identyfikatora z jednej z pierwszych dwóch kolumn danych wyjściowych polecenia (
OS_VERSION_ID
iVERSION
), aby później uruchomić testy z wersją systemu operacyjnego Android. Jeśli nie określisz wersji systemu operacyjnego Android do przetestowania, zostanie użyta domyślna wartość podana w kolumnieTAGS
.Przykładowe wyjście
locales list
: pobierz aktualną listę ustawień regionalnych dostępnych do przetestowania.gcloud firebase test android versions list
Pierwsza kolumna danych wyjściowych polecenia,
LOCALE
, zawiera identyfikator, którego można później użyć do przeprowadzenia testów dotyczących ustawień narodowych. Jeśli nie określisz ustawień regionalnych do przetestowania, domyślnym ustawieniem regionalnym będzie język angielski.
Krok 3. Uruchom test
Teraz, gdy znasz zakres modeli urządzeń, ustawień regionalnych i wersji systemów operacyjnych 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 oprzyrządowania.
Uruchom test Robo
Nawet jeśli nie masz żadnych testów oprzyrządowania, nadal możesz szukać błędów w swojej aplikacji. Skorzystaj z testu Robo, aby przeprowadzić automatyczną weryfikację interfejsu użytkownika aplikacji. Robo test sprawdza aplikację, przeprowadzając statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje aplikację, aby znaleźć awarie i inne potencjalne problemy.
Aby uruchomić test Robo, uruchom następujące 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"
- Parametr
--type robo
jest niejawny, jeśli nie określono wartości--type
. - Aby pomóc Ci zidentyfikować i zlokalizować macierze testowe w konsoli Firebase, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label"
aby oznaczyć macierz testową. - Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując:
gcloud help firebase test android run
.
Jako alternatywę dla określania tych argumentów w wierszu poleceń, możesz opcjonalnie określić swoje argumenty w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files
aby dowiedzieć się, jak korzystać z tej funkcji.
Aby dowiedzieć się, jak sprawdzić wyniki testu Robo, zobacz Analizowanie wyników testu .
Uruchom test oprzyrządowania
Teraz użyj narzędzia wiersza poleceń gcloud
, aby uruchomić testy Espresso aplikacji Notatnik na określonych konfiguracjach urządzeń z Androidem. Użyj typu testu instrumentation
, aby uruchomić testy w 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 oprzyrządowania
--type
jest niejawny, jeśli testowy pakiet APK jest określony za pomocą--test
. - Aby pomóc Ci zidentyfikować i zlokalizować macierze testowe w konsoli Firebase, możesz użyć opcjonalnej flagi
--client-details matrixLabel="Example matrix label"
aby oznaczyć macierz testową. - Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując
gcloud help firebase test android run
.
Jako alternatywę dla określania tych argumentów w wierszu poleceń, możesz opcjonalnie określić swoje argumenty w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files
aby dowiedzieć się, jak korzystać z tej funkcji.
Interfejs wiersza polecenia gcloud obsługuje program Android Test Orchestrator . Program Orchestrator wymaga systemu AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj gcloud firebase test android run
z
--use-orchestrator
. Aby go wyłączyć, użyj flagi --no-use-orchestrator
.
Możesz także kontrolować sposób, w jaki Test Lab przeprowadza testy oprzyrządowania, używając dodatkowych flag, które nie są pokazane 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 również dowiedzieć się, czy twój test, który się nie powiódł, był rzeczywiście niestabilny, czy nie, używając flagi --num-flaky-test-attempts
, która określa, ile razy wykonanie testu powinno zostać powtórzone, jeśli jeden lub więcej przypadków testowych zawieść z jakiegokolwiek powodu. Aby dowiedzieć się więcej, zobacz gcloud firebase test Android run .
Raporty pokrycia kodu dla testów oprzyrządowania
Test Lab obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo . Jeśli jedno z narzędzi jest zintegrowane z kompilacją Twojej aplikacji, możesz uzyskać raport pokrycia kodu dla testów w laboratorium testowym, uruchamiając gcloud firebase test android run
z dodatkowymi argumentami. Jeśli program Android Test Orchestrator nie jest włączony, użyj następujących opcji:
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 narzędzia Android Test Orchestrator, zmodyfikuj zmienne środowiskowe w następujący 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 przeprowadzanie testów, znajdź raporty pokrycia kodu w Google Cloud Storage:
- Otwórz łącze konsoli Firebase, które narzędzie
gcloud
wydrukowało nad tabelą wyników testu w terminalu. - Kliknij wykonanie testu na liście pod tym linkiem, aby otworzyć stronę szczegółów tego wykonania.
- Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage z wynikami testu tego wykonania.
- Otwórz
artifacts/coverage.ec
aby zobaczyć raport pokrycia kodu.
Analizuj wyniki swoich testów
Po kilku minutach narzędzie gcloud drukuje podstawowe podsumowanie wyników testu:
Dane wyjściowe uruchomienia testu wiersza polecenia zawierają również łącze umożliwiające wyświetlenie wyników testu. Aby dowiedzieć się więcej o tym, jak interpretować te wyniki, zobacz Analizowanie wyników Firebase Test Lab dla Androida .
Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo
Robo test automatycznie uzupełnia ekrany logowania, które używają konta Google do uwierzytelniania, chyba że użyjesz parametru --no-auto-google-login
. Może również wypełniać niestandardowe ekrany logowania przy użyciu danych logowania do konta testowego, które podajesz. Możesz również użyć tego parametru, aby podać niestandardowy tekst wejściowy dla innych pól tekstowych używanych przez aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj parametru --robo-directives
i podaj listę par key-value
oddzieloną przecinkami, gdzie key
jest nazwa zasobu Androida docelowego elementu interfejsu użytkownika, a value
jest ciąg tekstowy . Możesz także użyć tej flagi, aby powiedzieć Robo, aby ignorował określone elementy interfejsu użytkownika (np. przycisk „wyloguj”). Pola EditText
są obsługiwane, ale nie pola tekstowe w elementach interfejsu WebView
.
Na przykład możesz użyć następującego parametru do logowania niestandardowego:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Test Lab gcloud CLI ma kilka dostępnych poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:
Flaga programu Android Test Orchestrator : flaga umożliwiająca włączenie programu Orchestrator, narzędzia umożliwiającego uruchamianie każdego testu aplikacji w osobnym wywołaniu
Instrumentation
. Test Lab zawsze uruchamia najnowszą wersję programu Orchestrator.Flagi testowe Game Loop : zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” w celu symulacji działań gracza w aplikacjach gier. Dowiedz się więcej o przeprowadzaniu testów Game Loop w Test Lab .
Uniform Sharding flag (w wersji beta) : flaga określająca liczbę fragmentów, na które chcesz równomiernie rozłożyć przypadki testowe. Odłamki są uruchamiane równolegle na oddzielnych urządzeniach.
Flaga ręcznego dzielenia na fragmenty (w wersji beta) : flaga określająca grupę pakietów, klas i/lub przypadków testowych do uruchomienia we fragmentu (grupa przypadków testowych). Odłamki są uruchamiane równolegle na oddzielnych urządzeniach.
Flaga profili ruchu sieciowego (w wersji beta) : flaga określająca, który profil sieciowy jest używany w testach z urządzeniami fizycznymi. Profile sieciowe emulują różne warunki sieciowe, umożliwiając testowanie wydajności aplikacji w zawodnych lub nieprzewidywalnych sieciach.
Skryptowanie 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 normalnie wykonywałbyś za pomocą wiersza poleceń gcloud. Poniższy przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym limitem czasu i zgłasza, czy przebieg testu zakończył się pomyślnie:
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
Laboratorium testowe udostępnia kilka kodów wyjścia, których można użyć, aby lepiej zrozumieć wyniki testów uruchamianych przy użyciu skryptów lub plików wsadowych.
Skryptowanie kodów wyjścia dla Test Lab
Kod wyjścia | Notatki |
---|---|
0 | Wszystkie wykonania testowe zakończone pomyślnie. |
1 | Wystąpiła ogólna awaria. Możliwe przyczyny to: nazwa pliku, która nie istnieje lub błąd HTTP/sieci. |
2 | Testowanie zostało zakończone, ponieważ podano nieznane polecenia lub argumenty. |
10 | Co najmniej jeden przypadek testowy (testowane klasy lub metody klas) w wykonaniu testu nie przeszedł pomyślnie. |
15 | Laboratorium testowe Firebase nie mogło określić, czy macierz testów zakończyła 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 testowych. Ten błąd może wystąpić, jeśli wybrany poziom interfejsu API systemu Android nie jest obsługiwany przez wybrany typ urządzenia. |
19 | Macierz testowa została anulowana przez użytkownika. |
20 | Wystąpił błąd infrastruktury testowej. |