Testowanie za pomocą Google Cloud CLI

Z tego przewodnika dowiesz się, jak przeprowadzić test XCTest lub pętli gry za pomocą gcloud CLI.

Krok 1. Skonfiguruj lokalne środowisko pakietu SDK Google Cloud

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

  3. Sprawdź, czy Twoja 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 Twojego projektu Firebase:
         gcloud config set project PROJECT_ID

Krok 2. Przeprowadź test

Przeprowadź XCTest

  1. Prześlij plik ZIP z testem, uruchamiając następujące polecenie (jeśli Twoja aplikacja nie została jeszcze skompresowana, zapoznaj się z sekcją 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 umożliwia przeprowadzanie testów w różnych wersjach iOS i na różnych urządzeniach oraz w różnych orientacji ekranu i językach. Są to tzw. wymiary testowe testu. Aby zobaczyć opcje poszczególnych wymiarów (np. obsługiwane wersje Xcode w przypadku wersji iOS na urządzeniu), zastąp models, versions lub locales zamiast dimension w tym 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, na których chcesz przeprowadzić test. Wejdź na stronę Abonamenty, aby sprawdzić, jaka jest maksymalna liczba kombinacji, które możesz wyświetlać dziennie.

  3. Po wybraniu zestawu wymiarów testowych możesz uruchomić testy w Laboratorium za pomocą polecenia firebase test ios run. W przypadku każdej kombinacji wymiarów testowych, które 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...

    Możliwe, że test się nie powiedzie z powodu niezgodności między wersją Xcode, z którą został utworzony test, a domyślną wersją Xcode używaną w Laboratorium. Aby określić obsługiwaną wersję Xcode na potrzeby 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 ułatwić sobie identyfikowanie i lokalizowanie macierzy testów w konsoli Firebase, możesz opcjonalnie oznaczyć tablicę testową za pomocą flagi --client-details matrixLabel="<label>" w poniższym 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 specjalnych uprawnień

Aby przetestować uprawnienia, które wymagają wyraźnego identyfikatora aplikacji, możesz ustawić flagę --test-special-entitlements. Laboratorium ponownie podpisuje aplikację z nowym identyfikatorem pakietu na potrzeby obsługi specjalnych uprawnień, dlatego upewnij się, że 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. Osobista sieć VPN com.apple.developer.networking.vpn.api
Powiadomienia push

Aby autoryzować żądania powiadomień push, użytkownicy mogą tworzyć tokeny internetowe JSON przy użyciu prywatnego klucza podpisywania z identyfikatorem klucza C7FD9DJAA8 i identyfikatorem zespołu 9CKCGNNUQN. Wygenerowane tokeny będą ważne przez godzinę i muszą być odświeżane co 60 minut. Więcej informacji znajdziesz w artykule o nawiązywaniu połączenia z punktami APN za pomocą tokenów

Grupy aplikacji

Identyfikatory grup aplikacji są uniwersalnie unikalne. Oznacza to, że przy ponownym podpisywaniu aplikacji użytkowników będziemy mogli użyć tylko identyfikatora grupy aplikacji powiązanego z kontem dewelopera w Laboratorium. Jeśli test opiera się na grupach aplikacji, zakończy się niepowodzeniem.

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

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

--app

Wymagane: ścieżka bezwzględna (GCS lub system plików) do pliku IPA aplikacji. Ta flaga jest stosowana tylko podczas testów pętli gry.

--scenario-numbers

Pętle (inaczej scenariusze), które chcesz uruchomić w aplikacji. Możesz wpisać jedną pętlę, listę lub pętlę albo 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

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

--timeout

Maksymalny czas trwania testu. Możesz wpisać liczbę całkowitą określającą czas trwania w sekundach lub liczbę całkowitą i wyliczenie, aby przedstawić czas jako dłuższy okres.

Przykład:

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

Na przykład to 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 gcloud CLI znajdziesz w dokumentacji referencyjnej.

Krok 3 (opcjonalny) Zautomatyzuj tworzone w przyszłości testy

Tworzenie skryptów poleceń gcloud w Laboratorium

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 bash przeprowadza XCTest z dwuminutowym czasem oczekiwania i informuje o jego pomyślnym zakończeniu:

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

Skrypty wyjścia

Laboratorium udostępnia kilka kodów wyjściowych, które pomagają lepiej zrozumieć wyniki testów przeprowadzanych za pomocą skryptów lub plików wsadowych.

Kod wyjścia Notatki
0 Wszystkie wykonania testu zaliczone.
1 Wystąpił błąd ogólny. Możliwe przyczyny: nieistniejąca nazwa pliku lub błąd HTTP/sieciowy.
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 się nie zaliczył.
15 Laboratorium Firebase nie mogło określić, czy macierz testów zaliczona, czy nie, z powodu nieoczekiwanego błędu.
19 Zestaw testów został anulowany przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.

Krok 4. Sprawdź wyniki testu

Po rozpoczęciu testu otrzymasz link do strony Wyniki testu. Testy mogą potrwać kilka minut w zależności od liczby wybranych konfiguracji i ustawionego czasu oczekiwania testu. Po zakończeniu testów możesz przejrzeć ich wyniki. Więcej informacji o interpretowaniu wyników testów znajdziesz w sekcji Analizowanie wyników Laboratorium Firebase.

Następny krok

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