Przetestuj za pomocą interfejsu wiersza polecenia Google Cloud

W tym przewodniku opisano, jak uruchomić test XCTest lub Game Loop przy użyciu interfejsu wiersza polecenia gcloud.

Krok 1 : Skonfiguruj lokalne środowisko Google Cloud SDK

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

  3. Upewnij się, że Twoja instalacja jest aktualna i zawiera polecenie gcloud firebase :
          gcloud components update
  4. Zaloguj się do interfejsu CLI gcloud, 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 : Uruchom test

Uruchom XCTest

  1. Prześlij plik .zip swojego testu, uruchamiając następujące polecenie (jeśli jeszcze nie spakowałeś aplikacji, zobacz Pakowanie XCTest ):

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

    Laboratorium testowe umożliwia przeprowadzanie testów na różnych wersjach systemu iOS, urządzeniach, orientacjach ekranu i lokalizacjach. Konfiguracje te nazywane są wymiarami testowymi testu. Aby zobaczyć opcje dla każdego wymiaru (np. obsługiwane wersje Xcode dla wersji iOS urządzenia), zamień models , versions lub locales dla dimension w następującym poleceniu:

    gcloud firebase test ios dimension list

    Orientacja ekranu jest nieco prostsza, ponieważ dostępne są tylko opcje portrait i landscape .

    Przejrzyj listę wymiarów testowych i wybierz kilka kombinacji, dla których chcesz przeprowadzić test. Odwiedź Plany cenowe , aby zobaczyć maksymalną liczbę kombinacji, które możesz uruchomić dziennie.

  3. Po wybraniu zestawu wymiarów testowych możesz zlecić laboratorium testowemu wykonanie testów za pomocą polecenia firebase test ios run . Dla każdej kombinacji wymiarów testowych, na których chcesz testować, dołącz oddzielną 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...

    Możliwe, że Twój test zakończy się niepowodzeniem z powodu niezgodności między wersją Xcode, z której korzystano podczas tworzenia testu, a domyślną wersją Xcode używaną przez Laboratorium Testowe. Aby określić obsługiwaną wersję Xcode dla swojego testu, 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 pomóc Ci zidentyfikować i zlokalizować macierze testowe w konsoli Firebase, możesz opcjonalnie oznaczyć macierz testową etykietą za pomocą flagi --client-details matrixLabel="<label>" w następującym 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"

Testuj uprawnienia specjalne

Aby przetestować uprawnienia wymagające jawnego identyfikatora aplikacji, możesz to zrobić, ustawiając flagę --test-special-entitlements . Laboratorium testowe ponownie podpisuje aplikację nowym identyfikatorem pakietu, aby obsługiwać specjalne uprawnienia, dlatego upewnij się, że w pliku ZIP nie znajdują się żadne zasoby zawierające bezpośrednie odniesienia do identyfikatora pakietu aplikacji.

Obsługiwane uprawnienia:
  1. Powiadomienia push apns-environment
  2. Osobista sieć VPN com.apple.developer.networking.vpn.api
Powiadomienia push

Aby autoryzować żądania powiadomień wypychanych, użytkownicy mogą tworzyć tokeny sieciowe JSON przy użyciu prywatnego klucza podpisującego wraz z identyfikatorem klucza — C7FD9DJAA8 i identyfikatorem zespołu — 9CKCGNNUQN . Wygenerowane tokeny będą ważne przez godzinę i należy je odświeżać co 60 minut. Przeczytaj więcej na temat ustanawiania połączenia opartego na tokenach z APN.

Grupy aplikacji

Identyfikatory grup aplikacji są powszechnie unikalne. Oznacza to, że gdy ponownie podpiszemy aplikacje użytkownika, możemy użyć tylko identyfikatora grupy aplikacji powiązanego z kontem programisty Test Lab. Jeśli Twój test opiera się na grupach aplikacji, test zakończy się niepowodzeniem.

Uruchom test pętli gry

Uruchom polecenie gcloud beta firebase test ios run i użyj następujących flag, aby skonfigurować uruchomienie:

Flagi do testów pętli gry
--type

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

--app

Wymagane : ścieżka bezwzględna (GCS lub system plików) do pliku IPA aplikacji. Ta flaga jest ważna tylko podczas uruchamiania testów Game Loop.

--scenario-numbers

Pętle (inaczej scenariusze), które chcesz uruchomić w swojej aplikacji. Można wprowadzić jedną pętlę, listę lub pętle lub zakres pętli. Domyślna pętla to 1.

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

--device-model

Urządzenie fizyczne, na którym chcesz uruchomić test (dowiedz się, z jakich dostępnych urządzeń możesz skorzystać).

--timeout

Maksymalny czas trwania testu. Można wprowadzić liczbę całkowitą, aby przedstawić czas trwania w sekundach, lub liczbę całkowitą i wyliczenie, aby przedstawić czas trwania jako dłuższą jednostkę czasu.

Na przykład:

  • --timeout=200 wymusza zakończenie testu po upływie do 200 sekund.
  • --timeout=1h wymusza zakończenie testu, gdy upłynie godzina.

Na przykład następujące polecenie uruchamia test pętli gry, który wykonuje pętle 1, 4, 6, 7 i 8 na telefonie iPhone 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 na temat interfejsu wiersza polecenia gcloud znajdziesz w dokumentacji referencyjnej .

Krok 3 (opcjonalnie) : Zautomatyzuj przyszłe tworzone testy

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. Ten przykładowy skrypt bash uruchamia XCTest z dwuminutowym limitem czasu i raportuje, czy przebieg testu zakończył się 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

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.

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.
19 Matryca testowa została anulowana przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.

Krok 4 : Sprawdź wyniki testu

Po rozpoczęciu testu otrzymasz łącze do strony Wyniki testu . Uruchomienie testów może zająć kilka minut, w zależności od liczby wybranych różnych konfiguracji i limitu czasu trwania testu ustawionego dla testów. Po przeprowadzeniu testów możesz przejrzeć ich wyniki. Zobacz Analizowanie wyników laboratorium testowego Firebase, aby dowiedzieć się więcej o tym, jak interpretować wyniki testów.

Następny krok

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