Przetestuj za pomocą Google Cloud CLI

W tym przewodniku opisano, jak przeprowadzić test XCTest lub Game Loop za pomocą interfejsu wiersza polecenia 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 Twoja instalacja jest aktualna i zawiera polecenie gcloud firebase :
          gcloud components update
  4. Zaloguj się do gcloud CLI, 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

Przeprowadź XCTest

  1. Prześlij plik .zip swojego testu, uruchamiając następujące polecenie (jeśli jeszcze nie spakowałeś swojej aplikacji, zobacz Pakowanie twojego 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 systemu iOS, urządzeniach, orientacjach ekranu i ustawieniach regionalnych. Te konfiguracje są znane jako wymiary testowe testu. Aby zobaczyć opcje dla każdego wymiaru (np. obsługiwane wersje Xcode dla wersji iOS urządzenia), zamień models , versions lub locales na 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, na 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ć Test Lab uruchomienie testów za pomocą polecenia firebase test ios run . Dla każdej kombinacji wymiarów testowych, które chcesz przetestować, 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órą został zbudowany test, a domyślną wersją Xcode używaną przez Test Lab. Aby określić obsługiwaną wersję Xcode dla twojego 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=11.3

    Aby pomóc Ci zidentyfikować i zlokalizować swoje macierze testowe w konsoli Firebase, możesz opcjonalnie oznaczyć macierz 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"

Przetestuj specjalne uprawnienia

Aby przetestować uprawnienia, które wymagają wyraźnego identyfikatora aplikacji, możesz to zrobić, ustawiając flagę --test-special-entitlements . Laboratorium testowe ponownie podpisuje aplikację nowym identyfikatorem pakietu w celu obsługi specjalnych uprawnień, więc upewnij się, że w pliku ZIP nie ma żadnych zasobów zawierających bezpośrednie odniesienia do identyfikatora pakietu aplikacji.

Powiadomienia push

Aby autoryzować żądania powiadomień wypychanych, użytkownicy mogą tworzyć tokeny internetowe JSON przy użyciu prywatnego klucza podpisywania wraz z identyfikatorem klucza — C7FD9DJAA8 i identyfikatorem zespołu — 9CKCGNNUQN . Wygenerowane tokeny byłyby ważne przez godzinę i musiałyby być odświeżane co 60 minut. Przeczytaj więcej na temat nawiązywania połączenia opartego na tokenie do APN.

Grupy aplikacji

Identyfikatory grup aplikacji są uniwersalne i unikatowe. Oznacza to, że kiedy ponownie podpisujemy aplikacje użytkownika, możemy używać tylko identyfikatora grupy aplikacji powiązanego z kontem programisty Test Lab. Jeśli Twój test opiera się na grupach aplikacji, 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 Game Loop
--type

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

--app

Wymagane : bezwzględna ścieżka (GCS lub system plików) do pliku IPA Twojej 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żesz wprowadzić jedną pętlę, listę lub pętle 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 uruchomić test (dowiedz się, z jakich dostępnych urządzeń możesz korzystać).

--timeout

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

Na przykład:

  • --timeout=200 wymusza zakończenie testu, gdy trwa do 200 sekund.
  • --timeout=1h wymusza zakończenie testu, gdy potrwa do godziny.

Na przykład następujące polecenie uruchamia test Game Loop, 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 o interfejsie wiersza polecenia gcloud znajdziesz w dokumentacji referencyjnej .

Krok 3 (opcjonalnie) : zautomatyzuj przyszłe testy, które zbudujesz

Skryptowanie poleceń gcloud za pomocą Test Lab

Możesz użyć skryptów powłoki lub plików wsadowych, aby zautomatyzować polecenia testowania aplikacji mobilnych, które normalnie wykonywałbyś za pomocą wiersza poleceń gcloud. Ten przykładowy skrypt bash uruchamia XCTest z dwuminutowym limitem czasu i zgłasza, 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 wyjścia, których można użyć, aby lepiej zrozumieć wyniki testów uruchamianych przy użyciu skryptów lub plików wsadowych.

Kod wyjścia Notatki
0 Wszystkie wykonania testowe zakończone pomyślnie.
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 Co najmniej jeden przypadek testowy (testowane klasy lub metody klas) w wykonaniu testu nie przeszedł pomyślnie.
15 Laboratorium testowe Firebase nie mogło określić, czy macierz testów zakończyła się powodzeniem, czy niepowodzeniem z powodu nieoczekiwanego błędu.
19 Macierz testowa została anulowana przez użytkownika.
20 Wystąpił błąd infrastruktury testowej.

Krok 4 : Zbadaj wyniki testu

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

Następny krok

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