Rozpoczynanie testowania za pomocą gcloud CLI

W tym przewodniku opisujemy, jak przeprowadzić test instrumentacji, Robo lub pętli gry za pomocą interfejsu wiersza poleceń gcloud.

Pełną listę dostępnych poleceń gcloud przy użyciu aplikacji na Androida w Laboratorium, 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 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 obsługiwane wersje systemów operacyjnych 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 tego, czy urządzenie jest fizyczne, czy wirtualne.

  • versions list: pobierz listę aktualnie dostępnych wersji systemu operacyjnego do przetestowania przeciwko Google.

    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, które mają zostać użyte w teście, jest używana domyślnie 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ó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 prowadzisz żadnych testów narzędziowych, możesz pod kątem błędów w aplikacji. Użyj testu Robo do automatycznego sprawdzenia do 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. Bieganie 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 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. Bieganie gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.

Interfejs wiersza poleceń gcloud obsługuje narzędzie Android Test Assistant. Narzędzie Oracle wymaga AndroidaJUnitRunner w wersji 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 Laboratorium przeprowadza testy narzędzi 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

Laboratorium obsługuje narzędzia do raportowania zasięgu kodu EMMA JaCoCo Jeśli używasz dowolnego z tych narzędzi zintegrowaną z kompilacją aplikacji, możesz uzyskać raport zasięgu kodu dotyczący Testy w Laboratorium: gcloud firebase test android run dodatkowych argumentów. Jeśli narzędzie Android Test Agency nie jest włączone, użyj :

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, a jednocześnie korzystasz z Android Test Aranżer, 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 zakończy testy, znajdź raporty zasięgu kodu w Google Cloud Storage:

  1. Otwórz link do konsoli Firebase wyświetlony przez narzędzie gcloud nad tabelą tabeli wyników testów 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 Analiza wyników Laboratorium Firebase dla Androida

Niestandardowy login i wprowadzanie tekstu z testem 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ę” ). EditText tylko pola tekstowe w elementach interfejsu WebView są obsługiwane.

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 w Laboratorium ma kilka poleceń i flag, które pozwalają 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. Zawsze Laboratorium 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 Laboratorium.

  • Jednolita flaga fragmentacji (w wersji beta): Flaga określająca liczbę fragmentów, do których chcesz rozłożyć równomiernie rozpowszechniania przypadków testowych. 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 sieci, co pozwala w celu przetestowania działania 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 można by uruchomić przy użyciu wiersza poleceń gcloud. Poniżej przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym czasem oczekiwania, raportów, jeśli test przebiegł 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

Skrypty wyjścia

W Laboratorium znajdziesz kilka kodów wyjścia, które pomogą Ci lepiej zrozumieć wyników testów przeprowadzonych za pomocą skryptów lub plików wsadowych.

Obsługa kodów wyjściowych obsługi w Laboratorium

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zaliczone.
1 Wystąpił błąd ogólny. Możliwe przyczyny: nazwa pliku, w którym występuje nie istnieje albo występuje 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 testu nie udało się wykonać.
15 Laboratorium Firebase nie mogło określić, czy tablica testów zaliczona, czy niepowodzenie z powodu nieoczekiwanego błędu.
18 Środowisko testowe tego wykonania testu nie jest obsługiwane z tych powodów: niezgodne wymiary testowe. 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.