Rozpoczynanie testowania za pomocą gcloud CLI

Ten przewodnik opisuje, jak uruchomić test instrumentacji, test Robo lub test pętli gry za pomocą gcloud CLI.

Pełną listę poleceń gcloud, których możesz używać w aplikacji na Androida w Test Lab, znajdziesz w dokumentacji referencyjnej 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 pakiet 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. Skonfiguruj 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 lokalizacje dostępne w przypadku 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 pomiarowych app-debug-test-unaligned.apk, które znajdują się w folderze 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żywać do uruchamiania 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 dane wyjściowe

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

    gcloud firebase test android models describe MODEL_ID

    Dane wyjściowe zawierają markę, producenta i wersje systemu operacyjnego modelu urządzenia, obsługiwane poziomy interfejsu API, obsługiwane interfejsy binarne aplikacji (ABI), daty wydania oraz informacje o tym, czy urządzenie jest fizyczne, czy wirtualne.

  • versions list: uzyskaj listę obecnie dostępnych wersji systemu operacyjnego, na których możesz przeprowadzić test.

    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, na których chcesz przeprowadzić test, zostanie użyta wersja domyślna wskazana w kolumnie TAGS.

    Przykładowe dane wyjściowe

    gcloud android versions list

  • locales list: uzyskaj aktualną listę języków, na których możesz przeprowadzić test.

    gcloud firebase test android versions list

    Pierwsza kolumna danych wyjściowych polecenia, LOCALE, zawiera identyfikator, którego możesz później użyć do przeprowadzania testów w danym regionie. Jeśli nie określisz języków, w których będą prowadzone testy, domyślnym językiem będzie angielski.

Krok 3. Przeprowadzanie testu

Teraz, gdy znasz zakres modeli urządzeń, lokalizacji 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 insturkcji.

Przeprowadź test Robo

Nawet jeśli nie masz żadnych testów pomiarowych, nadal możesz szukać błędów w aplikacji. Użyj testu Robo, aby przeprowadzić automatyczną kontrolę interfejsu użytkownika aplikacji. Test robota testuje aplikację, wykonując statyczną analizę różnych ścieżek w interfejsie użytkownika, a następnie indeksuje aplikację, aby znaleźć awarie i inne potencjalne problemy.

Aby uruchomić test Robo, uruchom 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"
  • Jeśli nie podasz wartości parametru --type, parametr --type robo będzie używany domyślnie.
  • Aby ułatwić sobie identyfikację i lokalizowanie w konsoli Firebase macierzy testowych, możesz użyć opcjonalnego flagi --client-details matrixLabel="Example matrix label", aby oznaczyć matrycę testową.
  • Aby wyświetlić pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisz: gcloud help firebase test android run.

Zamiast podawać 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ł Analiza wyników testu.

Uruchom test narzędzi

Teraz użyj narzędzia wiersza poleceń gcloud, aby uruchomić testy Espresso aplikacji Notatnika na określonych konfiguracjach urządzenia 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 w parametry --type jest podany testowy plik APK, parametr instrumentacji --type jest domyślny.--test
  • Aby ułatwić sobie identyfikowanie i lokalizowanie testowych tablic w konsoli Firebase, możesz użyć opcjonalnego flagi --client-details matrixLabel="Example matrix label", aby oznaczyć testową tablicę.
  • Aby wyświetlić pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisz gcloud help firebase test android run.

Zamiast podawać 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 wersji AndroidJUnitRunner 1.1 lub nowszej. Aby ją włączyć, użyj flagi gcloud firebase test android run z wartością
--use-orchestrator. Aby go 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ą wymienione 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 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 w artykule gcloud firebase test android run.

Raporty dotyczące pokrycia kodu w przypadku testów instrumentacji

Test Lab obsługuje narzędzia do raportowania pokrycia kodu: EMMAJaCoCo. Jeśli masz jedno z tych narzędzi zintegrowane z kompilacją aplikacji, możesz uzyskać raport o zasięgu kodu dla testów Test Lab, uruchamiając gcloud firebase test android run z kilkoma dodatkowymi argumentami. Jeśli Android Test Orchestrator nie jest włączony, wykonaj te czynności:

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 Test Lab zakończy wykonywanie testów, sprawdź raporty o zakresie testowania 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 na liście pod tym linkiem testowe wykonanie, aby otworzyć jego stronę z informacjami.
  3. Kliknij Wyniki testu, aby przejść do zasobnika Cloud Storage z wynikami testu z tego wykonania.
  4. Otwórz artifacts/coverage.ec, aby wyświetlić raport o zasięgu kodu.

Analizowanie wyników testu

Po kilku minutach narzędzie gcloud wydrukuje 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 Analizowanie wyników Firebase Test Lab w przypadku wyników na urządzeniach z Androidem.

Wpisywanie tekstu i logowanie w testach Robo

Test Robo automatycznie wypełnia ekrany logowania, które używają 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 też użyć tego parametru, aby podać niestandardowy tekst wprowadzania danych 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ć tego parametru, aby Robo ignorowało określone elementy interfejsu użytkownika (np. przycisk „Wyloguj się”). Obsługiwane są pola EditText, ale nie pola tekstowe w elementach interfejsu WebView.

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 Test Lab ma kilka dostępnych poleceń i flag, które umożliwiają przeprowadzanie testów z różnymi specyfikacjami:

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

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 basha przeprowadza test z instrumentacją z czasem oczekiwania wynoszącym 2 minuty i zgłasza, 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 możesz wykorzystać, aby lepiej zrozumieć wyniki testów uruchamianych za pomocą skryptów lub plików zbiorczych.

Kody wyjścia w skryptach w przypadku Test Lab

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zostały zaliczone.
1 Wystąpił błąd ogólny. Możliwe przyczyny to np. 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 mógł ustalić, czy testowa matryca przeszła 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 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.