Testowanie za pomocą Google Cloud CLI

Z tego przewodnika dowiesz się, jak uruchomić test XCTest lub Game Loop za pomocą interfejsu wiersza poleceń gcloud.

Krok 1. Skonfiguruj lokalne środowisko Google Cloud SDK

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

  3. Upewnij się, że instalacja jest aktualna i zawiera polecenie gcloud firebase:
          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. Przeprowadź test

Uruchom XCTest

  1. Prześlij plik ZIP z testem, uruchamiając to polecenie (jeśli nie masz jeszcze skompilowanej aplikacji, zapoznaj się z artykułem Kompilowanie testu XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Wybierz wymiary testowe.

    Test Lab umożliwia przeprowadzanie testów na różnych wersjach iOS, urządzeniach, orientacjach ekranu i językach. Te konfiguracje nazywamy wymiarami testowymi. Aby wyświetlić opcje dla danej wymiaru (np. obsługiwane wersje Xcode dla wersji iOS urządzenia), w tym poleceniu zastąp dimension wartościami models, versions lub locales:

    gcloud firebase test ios dimension list

    Orientacja ekranu jest nieco prostsza, ponieważ jej jedynymi opcjami są portrait i landscape.

    Przejrzyj listę wymiarów testu i wybierz kilka kombinacji, które chcesz przetestować. Aby poznać maksymalną liczbę kombinacji, które możesz uruchamiać dziennie, otwórz Plany cenowe.

  3. Po wybraniu zestawu wymiarów testu możesz uruchomić Test Lab testy za pomocą polecenia firebase test ios run. W przypadku każdej kombinacji wymiarów testu, którą chcesz przetestować, dodaj osobną flagę --device:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    Test może się nie udać z powodu niezgodności wersji Xcode, w której został utworzony, z domyślną wersją Xcode używaną przez Test Lab. Aby określić obsługiwaną wersję Xcode do testowania, użyj flagi --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Aby ułatwić sobie identyfikację i lokalizowanie testowych macierzy w konsoli Firebase, możesz opcjonalnie oznaczyć je za pomocą flagi --client-details matrixLabel="<label>", jak w tym przykładzie:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Testowanie uprawnień specjalnych

Aby przetestować uprawnienia, które wymagają jawnego identyfikatora aplikacji, ustaw flagę --test-special-entitlements. Test Labponownie podpisuje aplikację za pomocą nowego identyfikatora pakietu, aby obsługiwać specjalne uprawnienia. Dlatego sprawdź, czy w pliku ZIP nie ma zasobów zawierających bezpośrednie odwołania do identyfikatora pakietu aplikacji.

Obsługiwane uprawnienia:
  1. Powiadomienia push apns-environment
  2. Osobisty VPNcom.apple.developer.networking.vpn.api
Powiadomienia push

Aby autoryzować żądania powiadomień push, użytkownicy mogą tworzyć tokeny internetowe JSON za pomocą prywatnego klucza podpisywania oraz identyfikatora klucza C7FD9DJAA8 i identyfikatora zespołu 9CKCGNNUQN. Wygenerowane tokeny będą ważne przez 1 godzinę i trzeba je odświeżać co 60 minut. Dowiedz się więcej o: Nawiązywaniu połączenia z APN na podstawie tokena.

Grupy aplikacji

Identyfikatory grup aplikacji są unikalne globalnie. Oznacza to, że podczas ponownego podpisywania aplikacji użytkownika możemy używać tylko identyfikatora grupy aplikacji powiązanego z kontem dewelopera Test Lab. Jeśli test opiera się na grupach aplikacji, nie zostanie on przeprowadzony.

Przeprowadź test pętli gry

Uruchom polecenie gcloud beta firebase test ios run i użyj tych flag, aby skonfigurować uruchomienie:

Flagi testów pętli gry
--type

Wymagane: określa typ testu iOS, który chcesz przeprowadzić. Możesz wpisać typy testów xctest (domyślnie) lub game-loop.

--app

Wymagane: bezwzględna ścieżka (GCS lub system plików) do pliku IPA aplikacji. Ten parametr jest prawidłowy tylko podczas uruchamiania testów Game Loop.

--scenario-numbers

pętle (czyli scenariusze), które chcesz uruchomić w aplikacji. Możesz podać jedną pętlę, listę pętli lub zakres pętli. Domyślna pętla to 1.

Na przykład --scenario-numbers=1-3,5 wykonuje pętle 1, 2, 3 i 5.

--device-model

Fizyczne urządzenie, na którym chcesz przeprowadzić test (dowiedz się, których dostępnych urządzeń możesz użyć).

--timeout

Maksymalny czas trwania testu. Możesz wpisać liczbę całkowitą, aby reprezentować czas w sekundach, lub liczbę całkowitą i enumerację, aby reprezentować czas w dłuższej jednostce czasu.

Przykład:

  • --timeout=200 powoduje zakończenie testu po upływie maksymalnie 200 sekund.
  • --timeout=1h powoduje zakończenie testu po upływie godziny.

Na przykład poniższe polecenie uruchamia test pętli gry, który wykonuje pętle 1, 4, 6, 7 i 8 na iPhonie 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Więcej informacji o interfejsie wiersza poleceń gcloud znajdziesz w dokumentacji.

Krok 3 (opcjonalny): zautomatyzuj przyszłe testy, które tworzysz

Tworzenie 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 mobilnej, które w przeciwnym razie musiałbyś uruchomić w wierszu poleceń gcloud. Ten przykładowy skrypt basha uruchamia XCTest z 2-minutowym czasem oczekiwania i zgłasza, czy test został wykonany pomyślnie:

if gcloud firebase test ios run --test MyTest.zip --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.

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zostały zaliczone.
1 Wystąpił ogólny błąd. 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.
19 Użytkownik anulował matrycę testów.
20 Wystąpił błąd infrastruktury testowej.

Krok 4. Sprawdź wyniki testu

Gdy test się rozpocznie, otrzymasz link do strony Wyniki testu. Testy mogą trwać kilka minut, w zależności od liczby wybranych konfiguracji i czasu oczekiwania na zakończenie testu. Po zakończeniu testów możesz sprawdzić ich wyniki. Więcej informacji o interpretowaniu wyników testu znajdziesz w artykule Analiza wyników Firebase Test Lab.

Następny krok

Zapoznaj się z dokumentacją pakietu SDK Google Cloud, aby poznać opcje testowania, które są ogólnie dostępne lub dostępne w wersji beta.