Testowanie za pomocą Google Cloud CLI

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

Krok 1. Skonfiguruj lokalne środowisko pakietu SDK Google Cloud

  1. Pobierz 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. Ustaw projekt Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu Firebase:
         gcloud config set project PROJECT_ID

Krok 2. Przeprowadź test

Przeprowadź XCTest

  1. Prześlij plik ZIP z testem, uruchamiając to polecenie (jeśli nie masz jeszcze spakowanej aplikacji, 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 testu.

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

    gcloud firebase test ios dimension list

    Orientacja ekranu jest nieco prostsza, ponieważ ma tylko 2 opcje: portraitlandscape.

    Przejrzyj listę wymiarów testu i wybierz kilka kombinacji, w których chcesz przeprowadzić test. Na stronie Plany cenowe znajdziesz informacje o maksymalnej liczbie kombinacji, które możesz uruchamiać dziennie.

  3. Po wybraniu zestawu wymiarów testu możesz uruchomić testy za pomocą polecenia firebase test ios run.Test Lab W przypadku każdej kombinacji wymiarów testu, którą chcesz przetestować, dodaj osobne oznaczenie --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 powieść z powodu niezgodności między wersją Xcode, w której został utworzony, a domyślną wersją Xcode używaną przez Test Lab. 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ć identyfikowanie i lokalizowanie macierzy testów w Firebasekonsoli, możesz opcjonalnie oznaczyć macierz testów za pomocą flagi --client-details matrixLabel="<label>" 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 specjalnych uprawnień

Aby przetestować uprawnienia, które wymagają jawnego identyfikatora aplikacji, możesz to zrobić, ustawiając flagę --test-special-entitlements. Test Lab ponownie podpisuje aplikację nowym identyfikatorem pakietu, aby obsługiwać specjalne uprawnienia, więc 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 sieciowe JSON za pomocą prywatnego klucza podpisywania oraz identyfikatora klucza – C7FD9DJAA8 i identyfikatora zespołu – 9CKCGNNUQN. Wygenerowane tokeny będą ważne przez godzinę i trzeba je odświeżać co 60 minut. Więcej informacji znajdziesz w artykule Nawiązywanie połączenia z APNs na podstawie tokena.

Grupy aplikacji

Identyfikatory grup aplikacji są unikalne na całym świecie. Oznacza to, że podczas ponownego podpisywania aplikacji użytkowników możemy używać tylko identyfikatora grupy aplikacji powiązanego z Test Lab kontem dewelopera. 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 skonfiguruj uruchomienie za pomocą tych flag:

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. Ten flag jest ważny tylko podczas przeprowadzania testów pętli gry.

--scenario-numbers

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

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

--device-model

Urządzenie fizyczne, na którym chcesz przeprowadzić test (sprawdź, które dostępne urządzenia możesz wykorzystać).

--timeout

Maksymalny czas trwania testu. Możesz wpisać liczbę całkowitą, która będzie oznaczać czas trwania w sekundach, lub liczbę całkowitą i wyliczenie, które będą oznaczać czas trwania w dłuższej jednostce czasu.

Przykład:

  • --timeout=200 wymusza zakończenie testu po 200 sekundach.
  • --timeout=1h wymusza zakończenie testu po upływie godziny.

Na przykład to polecenie przeprowadza 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. (Opcjonalnie): zautomatyzuj przyszłe testy

Tworzenie skryptów poleceń gcloud za pomocą Test Lab

Możesz używać skryptów powłoki lub plików wsadowych do automatyzowania poleceń testowania aplikacji mobilnych, które w inny sposób uruchamiasz za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt bash uruchamia test XCTest z 2-minutowym czasem oczekiwania i informuje, czy test 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

Test Lab udostępnia kilka kodów zakończenia, które pomagają lepiej zrozumieć wyniki testów przeprowadzanych za pomocą skryptów lub plików wsadowych.

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zostały zaliczone.
1 Wystąpił błąd ogólny. Możliwe przyczyny to 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 Nie udało się ustalić, czy macierz testowa została zaliczona, czy nie, z powodu nieoczekiwanego błędu.Firebase Test Lab
19 Użytkownik anulował macierz testową.
20 Wystąpił błąd infrastruktury testowej.

Krok 4. Sprawdź wyniki testu

Po rozpoczęciu testu otrzymasz link do strony Wyniki testu. Przeprowadzenie testów może zająć kilka minut w zależności od liczby wybranych konfiguracji i czasu oczekiwania na wynik testu. Po przeprowadzeniu testów możesz sprawdzić ich wyniki. Więcej informacji o interpretowaniu wyników testu znajdziesz w sekcji Analizowanie wynikówFirebase Test Lab.

Kolejny etap

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