Testowanie za pomocą Google Cloud CLI

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

Krok 1. Skonfiguruj lokalne środowisko (pakietu) SDK Google Cloud

  1. pobrać pakiet SDK Google Cloud,
  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 przy użyciu konta Google:
          gcloud auth login
  5. Ustaw projekt w Firebase w gcloud, gdzie PROJECT_ID to identyfikator projektu w Firebase:
         gcloud config set project PROJECT_ID

Krok 2. Przeprowadź test

Uruchamianie testu XCTest

  1. Prześlij plik .zip testu, uruchamiając to polecenie (jeśli aplikacja nie została jeszcze spakowana, zobacz Pakowanie testu 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 ustawieniach językowych. Te konfiguracje są nazywane wymiarami testu. Aby zobaczyć opcje dla każdego wymiaru (np. obsługiwane wersje Xcode dla wersji iOS urządzenia), zastąp models, versions lub locales przez dimension w tym poleceniu:

    gcloud firebase test ios dimension list

    Orientacja ekranu jest nieco prostsza, ponieważ jedyne opcje to portrait i landscape.

    Przejrzyj listę wymiarów testowych i wybierz kilka kombinacji, które chcesz przetestować. Aby sprawdzić maksymalną liczbę kombinacji, które możesz uruchomić dziennie, wejdź na stronę Abonamenty.

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

    Możliwe, że test się nie powiedzie 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 dla 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 zestawów testów w konsoli Firebase, możesz opcjonalnie oznaczyć zestaw testów etykietą, używając 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ą podania identyfikatora aplikacji, możesz ustawić 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 internetowe JSON, używając prywatnego klucza podpisywania wraz z identyfikatorem klucza – C7FD9DJAA8 i identyfikatorem zespołu – 9CKCGNNUQN. Wygenerowane tokeny będą ważne przez godzinę i będą musiały być odświeżane co 60 minut. Więcej informacji znajdziesz w artykule na temat nawiązywania połączenia z APNs na podstawie tokena

Grupy aplikacji

Identyfikatory grup aplikacji są unikalne uniwersalnie. Oznacza to, że gdy ponownie podpisujemy aplikacje użytkowników, możemy używać tylko identyfikatora grupy aplikacji powiązanego z kontem dewelopera Test Lab. Jeśli test opiera się na grupach aplikacji, nie powiedzie się.

Uruchamianie testu 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 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 znacznik jest prawidłowy tylko podczas 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 uruchamia pętle 1, 2, 3 i 5.

--device-model

urządzenie fizyczne, na którym chcesz przeprowadzić test (sprawdź, z których dostępnych urządzeń możesz korzystać);

--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, gdy trwa on do 200 sekund.
  • --timeout=1h wymusza zakończenie testu, gdy trwa on do 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 przyszłe testy, które utworzysz

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

Możesz używać skryptów powłoki lub plików wsadowych do automatyzacji poleceń testowania aplikacji mobilnych, które w przeciwnym razie byłyby uruchamiane za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt bash uruchamia test XCTest z 2-minutowym limitem czasu i raportuje, czy test został ukończony 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 wyjścia, które pomogą Ci lepiej zrozumieć wyniki testów przeprowadzanych za pomocą skryptów lub plików wsadowych.

Kod wyjścia Uwagi
0 Wszystkie wykonania testu zakończyły się powodzeniem.
1 Wystąpił błąd ogólny. Możliwe przyczyny: nazwa pliku nie istnieje lub wystąpił błąd HTTP/sieci.
2 Testowanie zostało zakończone, ponieważ podano nieznane polecenia lub argumenty.
10 Co najmniej 1 element testowania (testowane klasy lub metody klas) w ramach wykonania testu nie został zaliczony.
15 Z powodu nieoczekiwanego błędu usługa Firebase Test Lab nie mogła określić, czy zestaw testów zakończył się powodzeniem czy niepowodzeniem.
19 Zestaw testów został anulowany przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.

Krok 4. Przeanalizuj 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 limitu czasu testu. Po zakończeniu testów możesz sprawdzić ich wyniki. Aby dowiedzieć się więcej o interpretowaniu wyników testów, przeczytaj artykuł Analizowanie wyników Firebase Test Lab.

Następny krok

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