Rozpocznij testowanie za pomocą interfejsu CLI gcloud

W tym przewodniku opisano, jak uruchomić test instrumentacji, Robo lub pętli gry przy użyciu interfejsu wiersza polecenia gcloud .

Pełną listę poleceń gcloud , których możesz używać w aplikacji na Androida w laboratorium testowym, znajdziesz w dokumentacji referencyjnej narzędzia 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 SDK Google Cloud
  2. Obejmuje to narzędzie gcloud CLI.

  3. Upewnij się, że Twoja instalacja jest aktualna:
    gcloud components update
    
  4. Zaloguj się do interfejsu wiersza polecenia gcloud przy użyciu 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 poniższych poleceń gcloud, aby wyświetlić urządzenia testowe i ustawienia regionalne dostępne dla Twojego testu.

Opcjonalnie możesz także pobrać przykładową aplikację Notatnik , aby od razu rozpocząć wykonywanie 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ę dostępnych urządzeń z Androidem, na których możesz przetestować.

    gcloud firebase test android models list
    

    W wynikach polecenia:

    • Kolumna MODEL_ID zawiera identyfikator, za pomocą którego możesz później przeprowadzić testy na modelu urządzenia.
    • Kolumna OS_VERSION_ID zawiera wersje systemu operacyjnego obsługiwane przez urządzenie.

    Przykładowe wyjście

    gcloud firebase test android models list output

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

    gcloud firebase test android models describe MODEL_ID
    

    Dane wyjściowe zawierają markę, producenta, wersję systemu operacyjnego, obsługiwane poziomy 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, z którymi możesz przetestować.

    gcloud firebase test android versions list
    

    Możesz użyć identyfikatora z jednej z dwóch pierwszych kolumn wyników poleceń ( OS_VERSION_ID i VERSION ), aby później uruchomić testy na wersji systemu operacyjnego Android. Jeśli nie określisz wersji systemu operacyjnego Android do przetestowania, zostanie użyta wersja domyślna 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 wyników polecenia, LOCALE , zawiera identyfikator, którego można później użyć do uruchomienia testów względem ustawień regionalnych. Jeśli nie określisz ustawień regionalnych, względem których chcesz przeprowadzić test, domyślnym ustawieniem regionalnym będzie język angielski.

Krok 3. Uruchom test

Teraz, gdy znasz już gamę 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.

Uruchom test Robo

Nawet jeśli nie masz żadnych testów oprzyrządowania, nadal możesz wyszukiwać błędy w swojej aplikacji. Użyj testu Robo, aby przeprowadzić automatyczny przegląd interfejsu użytkownika aplikacji. Test Robo sprawdza aplikację, przeprowadzając analizę statyczną różnych ścieżek w interfejsie użytkownika aplikacji, a następnie przeszukuje aplikację w poszukiwaniu awarii i innych potencjalnych problemów.

Aby uruchomić test Robo, uruchom następujące 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"
  • Parametr --type robo jest ukryty, jeśli nie określono wartości --type .
  • Aby pomóc Ci zidentyfikować i zlokalizować macierze testowe w konsoli Firebase, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label" do oznaczenia macierzy testowej.
  • Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując: gcloud help firebase test android run .

Alternatywą do podawania tych argumentów w wierszu poleceń jest opcjonalne określenie argumentów w pliku argumentów w formacie YAML. Uruchom gcloud topic arg-files aby dowiedzieć się, jak korzystać z tej funkcji.

Aby dowiedzieć się, jak sprawdzić wyniki testu Robo, zobacz Analizowanie wyników testu .

Uruchom test 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
  --client-details matrixLabel="Example matrix label"
  • Parametr oprzyrządowania --type jest ukryty, jeśli testowy plik APK jest określony za pomocą --test .
  • Aby pomóc Ci zidentyfikować i zlokalizować macierze testowe w konsoli Firebase, możesz użyć opcjonalnej flagi --client-details matrixLabel="Example matrix label" do oznaczenia macierzy testowej.
  • Możesz zobaczyć pełny zestaw opcji wiersza poleceń do uruchamiania testów, wpisując gcloud help firebase test android run .

Alternatywą do podawania tych argumentów w wierszu poleceń jest opcjonalne określenie argumentów 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 narzędzie Android Test Orchestrator . Orchestrator wymaga AndroidJUnitRunner w wersji 1.1 lub nowszej. Aby to włączyć, użyj gcloud firebase test android run z rozszerzeniem
--use-orchestrator . Aby to wyłączyć, użyj flagi --no-use-orchestrator .

Możesz także kontrolować sposób, w jaki Laboratorium testowe przeprowadza testy oprzyrządowania, korzystając z 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ą w testowym pliku APK. Możesz także dowiedzieć się, czy test, który się nie powiódł, rzeczywiście był wadliwy, czy nie, używając flagi --num-flaky-test-attempts , która określa, ile razy należy ponowić wykonanie testu, jeśli jeden lub więcej przypadków testowych ponieść porażkę z jakiegokolwiek powodu. Aby dowiedzieć się więcej, zobacz test gcloud firebase na Androidzie .

Raporty pokrycia kodu dla testów oprzyrządowania

Laboratorium testowe obsługuje narzędzia do raportowania pokrycia kodu EMMA i JaCoCo . Jeśli masz którekolwiek narzędzie zintegrowane z kompilacją swojej 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 Android Test Orchestrator nie jest włączony, użyj następujących poleceń:

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 Laboratorium Testowe zakończy przeprowadzanie testów, znajdź raporty dotyczące pokrycia kodu w Google Cloud Storage:

  1. Otwórz link do konsoli Firebase wydrukowany przez narzędzie gcloud nad tabelą wyników testu w terminalu.
  2. Kliknij wykonanie testu na liście pod tym łączem, aby otworzyć stronę ze szczegółami tego wykonania.
  3. Kliknij Wyniki testu , aby przejść do zasobnika Cloud Storage zawierającego wyniki testu tego wykonania.
  4. Otwórz artifacts/coverage.ec aby zobaczyć raport pokrycia kodu.

Przeanalizuj wyniki swoich testów

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

Command test results

Dane wyjściowe uruchomienia testu z wiersza poleceń zawierają także łącze umożliwiające wyświetlenie wyników testu. Aby dowiedzieć się więcej o interpretacji tych wyników, zobacz Analizowanie wyników laboratorium testowego Firebase pod kątem wyników Androida .

Niestandardowe logowanie i wprowadzanie tekstu za pomocą testu Robo

Test Robo automatycznie uzupełnia ekrany logowania, które korzystają z konta Google do uwierzytelnienia, chyba że użyjesz parametru --no-auto-google-login . Może także wykonywać niestandardowe ekrany logowania, korzystając z podanych przez Ciebie poświadczeń konta testowego. Możesz także użyć tego parametru, aby podać niestandardowy tekst wejściowy dla innych pól tekstowych używanych przez Twoją aplikację.

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

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

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

Dostępne polecenia i flagi

Interfejs CLI laboratorium testowego gcloud zawiera kilka poleceń i flag, które umożliwiają uruchamianie testów z różnymi specyfikacjami:

  • Flaga Android Test Orchestrator : flaga włączająca Orchestrator, narzędzie umożliwiające uruchamianie każdego testu aplikacji w ramach własnego wywołania Instrumentation . Laboratorium testowe zawsze uruchamia najnowszą wersję programu Orchestrator.

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

  • Flaga Uniform Sharding (w wersji beta) : flaga określająca liczbę fragmentów, w których chcesz równomiernie rozdzielić przypadki testowe. Fragmenty działają równolegle na oddzielnych urządzeniach.

  • Flaga ręcznego fragmentowania (w wersji beta) : flaga określająca grupę pakietów, klas i/lub przypadków testowych do uruchomienia w fragmencie (grupie przypadków testowych). Fragmenty działają równolegle na oddzielnych urządzeniach.

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

Skryptowanie poleceń gcloud w laboratorium testowym

Możesz używać skryptów powłoki lub plików wsadowych, aby zautomatyzować polecenia testowania aplikacji mobilnych, które w przeciwnym razie uruchamiałbyś za pomocą wiersza poleceń gcloud. Poniższy przykładowy skrypt bash uruchamia test instrumentacji z dwuminutowym limitem czasu i raportuje, 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 zakończenia, których można użyć w celu lepszego zrozumienia wyników testów uruchamianych przy użyciu skryptów lub plików wsadowych.

Skryptowe kody wyjścia dla laboratorium testowego

Kod wyjścia Notatki
0 Wszystkie wykonania testowe zaliczone.
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 Jeden lub więcej przypadków testowych (testowanych klas lub metod klas) w ramach wykonania testu nie przeszło pomyślnie.
15 Laboratorium testowe Firebase nie mogło określić, czy macierz testowa przeszła 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 systemu Android nie jest obsługiwany przez wybrany typ urządzenia.
19 Matryca testowa została anulowana przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.