Rozpoczynanie testowania za pomocą gcloud CLI

Z tego przewodnika dowiesz się, jak uruchomić test instrumentacji, Robo lub Game Loop za pomocą gcloud CLI.

Pełną listę gcloudpoleceń, których możesz używaćTest Lab w aplikacji na Androida w Test Lab, znajdziesz w dokumentacji referencyjnej dotyczącej gcloud firebase test android.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.

Krok 1. Konfigurowanie gcloud CLI

  1. Pobierz Google Cloud SDK.
  2. Obejmuje to narzędzie gcloud CLI.

  3. Sprawdź, czy instalacja jest aktualna:
    gcloud components update
    
  4. Zaloguj się w gcloud CLI 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. Sprawdzanie dostępnych urządzeń testowych

Aby wyświetlić urządzenia testowe i ustawienia regionalne dostępne w ramach testu, użyj tych 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 NotePad/app/build/outputs/apk/.

  • models list: uzyskać aktualną listę urządzeń z Androidem, na których możesz przeprowadzić testy;

    gcloud firebase test android models list

    W wyniku polecenia:

    • Kolumna MODEL_ID zawiera identyfikator, którego możesz 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

    gcloud firebase test android models list output

  • models describe: uzyskaj więcej informacji o konkretnym urządzeniu z Androidem MODEL_ID.

    gcloud firebase test android models describe MODEL_ID

    Dane wyjściowe zawierają markę, producenta, wersje systemu operacyjnego, obsługiwane poziomy interfejsu API, obsługiwane interfejsy ABI, daty wprowadzenia na rynek oraz informację, czy urządzenie jest fizyczne czy wirtualne.

  • versions list: Uzyskaj listę obecnie dostępnych wersji systemu operacyjnego, które możesz przetestować.

    gcloud firebase test android versions list

    Aby później przeprowadzić testy na wersji Androida, możesz użyć identyfikatora z jednej z 2 pierwszych kolumn danych wyjściowych polecenia (OS_VERSION_IDVERSION). Jeśli nie określisz wersji systemu operacyjnego Android, które chcesz przetestować, zostanie użyta domyślna wersja podana w kolumnie TAGS.

    Przykładowe dane wyjściowe

    gcloud android versions list

  • locales list: pobierz aktualną listę języków, w których można przeprowadzać testy.

    gcloud firebase test android versions list

    Pierwsza kolumna danych wyjściowych polecenia, LOCALE, zawiera identyfikator, którego możesz później użyć do przeprowadzenia testów w odniesieniu do danego języka. Jeśli nie określisz regionów, w których chcesz przeprowadzić testy, domyślnie użyjemy języka angielskiego.

Krok 3. Przeprowadź test

Teraz, gdy znasz zakres dostępnych modeli urządzeń, ustawień regionalnych i wersji systemu operacyjnego, możesz określić urządzenia za pomocą polecenia gcloud firebase test android run i flagi --device, aby uruchomić testy Robo lub testy instrumentacyjne.

Przeprowadź test Robo

Nawet jeśli nie masz żadnych testów instrumentacyjnych, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczne sprawdzenie interfejsu aplikacji. Testowanie automatyczne polega na przeprowadzeniu statycznej analizy różnych ścieżek w interfejsie użytkownika aplikacji, a następnie na przejściu przez aplikację w celu znalezienia awarii i innych potencjalnych problemów.

Aby uruchomić test Robo, wpisz to 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 domyślny, jeśli nie podano wartości --type.
  • Aby ułatwić sobie identyfikowanie i znajdowanie macierzy testowych w konsoli Firebase, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label" do ich oznaczania.
  • Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując: gcloud help firebase test android run.

Zamiast podawać te argumenty w wierszu poleceń, możesz opcjonalnie określić je w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.

Aby dowiedzieć się, jak analizować wyniki testu Robo, przeczytaj artykuł Analizowanie wyników testu.

Uruchom test narzędzi

Teraz użyj narzędzia wiersza poleceń gcloud, aby 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 domyślny, jeśli testowy plik APK jest określony za pomocą parametru --test.
  • Aby łatwiej identyfikować i lokalizować macierze testowe w Firebase konsoli, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label" do ich oznaczania.
  • Pełną listę opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując gcloud help firebase test android run.

Zamiast podawać te argumenty w wierszu poleceń, możesz opcjonalnie określić je w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files, aby dowiedzieć się, jak korzystać z tej funkcji.

Interfejs wiersza poleceń gcloud obsługuje Android Test Orchestrator. Narzędzie Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby ją włączyć, użyj skrótu gcloud firebase test android run z flagą
--use-orchestrator. Aby ją wyłączyć, użyj flagi --no-use-orchestrator.

Możesz też kontrolować sposób, w jaki Test Lab przeprowadza testy instrumentacji, za pomocą dodatkowych flag, które nie są widoczne 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 też sprawdzić, czy test, który się nie powiódł, był w rzeczywistości niestabilny, czy nie, używając flagi --num-flaky-test-attempts, która określa, ile razy należy ponowić wykonanie testu, jeśli co najmniej jeden z jego przypadków testowych nie powiedzie się z jakiegokolwiek powodu. Więcej informacji znajdziesz w artykule gcloud firebase test android run.

Raporty pokrycia kodu w przypadku testów instrumentacji

Test Lab obsługuje narzędzia do raportowania pokrycia kodu: EMMAJaCoCo. Jeśli masz zintegrowane z kompilacją aplikacji jedno z tych narzędzi, możesz uzyskać raport o pokryciu kodu w przypadku testów Test Lab, uruchamiając gcloud firebase test android run z dodatkowymi argumentami. Jeśli Android Test Orchestrator nie jest włączony, użyj tego kodu:

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 pokryciu kodu, a jednocześnie używasz Android Test Orchestratora, 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 testy, znajdź raporty o pokryciu 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. Kliknij wykonanie testu na liście pod tym linkiem, aby otworzyć stronę z informacjami o tym wykonaniu.
  3. Kliknij Wyniki testu, aby przejść do zasobnika Cloud Storage z wynikami testu tego wykonania.
  4. Otwórz artifacts/coverage.ec, aby wyświetlić raport o pokryciu kodu.

Analizowanie wyników testu

Po kilku minutach narzędzie gcloud wydrukuje podstawowe podsumowanie wyników testu:

Wyniki testu polecenia

Wyniki testu uruchomionego w wierszu poleceń zawierają też link do wyświetlenia wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie wyników Firebase Test Lab na Androidzie.

Niestandardowe logowanie i wpisywanie tekstu w teście Robo

Test Robo automatycznie wypełnia ekrany logowania, które do uwierzytelniania używają konta Google, chyba że użyjesz parametru --no-auto-google-login. Może też wypełniać niestandardowe ekrany logowania za pomocą danych logowania na konto testowe, które podasz. Możesz też użyć tego parametru, aby podać niestandardowy tekst wejściowy w innych polach tekstowych używanych przez aplikację.

Aby wypełnić pola tekstowe w aplikacji, użyj parametru --robo-directives i podaj listę par key-value rozdzielonych przecinkami, gdzie key to nazwa zasobu Androida docelowego elementu interfejsu, a value to ciąg tekstowy. Możesz też użyć tego flagi, aby poinformować Robo, że ma ignorować określone elementy interfejsu (np. przycisk „Wyloguj się”). EditText są obsługiwane, ale nie pola tekstowe w elementach interfejsu WebView.

Możesz na przykład użyć tego parametru w przypadku niestandardowego logowania:

--robo-directives username_resource=username,password_resource=password

Dostępne polecenia i flagi

Interfejs wiersza poleceń Test Lab gcloud ma kilka poleceń i flag, które umożliwiają przeprowadzanie testów z różnymi specyfikacjami:

  • Flaga Android Test Orchestrator: Flaga umożliwiająca włączenie Orchestratora, narzędzia, które pozwala uruchamiać każdy test aplikacji w osobnym wywołaniu Instrumentation. Test Lab zawsze korzysta z najnowszej wersji Orchestratora.

  • Flagi testowe pętli gry: zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” symulujący działania gracza w aplikacjach do gier. Dowiedz się więcej o przeprowadzaniu testów pętli gry za pomocą Test Lab.

  • Flaga równomiernego dzielenia na fragmenty (w wersji beta): flaga, która określa liczbę fragmentów, na które chcesz równomiernie podzielić przypadki testowe. Fragmenty są uruchamiane równolegle na osobnych urządzeniach.

    .

  • Flaga ręcznego dzielenia na partycje (w wersji beta): flaga, która określa grupę pakietów, klas lub przypadków testowych do uruchomienia w partycji (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na osobnych urządzeniach.

  • Flaga profili ruchu w sieci (w wersji beta): flaga określająca, którego profilu sieciowego używają testy na urządzeniach fizycznych. Profile sieci emulują różne warunki sieciowe, dzięki czemu możesz testować wydajność aplikacji w niestabilnych lub nieprzewidywalnych sieciach.

Tworzenie skryptów poleceń gcloud za pomocą Test Lab

Możesz używać skryptów powłoki lub plików wsadowych do automatyzowania poleceń testowania aplikacji mobilnych, które w inny sposób uruchamiasz za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt bash przeprowadza test z instrumentacją z 2-minutowym limitem czasu i informuje, 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

Kody wyjścia skryptu

Test Lab udostępnia kilka kodów zakończenia, które pomagają lepiej zrozumieć wyniki testów uruchamianych za pomocą skryptów lub plików wsadowych.

Skrypty kodów zakończenia dla Test Lab

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zostały zaliczone.
1 Wystąpił błąd ogólny. Możliwe przyczyny to 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 wykonania testu nie został zaliczony.
15 Nie udało się ustalić, czy macierz testowa została zaliczona, czy nie, z powodu nieoczekiwanego błędu.Firebase Test Lab
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 Androida nie jest obsługiwany przez wybrany typ urządzenia.
19 Użytkownik anulował macierz testową.
20 Wystąpił błąd infrastruktury testowej.