Rozpoczynanie testowania za pomocą gcloud CLI

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

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

Zanim zaczniesz

Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

Krok 1. Konfigurowanie gcloud CLI

  1. Pobierz pakiet SDK Google Cloud.
  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 w Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu w 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 na potrzeby testu, użyj tych poleceń gcloud.

Możesz też pobrać przykładową aplikację Notatnik, aby od razu zacząć wykonywać polecenia. Użyj pliku binarnego app-debug-unaligned.apk i pliku testów instrumentacyjnych app-debug-test-unaligned.apk, które znajdują się w NotePad/app/build/outputs/apk/.

  • models list: uzyskaj 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

    Dane wyjściowe polecenia gcloud firebase test android models list

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

    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_ID i VERSION). 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 locales list

    Pierwsza kolumna wyniku polecenia, LOCALE, zawiera identyfikator, którego możesz później użyć do przeprowadzenia testów w odniesieniu do danego regionu. 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 modeli urządzeń, ustawień regionalnych i wersji systemu operacyjnego 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 testy instrumentacyjne.

Przeprowadź test Robo

Nawet jeśli nie masz żadnych testów z instrumentacją, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić sprawdzenie automatyczne interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, przeprowadzając statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje ją 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 zestawów testów w konsoli Firebase, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label", aby oznaczyć zestaw testów.
  • Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując: gcloud help firebase test android run.

Zamiast określać te argumenty w wierszu poleceń, możesz opcjonalnie podać 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.

Przeprowadź test z instrumentacją

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 --type jest domyślny, jeśli plik APK testu jest określony za pomocą parametru --test.
  • Aby łatwiej identyfikować i znajdować zestawy testów w konsoli Firebase, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label", aby je oznaczyć.
  • Pełny zestaw opcji wiersza poleceń do uruchamiania testów możesz wyświetlić, wpisując gcloud help firebase test android run.

Zamiast określać te argumenty w wierszu poleceń, możesz opcjonalnie podać 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. Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby ją włączyć, użyj 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 uruchamia 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 ponownie podjąć próbę wykonania testu, jeśli co najmniej 1 przypadek testowy 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, takie jak EMMA i JaCoCo. 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 narzędzia 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 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 wyświetli podstawowe podsumowanie wyników testu:

Wyniki testu polecenia

Dane wyjściowe testu uruchomionego w wierszu poleceń zawierają też link do wyświetlania wyników testu. Więcej informacji o interpretowaniu tych wyników znajdziesz w artykule Analizowanie wyników Firebase Test Lab na Androida.

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 znacznika, aby poinformować Robo, że ma ignorować określone elementy interfejsu (np. przycisk „Wyloguj się”). EditText pola 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 o różnych specyfikacjach:

  • 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 uruchamia najnowszą wersję Orchestratora.

  • Flagi testu pętli gry: zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” symulujący działania gracza w aplikacjach z grami. 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 określająca 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 części (w wersji beta): flaga, która określa grupę pakietów, klas lub przypadków testowych do uruchomienia w części (grupie przypadków testowych). Fragmenty są uruchamiane równolegle na osobnych urządzeniach.

  • Flaga profili ruchu w sieci (w wersji beta): flaga, która określa, którego profilu sieciowego używają Twoje testy na urządzeniach fizycznych. Profile sieci emulują różne warunki sieciowe, co pozwala 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 powłoki 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 wyjścia dla Test Lab

Kod wyjścia Uwagi
0 Wszystkie wykonania testów zostały zaliczone.
1 Wystąpił ogólny błąd. 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 Firebase Test Lab nie udało się ustalić, czy zestaw testów zakończył się powodzeniem czy niepowodzeniem 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 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.