W tym przewodniku opisano, jak uruchomić test instrumentacji, Robo lub pętli gry przy użyciu interfejsu wiersza polecenia gcloud .
Pełną listę poleceń gcloud
, których możesz używać w aplikacji na Androida w laboratorium testowym, znajdziesz w dokumentacji referencyjnej narzędzia 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 SDK Google Cloud
- Upewnij się, że Twoja instalacja jest aktualna:
gcloud components update
- Zaloguj się do interfejsu wiersza polecenia gcloud przy użyciu 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 poniższych poleceń gcloud, aby wyświetlić urządzenia testowe i ustawienia regionalne dostępne dla Twojego testu.
Opcjonalnie możesz także pobrać przykładową aplikację Notatnik , aby od razu rozpocząć wykonywanie 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ę dostępnych urządzeń z Androidem, na których możesz przetestować.gcloud firebase test android models list
W wynikach polecenia:
- Kolumna
MODEL_ID
zawiera identyfikator, za pomocą którego możesz później przeprowadzić testy na modelu urządzenia. - Kolumna
OS_VERSION_ID
zawiera wersje systemu operacyjnego obsługiwane przez urządzenie.
Przykładowe wyjście
- Kolumna
models describe
: Uzyskaj więcej informacji na temat konkretnego modelu AndroidaMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Dane wyjściowe zawierają markę, producenta, wersję systemu operacyjnego, obsługiwane poziomy 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, z którymi możesz przetestować.gcloud firebase test android versions list
Możesz użyć identyfikatora z jednej z dwóch pierwszych kolumn wyników poleceń (
OS_VERSION_ID
iVERSION
), aby później uruchomić testy na wersji systemu operacyjnego Android. Jeśli nie określisz wersji systemu operacyjnego Android do przetestowania, zostanie użyta wersja domyślna 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 wyników polecenia,
LOCALE
, zawiera identyfikator, którego można później użyć do uruchomienia testów względem ustawień regionalnych. Jeśli nie określisz ustawień regionalnych, względem których chcesz przeprowadzić test, domyślnym ustawieniem regionalnym będzie język angielski.
Krok 3. Uruchom test
Teraz, gdy znasz już gamę 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 wyszukiwać błędy w swojej aplikacji. Użyj testu Robo, aby przeprowadzić automatyczny przegląd interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, przeprowadzając analizę statyczną różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje aplikację w poszukiwaniu awarii i innych potencjalnych problemów.
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 ukryty, 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"
do oznaczenia macierzy testowej. - Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując:
gcloud help firebase test android run
.
Alternatywą do podawania tych argumentów w wierszu poleceń jest opcjonalne określenie argumentów 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 ukryty, jeśli testowy plik 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"
do oznaczenia macierzy testowej. - Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując
gcloud help firebase test android run
.
Alternatywą do podawania tych argumentów w wierszu poleceń jest opcjonalne określenie argumentów 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 narzędzie Android Test Orchestrator . Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby to włączyć, użyj gcloud firebase test android run
z rozszerzeniem
--use-orchestrator
. Aby to wyłączyć, użyj flagi --no-use-orchestrator
.
Możesz także kontrolować sposób, w jaki Laboratorium testowe przeprowadza testy oprzyrządowania, korzystając z 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ą w testowym pliku APK. Możesz także dowiedzieć się, czy test, który się nie powiódł, rzeczywiście był wadliwy, czy nie, używając flagi --num-flaky-test-attempts
, która określa, ile razy należy ponowić wykonanie testu, jeśli jeden lub więcej przypadków testowych ponieść porażkę z jakiegokolwiek powodu. Aby dowiedzieć się więcej, zobacz test gcloud firebase na Androidzie .
Raporty pokrycia kodu dla testów oprzyrządowania
Laboratorium testowe obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo . Jeśli w kompilacji aplikacji zintegrowane jest któreś z tych narzędzi, możesz uzyskać raport pokrycia kodu dla testów w laboratorium testowym, uruchamiając gcloud firebase test android run
z dodatkowymi argumentami. Jeśli Android Test Orchestrator nie jest włączony, użyj następujących poleceń:
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 Laboratorium Testowe zakończy przeprowadzanie testów, znajdź raporty dotyczące pokrycia kodu w Google Cloud Storage:
- Otwórz link do konsoli Firebase wydrukowany przez narzędzie
gcloud
nad tabelą wyników testu w terminalu. - Kliknij wykonanie testu na liście pod tym łączem, aby otworzyć stronę ze szczegółami tego wykonania.
- Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage zawierającego wyniki testu tego wykonania.
- Otwórz
artifacts/coverage.ec
aby zobaczyć raport pokrycia kodu.
Przeanalizuj wyniki swoich testów
Po kilku minutach narzędzie gcloud wydrukuje podstawowe podsumowanie wyników testu:
Dane wyjściowe uruchomienia testu z wiersza poleceń zawierają także łącze umożliwiające wyświetlenie wyników testu. Aby dowiedzieć się więcej o interpretacji tych wyników, zobacz Analizowanie wyników laboratorium testowego Firebase pod kątem wyników Androida .
Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo
Test Robo automatycznie uzupełnia ekrany logowania, które korzystają z konta Google do uwierzytelnienia, chyba że użyjesz parametru --no-auto-google-login
. Może także wykonywać niestandardowe ekrany logowania, korzystając z podanych przez Ciebie poświadczeń konta testowego. Możesz także użyć tego parametru, aby podać niestandardowy tekst wejściowy dla innych pól tekstowych używanych przez Twoją aplikację.
Aby wypełnić pola tekstowe w aplikacji, użyj parametru --robo-directives
i podaj rozdzieloną przecinkami listę par key-value
, gdzie key
jest nazwa zasobu systemu Android docelowego elementu interfejsu użytkownika, a value
jest ciąg tekstowy . Możesz także użyć tej flagi, aby poinformować Robo, aby ignorował określone elementy interfejsu użytkownika (np. przycisk „wyloguj”). Pola EditText
są obsługiwane, ale nie pola tekstowe w elementach interfejsu użytkownika WebView
.
Na przykład możesz użyć następującego parametru do niestandardowego logowania:
--robo-directives username_resource=username,password_resource=password
Dostępne polecenia i flagi
Interfejs CLI laboratorium testowego gcloud zawiera kilka poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:
Flaga Android Test Orchestrator : flaga włączająca Orchestrator, narzędzie umożliwiające uruchamianie każdego testu aplikacji w ramach własnego wywołania
Instrumentation
. Laboratorium testowe zawsze uruchamia najnowszą wersję programu Orchestrator.Flagi testowe pętli gry : zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” w celu symulowania działań gracza w aplikacjach do gier. Dowiedz się więcej o przeprowadzaniu testów Game Loop w Test Lab .
Flaga Uniform Sharding (w wersji beta) : flaga określająca liczbę fragmentów, w których chcesz równomiernie rozdzielić przypadki testowe. Fragmenty działają równolegle na oddzielnych urządzeniach.
Flaga ręcznego fragmentowania (w wersji beta) : flaga określająca grupę pakietów, klas i/lub przypadków testowych, które mają być uruchamiane w fragmencie (grupa przypadków testowych). Fragmenty działają równolegle na oddzielnych urządzeniach.
Flaga profili ruchu sieciowego (w wersji beta) : flaga określająca profil sieciowy używany w testach z urządzeniami fizycznymi. Profile sieciowe emulują różne warunki sieciowe, umożliwiając testowanie wydajności aplikacji w sieciach zawodnych i nieprzewidywalnych.
Skryptowanie poleceń gcloud w laboratorium testowym
Możesz używać skryptów powłoki lub plików wsadowych, aby zautomatyzować polecenia testowania aplikacji mobilnych, które w przeciwnym razie uruchamiałbyś za pomocą wiersza poleceń gcloud. Poniższy przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym limitem czasu i raportuje, 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 zakończenia, których można użyć w celu lepszego zrozumienia wyników testów uruchamianych przy użyciu skryptów lub plików wsadowych.
Skryptowe kody wyjścia dla laboratorium testowego
Kod wyjścia | Notatki |
---|---|
0 | Wszystkie wykonania testowe zaliczone. |
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 | Jeden lub więcej przypadków testowych (testowanych klas lub metod klas) w ramach wykonania testu nie przeszło pomyślnie. |
15 | Laboratorium testowe Firebase nie mogło określić, czy macierz testowa przeszła pomyślnie, 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 systemu Android nie jest obsługiwany przez wybrany typ urządzenia. |
19 | Matryca testowa została anulowana przez użytkownika. |
20 | Wystąpił błąd infrastruktury testowej. |