Rozpoczynanie testowania za pomocą gcloud CLI

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

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

  3. Sprawdź, czy Twoja instalacja jest aktualna:
    gcloud components update
    
  4. Zaloguj się w interfejsie wiersza poleceń gcloud za pomocą konta Google:
    gcloud auth login
    
  5. Skonfiguruj projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator Twojego projektu Firebase:
    gcloud config set project PROJECT_ID
    

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

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

  • models describe: uzyskaj więcej informacji o konkretnym Androidzie 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 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 i VERSION). Jeśli nie określisz wersji systemu operacyjnego Android, które mają zostać przetestowane, zostanie użyta domyślna wartość podana 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ó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:

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

Wyniki testu poleceń

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.