Rozpoczynanie testowania za pomocą gcloud CLI

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

  1. Pobierz pakiet SDK Google Cloud
  2. Obejmuje to gcloud CLI.

  3. Sprawdź, czy masz aktualną wersję systemu:
    gcloud components update
    
  4. Zaloguj się w interfejsie wiersza poleceń gcloud za pomocą konta Google:
    gcloud auth login
    
  5. Ustaw projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu Firebase:
    gcloud config set project PROJECT_ID
    

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

    Dane wyjściowe z listą modeli Androida w gcloud firebase test

  • models describe: uzyskaj więcej informacji o określonym urządzeniu z Androidem MODEL_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 i VERSION), 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 kolumnie TAGS.

    Przykładowe dane wyjściowe

    Lista wersji gcloud android

  • 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:

  1. Otwórz link do konsoli Firebase, który narzędzie gcloud wydrukowało nad tabelą wyników testu w terminalu.
  2. Na liście pod tym linkiem kliknij wykonanie testu, by otworzyć stronie szczegółów.
  3. Kliknij Testuj wyniki, aby przejść do zasobnika Cloud Storage z tym wyniki testu.
  4. 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:

Wyniki testu poleceń

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.