Rozpoczynanie testowania za pomocą gcloud CLI

W tym przewodniku opisujemy, jak uruchomić test z instrumentacją, test Robo lub test pętli gry za pomocą gcloud CLI.

Pełną listę poleceń gcloud, których możesz używać z aplikacją 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. Zawiera on narzędzie gcloud CLI.

  3. Upewnij się, że 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 Twojego 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.

Opcjonalnie 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 z instrumentacją app-debug-test-unaligned.apk, które znajdują się w NotePad/app/build/outputs/apk/.

  • models list: pobierz 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 uruchamiania testów na danym 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 Androida.

    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 wydania oraz informacje o tym, czy urządzenie jest fizyczne czy wirtualne.

  • versions list: pobierz listę aktualnie dostępnych wersji systemu operacyjnego, na których możesz przeprowadzić testy.

    gcloud firebase test android versions list

    Aby później uruchamiać testy na wersji systemu operacyjnego Android, 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, na których chcesz przeprowadzić testy, zostanie użyta domyślna wersja podana w kolumnie TAGS.

    Przykładowe dane wyjściowe

    gcloud android versions list

  • locales list: pobierz aktualną listę ustawień regionalnych, na których możesz przeprowadzić testy.

    gcloud firebase test android locales list

    Pierwsza kolumna wyniku polecenia, LOCALE, zawiera identyfikator, którego możesz później użyć do uruchamiania testów w danym ustawieniu regionalnym. Jeśli nie określisz ustawień regionalnych, na których chcesz przeprowadzić testy, domyślnie zostanie użyty język angielski.

Krok 3. Uruchamianie testu

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 z instrumentacją.

Uruchom test Robo

Nawet jeśli nie masz testów z instrumentacją, możesz wyszukiwać błędy w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczne sprawdzanie interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, wykonując statyczną analizę różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje aplikację w celu znalezienia awarii i innych potencjalnych problemów.

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 domyślny.
  • Aby ułatwić 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 znajdziesz, 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. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom gcloud topic arg-files.

Aby dowiedzieć się, jak analizować wyniki testu Robo, przeczytaj artykuł Analizowanie wyników Laboratorium testów Firebase na Androidzie.

Uruchom test z instrumentacją

Teraz użyj narzędzia wiersza poleceń gcloud, aby uruchomić testy Espresso aplikacji Notatnik na określonych konfiguracjach urządzeń z Androidem. Aby uruchomić testy w app-debug-test-unaligned.apk, użyj typu testu instrumentation 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"
  • Jeśli plik APK testu jest określony za pomocą --test, parametr --type instrumentation jest domyślny.
  • Aby ułatwić 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 znajdziesz, 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. Aby dowiedzieć się, jak korzystać z tej funkcji, uruchom gcloud topic arg-files.

gcloud CLI obsługuje narzędzie Android Test Orchestrator. Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj gcloud firebase test android run z
--use-orchestrator flagą. Aby go wyłączyć, użyj flagi --no-use-orchestrator.

Możesz też kontrolować sposób uruchamiania testów z instrumentacją w Test Lab 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 plik APK testu. Możesz też sprawdzić, czy test, który się nie powiódł, był 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 1 z jego przypadków testowych nie powiedzie się z jakiegokolwiek powodu. Więcej informacji znajdziesz w gcloud firebase test android run.

Raporty pokrycia kodu na potrzeby testów z instrumentacją

Test Lab obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo. Jeśli masz zintegrowane z kompilacją aplikacji jedno z tych narzędzi , możesz uzyskać raport pokrycia kodu na potrzeby Test Lab testów, uruchamiając gcloud firebase test android run z kilkoma dodatkowymi argumentami. Jeśli narzędzie Android Test Orchestrator nie jest włączone, użyj tych argumentów:

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, używając jednocześnie 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 Test Lab zakończy uruchamianie testów, znajdź raporty pokrycia kodu w Google Cloud Storage:

  1. Otwórz link do konsoli Firebase, który narzędzie gcloud wyświetliło nad tabelą wyników testu w terminalu.
  2. Kliknij wykonanie testu z listy pod tym linkiem, aby otworzyć stronę z informacjami o tym wykonaniu.
  3. Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage z wynikami testu wykonania.
  4. Otwórz artifacts/coverage.ec, aby zobaczyć raport pokrycia kodu.

Analizowanie wyników testu

Po kilku minutach narzędzie gcloud wyświetli podstawowe podsumowanie wyników testu:

Wyniki testu polecenia

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

Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo

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

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

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

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

Dostępne polecenia i flagi

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

  • Flaga narzędzia Android Test Orchestrator: Flaga, która włącza Orchestrator, czyli narzędzie umożliwiające uruchamianie każdego testu 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 grach mobilnych. Więcej informacji o uruchamianiu testów pętli gry w 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 rozdzielić przypadki testowe. Fragmenty są uruchamiane równolegle na osobnych urządzeniach.

  • Flaga ręcznego dzielenia na fragmenty (w wersji beta): flaga, która określa 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 w sieci (w wersji beta): Flaga, która określa, którego profilu sieciowego używają testy na urządzeniach fizycznych. Profile sieciowe emulują różne warunki sieciowe, co pozwala testować wydajność aplikacji w sieciach niestabilnych lub nieprzewidywalnych.

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 przeciwnym razie uruchamiałbyś za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt powłoki bash uruchamia test z instrumentacją z 2-minutowym limitem czasu i informuje, czy uruchomienie testu zakończyło się 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

Kody wyjścia skryptu

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

Kody wyjścia skryptu w Test Lab

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zakończyły się pomyślnie.
1 Wystąpił błąd ogólny. Możliwe przyczyny: 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 element testowania (testowana klasa lub metoda klasy) w wykonaniu testu nie powiódł się.
15 Firebase Test Lab nie mogło określić, czy zestaw testów zakończył się pomyślnie, czy nie, 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 API Androida 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.