Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Rozpocznij testowanie za pomocą interfejsu wiersza polecenia gcloud

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

W tym przewodniku opisano, jak przeprowadzić test Instrumentation, Robo lub Game Loop za pomocą interfejsu wiersza polecenia gcloud .

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

Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

Krok 1. Skonfiguruj interfejs wiersza polecenia gcloud

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

  3. Upewnij się, że instalacja jest aktualna:
    gcloud components update
    
  4. Zaloguj się do gcloud CLI, używając swojego konta Google:
    gcloud auth login
    
  5. Ustaw swój projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator twojego projektu Firebase:
    gcloud config set project PROJECT_ID
    

Krok 2. Sprawdź dostępne urządzenia testowe

Użyj następujących poleceń gcloud, aby wyświetlić urządzenia testowe i języki, które są dostępne dla Twojego testu.

Opcjonalnie możesz również pobrać przykładową aplikację Notatnik , aby od razu rozpocząć uruchamianie poleceń. Użyj pliku binarnego app-debug-unaligned.apk i pliku testów oprzyrządowania app-debug-test-unaligned.apk , które znajdują się w NotePad/app/build/outputs/apk/ .

  • models list : Uzyskaj aktualną listę urządzeń z Androidem dostępnych do przetestowania.

    gcloud firebase test android models list
    

    W danych wyjściowych polecenia:

    • Kolumna MODEL_ID zawiera identyfikator, którego możesz później użyć do uruchomienia testów na modelu urządzenia.
    • Kolumna OS_VERSION_ID zawiera wersje systemów operacyjnych obsługiwanych przez urządzenie.

    Przykładowe wyjście

    gcloud firebase test android models list output

  • models describe : Uzyskaj więcej informacji na temat konkretnego MODEL_ID Androida.

    gcloud firebase test android models describe MODEL_ID
    

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

  • versions list : Uzyskaj listę aktualnie dostępnych wersji systemu operacyjnego do przetestowania.

    gcloud firebase test android versions list
    

    Możesz użyć identyfikatora z jednej z pierwszych dwóch kolumn danych wyjściowych polecenia ( OS_VERSION_ID i VERSION ), aby później uruchomić testy z wersją systemu operacyjnego Android. Jeśli nie określisz wersji systemu operacyjnego Android do przetestowania, zostanie użyta domyślna wartość podana w kolumnie TAGS .

    Przykładowe wyjście

    gcloud android versions list

  • locales list : pobierz aktualną listę ustawień regionalnych dostępnych do przetestowania.

    gcloud firebase test android versions list
    

    Pierwsza kolumna danych wyjściowych polecenia, LOCALE , zawiera identyfikator, którego można później użyć do przeprowadzenia testów dotyczących ustawień narodowych. Jeśli nie określisz ustawień regionalnych do przetestowania, domyślnym ustawieniem regionalnym będzie język angielski.

Uruchamianie testów

Teraz, gdy znasz zakres modeli urządzeń, ustawień regionalnych i wersji systemów operacyjnych 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 oprzyrządowania.

Uruchamianie testu Robo

Nawet jeśli nie masz żadnych testów oprzyrządowania, nadal możesz szukać błędów w swojej aplikacji. Skorzystaj z testu Robo, aby przeprowadzić automatyczną weryfikację interfejsu użytkownika aplikacji. Robo test sprawdza aplikację, przeprowadzając analizę statyczną różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukując aplikację w celu znalezienia awarii i innych potencjalnych problemów.

Zacznijmy od uruchomienia przykładowego polecenia:

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

Parametr --type robo jest niejawny, jeśli nie określono wartości --type . Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując: gcloud help firebase test android run . Jako alternatywę dla podawania wszystkich tych argumentów w wierszu poleceń, możesz opcjonalnie określić swoje argumenty w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files aby dowiedzieć się, jak korzystać z tej funkcji.

Zobacz sekcję Analiza wyników testu , aby dowiedzieć się, jak zbadać wyniki testu Robo.

Przeprowadzanie testów oprzyrządowania

Teraz użyj narzędzia wiersza poleceń gcloud , aby uruchomić testy Espresso aplikacji Notatnik na określonych konfiguracjach urządzeń z Androidem. Użyj typu testu instrumentation , aby uruchomić testy w 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

Parametr --type instrumentation jest niejawny, jeśli testowy pakiet APK został określony za pomocą --test . Jako alternatywę dla podawania wszystkich tych argumentów w wierszu poleceń, możesz opcjonalnie określić swoje argumenty w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files aby dowiedzieć się, jak korzystać z tej funkcji.

Interfejs wiersza polecenia gcloud obsługuje program Android Test Orchestrator . Program Orchestrator wymaga systemu AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby go włączyć, użyj gcloud firebase test android run z
--use-orchestrator . Aby go wyłączyć, użyj flagi --no-use-orchestrator .

Możesz także kontrolować sposób, w jaki Test Lab przeprowadza testy oprzyrządowania, używając dodatkowych flag, które nie są pokazane powyżej. Możesz na przykład użyć flagi --test-targets , aby przetestować pojedynczą klasę lub metodę klasy używaną przez testowy pakiet APK. Możesz również dowiedzieć się, czy twój test, który się nie powiódł, był rzeczywiście niestabilny, czy nie, używając --num-flaky-test-attempts , która określa, ile razy wykonanie testu powinno zostać powtórzone, jeśli jeden lub więcej przypadków testowych zawieść z jakiegokolwiek powodu. Aby dowiedzieć się więcej, zobacz gcloud firebase test Android run .

Raporty pokrycia kodu dla testów oprzyrządowania

Test Lab obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo . Jeśli jedno z narzędzi jest zintegrowane z kompilacją Twojej aplikacji, możesz uzyskać raport pokrycia kodu dla testów w laboratorium testowym, uruchamiając gcloud firebase test android run z dodatkowymi argumentami. Jeśli program Android Test Orchestrator nie jest włączony, użyj następujących opcji:

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, korzystając jednocześnie z narzędzia Android Test Orchestrator, 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 Test Lab zakończy przeprowadzanie testów, znajdź raporty pokrycia kodu w Google Cloud Storage:

  1. Otwórz łącze konsoli Firebase, które 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ę szczegółów tego wykonania.
  3. Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage z wynikami testu tego wykonania.
  4. Otwórz artifacts/coverage.ec aby zobaczyć raport pokrycia kodu.

Analizuj wyniki swoich testów

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

Command test results

Dane wyjściowe uruchomienia testu wiersza polecenia zawierają również łącze umożliwiające wyświetlenie wyników testu. Aby dowiedzieć się więcej o tym, jak interpretować te wyniki, zobacz Analizowanie wyników Firebase Test Lab dla Androida .

Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo

Robo test automatycznie uzupełnia ekrany logowania, które używają konta Google do uwierzytelniania, chyba że użyjesz parametru --no-auto-google-login . Może również wypełniać niestandardowe ekrany logowania przy użyciu danych logowania do konta testowego, które podajesz. Możesz również użyć tego parametru, aby podać niestandardowy tekst wejściowy dla 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 oddzieloną przecinkami, gdzie key jest nazwa zasobu Androida docelowego elementu interfejsu użytkownika, a value jest ciąg tekstowy . Możesz także użyć tej flagi, aby powiedzieć Robo, aby ignorował określone elementy interfejsu użytkownika (np. przycisk „wyloguj”). Pola EditText są obsługiwane, ale nie pola tekstowe w elementach interfejsu WebView .

Na przykład możesz użyć następującego parametru do logowania niestandardowego:

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

Dostępne polecenia i flagi

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

  • Flaga programu Android Test Orchestrator : flaga umożliwiająca włączenie programu Orchestrator, narzędzia umożliwiającego uruchamianie każdego testu aplikacji w osobnym wywołaniu Instrumentation . Test Lab zawsze uruchamia najnowszą wersję programu Orchestrator.

  • Flagi testowe Game Loop : zestaw flag konfiguracyjnych, które włączają i kontrolują „tryb demonstracyjny” w celu symulacji działań gracza w aplikacjach gier. Dowiedz się więcej o przeprowadzaniu testów Game Loop w Test Lab .

  • Uniform Sharding flag (w wersji beta) : flaga określająca liczbę fragmentów, na które chcesz równomiernie rozłożyć przypadki testowe. Odłamki są uruchamiane równolegle na oddzielnych urządzeniach.

  • Flaga ręcznego dzielenia na fragmenty (w wersji beta) : flaga określająca grupę pakietów, klas i/lub przypadków testowych do uruchomienia we fragmentu (grupa przypadków testowych). Odłamki są uruchamiane równolegle na oddzielnych urządzeniach.

  • Flaga profili ruchu sieciowego (w wersji beta) : flaga określająca, który profil sieciowy jest używany w testach z urządzeniami fizycznymi. Profile sieciowe emulują różne warunki sieciowe, umożliwiając testowanie wydajności aplikacji w zawodnych lub nieprzewidywalnych sieciach.

Skryptowanie 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 wykonywałbyś za pomocą wiersza poleceń gcloud. Poniższy przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym limitem czasu i zgłasza, czy przebieg testu zakończył 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

Laboratorium testowe udostępnia kilka kodów wyjścia, których można użyć, aby lepiej zrozumieć wyniki testów uruchamianych przy użyciu skryptów lub plików wsadowych.

Skryptowanie kodów wyjścia dla Test Lab

Kod wyjścia Notatki
0 Wszystkie wykonania testowe zakończone pomyślnie.
1 Wystąpiła ogólna awaria. Możliwe przyczyny to: nazwa pliku, która nie istnieje lub błąd HTTP/sieci.
2 Testowanie zostało zakończone, ponieważ podano nieznane polecenia lub argumenty.
10 Co najmniej jeden przypadek testowy (testowane klasy lub metody klas) w wykonaniu testu nie przeszedł pomyślnie.
15 Laboratorium testowe Firebase nie mogło określić, czy macierz testów zakończyła 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 testowych. Ten błąd może wystąpić, jeśli wybrany poziom interfejsu API systemu Android nie jest obsługiwany przez wybrany typ urządzenia.
19 Macierz testowa została anulowana przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.