REST Resource: projects.testMatrices

Zasób: TestMatrix

TestMatrix rejestruje wszystkie szczegóły testu. Zawiera on konfigurację środowiska, specyfikację testu, wykonania testów oraz ogólny stan i wynik.

Zapis JSON
{
  "testMatrixId": string,
  "projectId": string,
  "clientInfo": {
    object (ClientInfo)
  },
  "testSpecification": {
    object (TestSpecification)
  },
  "environmentMatrix": {
    object (EnvironmentMatrix)
  },
  "testExecutions": [
    {
      object (TestExecution)
    }
  ],
  "resultStorage": {
    object (ResultStorage)
  },
  "state": enum (TestState),
  "timestamp": string,
  "invalidMatrixDetails": enum (InvalidMatrixDetails),
  "extendedInvalidMatrixDetails": [
    {
      object (MatrixErrorDetail)
    }
  ],
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
Pola
testMatrixId

string

Tylko dane wyjściowe. Unikalny identyfikator ustawiony przez usługę.

projectId

string

Projekt w chmurze, do którego należy macierz testów.

clientInfo

object (ClientInfo)

Informacje o kliencie, który wywołał test.

testSpecification

object (TestSpecification)

Wymagane. Jak przeprowadzić test.

environmentMatrix

object (EnvironmentMatrix)

Wymagane. Urządzenia, na których są przeprowadzane testy.

testExecutions[]

object (TestExecution)

Tylko dane wyjściowe. Lista wykonań testów tworzonych przez usługę dla tej macierzy.

resultStorage

object (ResultStorage)

Wymagane. Miejsce, w którym zapisywane są wyniki macierzy.

state

enum (TestState)

Tylko dane wyjściowe. Wskazuje bieżący postęp macierzy testów.

timestamp

string (Timestamp format)

Tylko dane wyjściowe. Czas pierwszego utworzenia tej macierzy testów.

Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

invalidMatrixDetails

enum (InvalidMatrixDetails)

Tylko dane wyjściowe. Wyjaśnia, dlaczego tablica jest uznawana za nieprawidłową. Przydatny tylko w przypadku macierzy w stanie NIEPRAWIDŁOWYM.

extendedInvalidMatrixDetails[]

object (MatrixErrorDetail)

Tylko dane wyjściowe. Szczegółowe informacje o tym, dlaczego tablica została uznana za nieprawidłową. Jeśli można bezpiecznie przeprowadzić wiele testów, zostaną one uwzględnione w raporcie, ale nie należy przyjmować żadnych założeń dotyczących długości tej listy.

flakyTestAttempts

integer

Liczba ponownych prób wykonania TestExecution, jeśli co najmniej 1 przypadek testowy z jakiegoś powodu zakończy się niepowodzeniem. Maksymalna dozwolona liczba powtórzeń to 10.

Wartość domyślna to 0, co oznacza brak powtórek.

outcomeSummary

enum (OutcomeSummary)

Tylko dane wyjściowe. Ogólny wynik testu. Ustawiany tylko wtedy, gdy stan macierzy testów to ZAKOŃCZONO.

failFast

boolean

Jeśli wartość to prawda, zostanie podjęta maksymalnie jedna próba uruchomienia każdego wykonania/fragmentu w macierzy. Nie ma to wpływu na niepewne testy.

Normalnie w przypadku wykrycia potencjalnego problemu z infrastrukturą podejmowane są co najmniej 2 próby.

Ta funkcja jest przeznaczona do zadań wrażliwych na czas oczekiwania. W przypadku macierzy z błyskawiczną liczbą błędów podczas wykonywania może być znacznie więcej, a obsługa jest ograniczona z tego powodu.

ClientInfo

Informacje o kliencie, który wywołał test.

Zapis JSON
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
Pola
name

string

Wymagane. Nazwa klienta, na przykład gcloud.

clientInfoDetails[]

object (ClientInfoDetail)

Lista szczegółowych informacji o kliencie.

Szczegóły Informacje o kliencie

Para klucz-wartość zawierająca szczegółowe informacje o kliencie, który wywołał test. Przykłady: {'Version', '1.0'}, {'Wersja wersji', „BETA'}.

Zapis JSON
{
  "key": string,
  "value": string
}
Pola
key

string

Wymagane. Klucz zawierający szczegółowe informacje o kliencie.

value

string

Wymagane. Wartość szczegółowych informacji o kliencie.

Specyfikacja testu

Opis sposobu przeprowadzenia testu.

Zapis JSON
{
  "testTimeout": string,
  "disableVideoRecording": boolean,
  "disablePerformanceMetrics": boolean,

  // Union field setup can be only one of the following:
  "testSetup": {
    object (TestSetup)
  },
  "iosTestSetup": {
    object (IosTestSetup)
  }
  // End of list of possible types for union field setup.

  // Union field test can be only one of the following:
  "androidInstrumentationTest": {
    object (AndroidInstrumentationTest)
  },
  "androidRoboTest": {
    object (AndroidRoboTest)
  },
  "androidTestLoop": {
    object (AndroidTestLoop)
  },
  "iosXcTest": {
    object (IosXcTest)
  },
  "iosTestLoop": {
    object (IosTestLoop)
  },
  "iosRoboTest": {
    object (IosRoboTest)
  }
  // End of list of possible types for union field test.
}
Pola
testTimeout

string (Duration format)

Maksymalny czas trwania wykonania testu, po którym zostanie automatycznie anulowane. Wartość domyślna to 5 minut.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „s”. Przykład: "3.5s".

disableVideoRecording

boolean

Wyłącza nagrywanie wideo. Może to spowodować skrócenie czasu oczekiwania na odpowiedź.

disablePerformanceMetrics

boolean

Wyłącza rejestrowanie danych dotyczących wydajności. Może to spowodować skrócenie czasu oczekiwania na odpowiedź.

Pole sumy setup. Wymagania konfiguracji testu. setup może mieć tylko jedną z tych wartości:
testSetup

object (TestSetup)

Wymagania konfiguracji testów na Androida, np. pliki do zainstalowania, skrypty wczytywania.

iosTestSetup

object (IosTestSetup)

Przetestuj wymagania konfiguracyjne w przypadku iOS.

Pole sumy test. Wymagane. Typ testu do przeprowadzenia. test może mieć tylko jedną z tych wartości:
androidInstrumentationTest

object (AndroidInstrumentationTest)

Test z instrumentacją na Androida.

androidRoboTest

object (AndroidRoboTest)

Test Robo na Androidzie.

androidTestLoop

object (AndroidTestLoop)

Aplikacja na Androida z pętlą testową.

iosXcTest

object (IosXcTest)

XCTest na iOS przy użyciu pliku .xctestrun.

iosTestLoop

object (IosTestLoop)

Aplikacja na iOS z pętlą testową.

iosRoboTest

object (IosRoboTest)

Test Robo na iOS.

Konfiguracja testu

Opis konfiguracji urządzenia z Androidem przed uruchomieniem testu.

Zapis JSON
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "initialSetupApks": [
    {
      object (Apk)
    }
  ],
  "additionalApks": [
    {
      object (Apk)
    }
  ],
  "account": {
    object (Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object (EnvironmentVariable)
    }
  ],
  "systrace": {
    object (SystraceSetup)
  },
  "dontAutograntPermissions": boolean
}
Pola
filesToPush[]

object (DeviceFile)

Lista plików do przekazania na urządzenie przed rozpoczęciem testu.

directoriesToPull[]

string

lista katalogów na urządzeniu, które mają zostać przesłane do GCS po zakończeniu testu; muszą to być ścieżki bezwzględne w katalogu /sdcard, /storage lub /data/local/tmp. Nazwy ścieżek są ograniczone do znaków a–z A–Z 0–9 _ - . + i /

Uwaga: ścieżki /sdcard i /data zostaną udostępnione i będą traktowane jako niejawne zastąpienia ścieżek. Na przykład: Jeśli karta /sdcard na danym urządzeniu nie jest zmapowana na pamięć zewnętrzną, system zastąpi ją prefiksem ścieżki pamięci zewnętrznej tego urządzenia.

initialSetupApks[]

object (Apk)

Opcjonalnie. Pliki APK konfiguracji początkowej do zainstalowania przed zainstalowaniem testowanej aplikacji. Obecnie limit wynosi 100.

additionalApks[]

object (Apk)

Pliki APK do zainstalowania oprócz plików testowanych bezpośrednio. Zostaną one zainstalowane po przetestowaniu aplikacji. Obecnie limit wynosi 100.

account

object (Account)

Urządzenie będzie zalogowane na tym koncie na czas trwania testu.

networkProfile

string

Profil ruchu w sieci używany do przeprowadzenia testu. Zapytania dotyczące dostępnych profili sieci można wykonywać przy użyciu typu środowiska NETWORK_CONFIGURATION podczas wywoływania usługi TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

environmentVariables[]

object (EnvironmentVariable)

Zmienne środowiskowe do ustawienia na potrzeby testu (dotyczy tylko testów narzędzi).

systrace
(deprecated)

object (SystraceSetup)

Konfiguracja Systrace na potrzeby uruchomienia. Wycofane: Systrace używał języka Python 2, który został wycofany 1 stycznia 2020 r. Usługa Systrace nie jest już obsługiwana w Cloud Testing API, a w wynikach nie będzie dostępny żaden plik Systrace.

dontAutograntPermissions

boolean

Określa, czy podczas instalowania aplikacji mają być przyznawane wszystkie uprawnienia w czasie działania

Plik urządzenia

Pojedynczy opis pliku na urządzeniu.

Zapis JSON
{

  // Union field device_file can be only one of the following:
  "obbFile": {
    object (ObbFile)
  },
  "regularFile": {
    object (RegularFile)
  }
  // End of list of possible types for union field device_file.
}
Pola
Pole sumy device_file. Wymagane. device_file może mieć tylko jedną z tych wartości:
obbFile

object (ObbFile)

Odwołanie do nieprzejrzystego binarnego pliku blob.

regularFile

object (RegularFile)

Odwołanie do zwykłego pliku.

Plik OBB

Nieprzezroczysty binarny plik blob do zainstalowania na urządzeniu przed rozpoczęciem testu.

Zapis JSON
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
Pola
obbFileName

string

Wymagane. Nazwa pliku OBB, która musi być zgodna z formatem określonym przez Androida, np. [main|patch].0300110.com.example.android.obb, który zostanie zainstalowany w folderze <shared-storage>/Android/obb/<nazwa-pakietu>/ na urządzeniu.

obb

object (FileReference)

Wymagane. Pliki OBB (Opaque Binary Blob) do zainstalowania na urządzeniu.

Odniesienie do pliku

Odwołanie do pliku używane do wprowadzania danych przez użytkownika.

Zapis JSON
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
Pola
Pole sumy file. Wymagane. Odwołanie do pliku. file może mieć tylko jedną z tych wartości:
gcsPath

string

Ścieżka do pliku w Google Cloud Storage. Przykład: gs://build-app-1414623860166/app%40debug-unaligned.apk Te ścieżki powinny być zakodowane w adresie URL (kodowanie procentowe)

Zwykły plik

Plik lub katalog do zainstalowania na urządzeniu przed rozpoczęciem testu.

Zapis JSON
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
Pola
content

object (FileReference)

Wymagane. Plik źródłowy.

devicePath

string

Wymagane. Gdzie umieścić treści na urządzeniu. Musi to być ścieżka bezwzględna, dozwolona na liście dozwolonych. Jeśli plik istnieje, zostanie zastąpiony. Dozwolone są te katalogi po stronie urządzenia i wszystkie ich podkatalogi:

${EXTERNAL_STORAGE}, /sdcard lub /storage

${ANDROID_DATA}/local/tmp lub /data/local/tmp

Określenie ścieżki poza tymi drzewami katalogów jest nieprawidłowe.

Ścieżki /sdcard i /data zostaną udostępnione i będą traktowane jako niejawne zamienniki ścieżek. Na przykład: Jeśli katalog /sdcard na danym urządzeniu nie jest zmapowany na pamięć zewnętrzną, system zastąpi go prefiksem ścieżki pamięci zewnętrznej odpowiedniego urządzenia i skopiuje do niego plik.

Zdecydowanie zalecamy korzystanie w aplikacji z interfejsu Environment API i testowanie kodu, aby uzyskać przenośny dostęp do plików na urządzeniu.

Pakiet APK

Plik pakietu na Androida do zainstalowania.

Zapis JSON
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
Pola
location

object (FileReference)

Ścieżka do pliku APK do zainstalowania na urządzeniu przed rozpoczęciem testu.

packageName

string

Pakiet Javy, który ma zostać zainstalowany. Wartość jest określana przez sprawdzenie pliku manifestu aplikacji.

Konto

Identyfikuje konto i sposób logowania się na nie.

Zapis JSON
{

  // Union field account_type can be only one of the following:
  "googleAuto": {
    object (GoogleAuto)
  }
  // End of list of possible types for union field account_type.
}
Pola
Pole sumy account_type. Wymagane. Typ konta określony na podstawie przeznaczenia (np. Google) i mechanizmu logowania się (np. nazwy użytkownika i hasła). account_type może mieć tylko jedną z tych wartości:
googleAuto

object (GoogleAuto)

Automatyczne konto logowania w Google.

GoogleAuto

Ten typ nie zawiera pól.

Umożliwia automatyczne logowanie się na konto Google. Jeśli jest skonfigurowane, usługa automatycznie generuje konto testowe Google i dodaje je do urządzenia przed wykonaniem testu. Pamiętaj, że konta testowe mogą być używane wielokrotnie. Wiele aplikacji wyświetla pełny zestaw funkcji, jeśli na urządzeniu jest dodane konto. Gdy zalogujesz się na urządzeniu za pomocą tych wygenerowanych kont, możesz przetestować więcej funkcji.

Zmienna środowiskowa

Para klucz-wartość przekazywana do testu jako zmienna środowiskowa.

Zapis JSON
{
  "key": string,
  "value": string
}
Pola
key

string

Klucz zmiennej środowiskowej.

value

string

Wartość zmiennej środowiskowej.

Konfiguracja usługi Systrace

Zapis JSON
{
  "durationSeconds": integer
}
Pola
durationSeconds
(deprecated)

integer

Czas trwania Systrace w sekundach. Wartość powinna wynosić od 1 do 30 sekund. Wartość 0 wyłącza funkcję systrace.

Konfiguracja testów iOS

Opis konfiguracji urządzenia z iOS przed rozpoczęciem testu.

Zapis JSON
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
Pola
networkProfile

string

Profil ruchu w sieci używany do przeprowadzenia testu. Zapytania dotyczące dostępnych profili sieci można wykonywać przy użyciu typu środowiska NETWORK_CONFIGURATION podczas wywoływania usługi TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

additionalIpas[]

object (FileReference)

Aplikacje na iOS, które warto zainstalować jako dodatek do bezpośrednio testowanych.

pushFiles[]

object (IosDeviceFile)

Lista plików do przekazania na urządzenie przed rozpoczęciem testu.

pullDirectories[]

object (IosDeviceFile)

Lista katalogów na urządzeniu, które mają zostać przesłane do Cloud Storage po zakończeniu testu.

Katalogi powinny znajdować się w katalogu współdzielonym (np. /private/var/mobile/Media) lub w dostępnym katalogu w systemie plików aplikacji (np. /Documents) przez podanie identyfikatora pakietu.

Plik urządzenia iOS

Plik lub katalog do zainstalowania na urządzeniu przed rozpoczęciem testu.

Zapis JSON
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
Pola
content

object (FileReference)

Plik źródłowy

bundleId

string

Identyfikator pakietu aplikacji, w której znajduje się ten plik.

Aplikacje na iOS umieszczają w piaskownicy własny system plików, dlatego pliki aplikacji muszą określać, która aplikacja jest zainstalowana na urządzeniu.

devicePath

string

Lokalizacja pliku na urządzeniu w systemie plików aplikacji w piaskownicy

Test instrumentacji w Androidzie

Testowanie aplikacji na Androida, która może sterować komponentem Androida niezależnie od normalnego cyklu życia. Testy narzędzi na Androida uruchamiają plik APK aplikacji i sprawdzają go w ramach tego samego procesu na wirtualnym lub fizycznym urządzeniu z Androidem. Określają też klasę uruchamiania testów, np. com.google.GoogleTestRunner, która może się różnić w zależności od wybranej platformy instrumentacji.

Więcej informacji o typach testów na Androida znajdziesz na stronie https://developer.android.com/training/testing/fundamentals.

Zapis JSON
{
  "testApk": {
    object (FileReference)
  },
  "appPackageId": string,
  "testPackageId": string,
  "testRunnerClass": string,
  "testTargets": [
    string
  ],
  "orchestratorOption": enum (OrchestratorOption),
  "shardingOption": {
    object (ShardingOption)
  },

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
Pola
testApk

object (FileReference)

Wymagane. Plik APK zawierający kod testu do wykonania.

appPackageId

string

Pakiet Javy dla testowanej aplikacji. Wartość domyślna jest określana przez sprawdzenie pliku manifestu aplikacji.

testPackageId

string

Pakiet języka Java do wykonania testu. Wartość domyślna jest określana przez sprawdzenie pliku manifestu aplikacji.

testRunnerClass

string

Klasa InstrumentationTestRunner. Wartość domyślna jest określana przez sprawdzenie pliku manifestu aplikacji.

testTargets[]

string

Każdy cel musi być w pełni kwalifikowany nazwą pakietu lub klasy w jednym z tych formatów:

  • „packagepackageName”
  • „class packageName.class_name”
  • „nazwa_klasy.nazwa_klasy#nazwa_metody”

Jeśli pole będzie puste, uruchomione będą wszystkie elementy docelowe w module.

orchestratorOption

enum (OrchestratorOption)

Opcja określająca, czy każdy test ma być uruchamiany w ramach własnego wywołania instrumentacji za pomocą narzędzia Android Test Agency. ** Narzędzie Apigee jest zgodne tylko z AndroidemJUnitRunner w wersji 1.1 lub nowszej. ** Narzędzie Apigee zapewnia następujące korzyści:

  • Brak udostępnionego stanu
  • Awarie są pojedyncze
  • Zakres logów zależy od testu

Więcej informacji o Android Test Assistant znajdziesz na stronie https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator.

Jeśli zasada nie jest skonfigurowana, test będzie uruchamiany bez akredytatora.

shardingOption

object (ShardingOption)

Opcja uruchamiania testów równolegle w wielu fragmentach.

Pole sumy app_under_test. Wymagane. app_under_test może mieć tylko jedną z tych wartości:
appApk

object (FileReference)

Pakiet APK testowanej aplikacji.

appBundle

object (AppBundle)

Pakiet aplikacji z wieloma plikami APK dla testowanej aplikacji.

Pakiet aplikacji

Format pliku pakietu Android App Bundle, który zawiera plik BundleConfig.pb, katalog modułu podstawowego, zero lub więcej katalogów modułów funkcji dynamicznych.

Wskazówki dotyczące tworzenia pakietów aplikacji znajdziesz na stronie https://developer.android.com/guide/app-bundle/build.

Zapis JSON
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
Pola
Pole sumy bundle. Wymagane. Dołącz informacje o lokalizacji. bundle może mieć tylko jedną z tych wartości:
bundleLocation

object (FileReference)

plik .aab reprezentujący testowany pakiet aplikacji;

Opcja orkiestrowa

Określa sposób przeprowadzania testu.

Wartości w polu enum
ORCHESTRATOR_OPTION_UNSPECIFIED Wartość domyślna: serwer wybiera tryb. Obecnie oznacza, że test będzie uruchomiony bez administracyjnego. W przyszłości wszystkie testy instrumentacji będą uruchamiane w administracji. Ze względu na wszystkie zalety tego narzędzia zdecydowanie zalecamy korzystanie z tego narzędzia.
USE_ORCHESTRATOR Przeprowadź test za pomocą narzędzia administracyjnego. ** Zgodność tylko z AndroidJUnitRunner w wersji 1.1 lub nowszej. ** Zalecane.
DO_NOT_USE_ORCHESTRATOR Przeprowadź test bez korzystania z narzędzia administracyjnego.

Opcja fragmentacji

Opcje włączania fragmentacji.

Zapis JSON
{

  // Union field option can be only one of the following:
  "uniformSharding": {
    object (UniformSharding)
  },
  "manualSharding": {
    object (ManualSharding)
  },
  "smartSharding": {
    object (SmartSharding)
  }
  // End of list of possible types for union field option.
}
Pola

Pole sumy option.

option może mieć tylko jedną z tych wartości:

uniformSharding

object (UniformSharding)

Równomiernie dzieli przypadki testowe na podstawie łącznej liczby fragmentów.

manualSharding

object (ManualSharding)

Dzieli przypadki testowe na określone grupy pakietów, klas lub metod.

smartSharding

object (SmartSharding)

Testy fragmentów na podstawie wcześniejszych zapisów czasu przypadku testowego.

Jednolita fragmentacja

Równomiernie dzieli przypadki testowe na podstawie łącznej liczby fragmentów.

W przypadku testów z instrumentacją wartość zostanie przetłumaczona na „-e numShard”. i „-e shardIndex” Argumenty AndroidJUnitRunner. Przy włączonym jednolitym fragmentacji określenie jednego z tych argumentów do fragmentacji za pomocą funkcji environmentVariables jest nieprawidłowe.

Ze względu na mechanizm fragmentacji używany przez AndroidaJUnitRunner nie ma gwarancji, że przypadki testowe będą równomiernie rozłożone we wszystkich fragmentach.

Zapis JSON
{
  "numShards": integer
}
Pola
numShards

integer

Wymagane. Łączna liczba fragmentów do utworzenia. Musi to być zawsze liczba dodatnia, która nie jest większa niż łączna liczba przypadków testowych. Jeśli wybierzesz co najmniej 1 urządzenie fizyczne, liczba fragmentów musi być mniejsza niż 50. Jeśli wybierzesz co najmniej 1 urządzenie wirtualne ARM, wartość musi być mniejsza niż 200. Jeśli wybierzesz tylko urządzenia wirtualne x86, wartość nie będzie mniejsza niż 500.

Ręczne fragmentowanie

Dzieli przypadki testowe na określone grupy pakietów, klas lub metod.

Przy włączonym fragmentowaniu ręcznym określenie celów testowych za pomocą zmiennych środowiskowych lub w narzędziu InstrumentationTest jest nieprawidłowe.

Zapis JSON
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
Pola
testTargetsForShard[]

object (TestTargetsForShard)

Wymagane. Grupa pakietów, klas lub metod testowych do uruchomienia w przypadku każdego utworzonego ręcznie fragmentu. Jeśli to pole występuje, musisz określić co najmniej 1 fragment. Jeśli wybierzesz co najmniej 1 urządzenie fizyczne, liczba powtórzonych celów testowania na potrzeby fragmentu musi być mniejsza niż 50. Jeśli wybierzesz co najmniej 1 urządzenie wirtualne ARM, wartość musi być mniejsza niż 200. Jeśli wybierzesz tylko urządzenia wirtualne x86, wartość nie będzie mniejsza niż 500.

Cele testowe dla fragmentu

Przetestuj cele dla fragmentu.

Zapis JSON
{
  "testTargets": [
    string
  ]
}
Pola
testTargets[]

string

Grupa pakietów, klas lub metod testowych do uruchomienia w przypadku każdego fragmentu. Cele muszą być określone w formacie argumentu AndroidJUnitRunner. Na przykład „pakiet com.moje.pakiety”. „klasa com.mój.pakiet.MojaKlasa”.

Liczba wartości testTarget musi być większa niż 0.

Inteligentne fragmentowanie

Testy fragmentów na podstawie wcześniejszych zapisów czasu przypadku testowego.

Zapis JSON
{
  "targetedShardDuration": string
}
Pola
targetedShardDuration

string (Duration format)

Czas trwania testów w obrębie fragmentu.

Wartość domyślna: 300 sekund (5 minut). Minimalna dozwolona wartość: 120 sekund (2 minuty).

Liczba fragmentów jest ustawiana dynamicznie na podstawie czasu, aż do maksymalnego limitu fragmentów (opisanego poniżej). Aby zagwarantować co najmniej 1 przypadek testowy dla każdego fragmentu, liczba fragmentów nie przekroczy liczby przypadków testowych. Czas trwania fragmentu zostanie przekroczony, jeśli:

  • Osiągnięto maksymalny limit fragmentów i pozostał obliczony czas testu do przydzielenia do fragmentów.
  • Szacuje się, że każdy pojedynczy test jest dłuższy niż docelowy czas fragmentu.

Czas trwania fragmentu nie jest gwarantowany, ponieważ inteligentne fragmentowanie korzysta z historii przypadków testowych i domyślnych czasów trwania, które mogą być niedokładne. Zasady znajdowania rekordów czasu trwania przypadków testowych są następujące:

  • Jeśli usługa przetworzyła przypadek testowy w ciągu ostatnich 30 dni, zostanie użyty rekord z najnowszym udanym przypadkiem testowym.
  • W nowych przypadkach testowych używany jest średni czas z innych znanych przypadków testowych.
  • Jeśli nie ma wcześniejszych zapisów czasu przypadku testowego, domyślny czas trwania przypadku testowego to 15 sekund.

Ponieważ rzeczywisty czas trwania fragmentu może przekroczyć docelowy czas trwania fragmentu, zalecamy ustawienie docelowej wartości o co najmniej 5 minut krócej niż maksymalny dozwolony czas oczekiwania testu (45 minut w przypadku urządzeń fizycznych i 60 minut w przypadku urządzeń wirtualnych) lub użycie ustawionej wartości niestandardowego limitu czasu testu. Ta metoda pozwala uniknąć anulowania fragmentu przed zakończeniem wszystkich testów.

Pamiętaj, że obowiązuje limit maksymalnej liczby fragmentów. Jeśli wybierzesz co najmniej 1 urządzenie fizyczne, liczba fragmentów musi być mniejsza niż 50. Jeśli wybierzesz co najmniej 1 urządzenie wirtualne ARM, wartość musi być mniejsza niż 200. Jeśli wybierzesz tylko urządzenia wirtualne x86, wartość nie będzie mniejsza niż 500. Aby zagwarantować co najmniej 1 przypadek testowy na fragment, liczba fragmentów nie przekroczy liczby przypadków testowych. Każdy utworzony fragment wlicza się do dziennego limitu testów.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „s”. Przykład: "3.5s".

Test AndroidRobo

Test aplikacji na Androida, która sprawdza aplikację na wirtualnym lub fizycznym urządzeniu z Androidem, znajdując w miarę jej problemy oraz awarie.

Zapis JSON
{
  "appPackageId": string,
  "appInitialActivity": string,
  "maxDepth": integer,
  "maxSteps": integer,
  "roboDirectives": [
    {
      object (RoboDirective)
    }
  ],
  "roboMode": enum (RoboMode),
  "roboScript": {
    object (FileReference)
  },
  "startingIntents": [
    {
      object (RoboStartingIntent)
    }
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
Pola
appPackageId

string

Pakiet Javy dla testowanej aplikacji. Wartość domyślna jest określana przez sprawdzenie pliku manifestu aplikacji.

appInitialActivity

string

Początkowe działanie, które powinno być zastosowane do uruchomienia aplikacji.

maxDepth
(deprecated)

integer

Maksymalna głębokość stosu przemierzania, jaką może zbadać Robo. Wartość musi wynosić co najmniej 2, aby Robo mógł korzystać z aplikacji poza pierwszym działaniem. Wartość domyślna to 50.

maxSteps
(deprecated)

integer

Maksymalna liczba kroków, które może wykonać Robo. Domyślnie nie ma limitu.

roboDirectives[]

object (RoboDirective)

Zestaw dyrektyw, które Robo powinien stosować podczas indeksowania. Dzięki temu użytkownicy mogą dostosować indeksowanie. Można na przykład podać nazwę użytkownika i hasło do konta testowego.

roboMode

enum (RoboMode)

Tryb, w którym powinien działać Robo. Większość klientów powinna zezwalać serwerowi na automatyczne wypełnianie tego pola.

roboScript

object (FileReference)

Plik JSON z sekwencją działań, które Robo powinien wykonać jako prolog indeksowania.

startingIntents[]

object (RoboStartingIntent)

Intencje użyte do uruchomienia aplikacji w celu indeksowania. Jeśli nie podano żadnej wartości, uruchamiana jest główna aktywność programu uruchamiającego. Jeśli niektóre z nich są dostępne, będą uruchamiane tylko te z nich (główne działanie programu uruchamiającego musi być jawnie określone).

Pole sumy app_under_test. Wymagane. app_under_test może mieć tylko jedną z tych wartości:
appApk

object (FileReference)

Pakiet APK testowanej aplikacji.

appBundle

object (AppBundle)

Pakiet aplikacji z wieloma plikami APK dla testowanej aplikacji.

Dyrektywa Robo

Powoduje, że Robo wchodzi w interakcję z określonym elementem interfejsu, jeśli wystąpi podczas indeksowania. Obecnie Robo może wprowadzać tekst lub klikać elementy.

Zapis JSON
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
Pola
resourceName

string

Wymagane. Nazwa zasobu Androida docelowego elementu interfejsu. Na przykład w Javie: R.string.foo in xml: @string/foo Tylko „foo” . Dokument referencyjny: https://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Tekst, który ma ustawić Robo. Jeśli pozostawisz to pole puste, dyrektywa będzie traktowana jako KLIKNIĘCIE elementu pasującego do atrybutu resourceName.

actionType

enum (RoboActionType)

Wymagane. Typ działania, które Robo powinno wykonać na określonym elemencie.

Typ działania Robo

Działania, które Robo może wykonywać na elementach interfejsu.

Wartości w polu enum
ACTION_TYPE_UNSPECIFIED NIE UŻYWAĆ. Tylko na potrzeby obsługi wersji proto.
SINGLE_CLICK Przekieruj Robo do kliknięcia określonego elementu. No-op, jeśli określonego elementu nie można kliknąć.
ENTER_TEXT Przekieruj Robo do wpisania tekstu w określonym elemencie. No-op, jeśli określony element nie jest włączony lub nie zezwala na wpisywanie tekstu.
IGNORE Przekierowuje Robo do ignorowania interakcji z określonym elementem.

RoboTryb

Tryb, w którym powinien działać Robo.

Wartości w polu enum
ROBO_MODE_UNSPECIFIED Oznacza to, że serwer powinien wybrać tryb. Zalecane.
ROBO_VERSION_1 Uruchamia Robo w trybie tylko UIAutomator bez ponownego podpisywania aplikacji
ROBO_VERSION_2 Uruchamia Robo w standardowym Espresso z opcją zastępczą UIAutomator

Intencja inicjująca Robo

Komunikat umożliwiający określenie aktywności początkowej do indeksowania.

Zapis JSON
{
  "timeout": string,

  // Union field starting_intent can be only one of the following:
  "launcherActivity": {
    object (LauncherActivityIntent)
  },
  "startActivity": {
    object (StartActivityIntent)
  },
  "noActivity": {
    object (NoActivityIntent)
  }
  // End of list of possible types for union field starting_intent.
}
Pola
timeout

string (Duration format)

Czas oczekiwania w sekundach dla każdej intencji.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „s”. Przykład: "3.5s".

Pole sumy starting_intent. Wymagane. Szczegóły intencji, które pozwalają rozpocząć aktywność. starting_intent może mieć tylko jedną z tych wartości:
launcherActivity

object (LauncherActivityIntent)

Intencja, która uruchamia główne działanie programu uruchamiającego.

startActivity

object (StartActivityIntent)

Intencja, która rozpoczyna działanie z określonymi szczegółami.

noActivity

object (NoActivityIntent)

Pomija początkową aktywność

LauncherActivityIntent

Ten typ nie zawiera pól.

Określa intencję, która ma uruchamiać główne działanie programu uruchamiającego.

StartActivityIntent

Intencję początkową określoną przez działanie, identyfikator URI i kategorie.

Zapis JSON
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
Pola
action

string

Nazwa działania. Wymagane dla: START_ACTIVITY.

uri

string

Identyfikator URI działania.

categories[]

string

Kategorie intencji do ustawienia w intencji.

NoActivityIntent

Ten typ nie zawiera pól.

Pomija początkową aktywność

AndroidTestLoop

Testowanie aplikacji na Androida z pętlą testową. Intencja <intent-name> zostanie dodany domyślnie, ponieważ na razie Gry są jedynym użytkownikiem tego interfejsu API.

Zapis JSON
{
  "appPackageId": string,
  "scenarios": [
    integer
  ],
  "scenarioLabels": [
    string
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
Pola
appPackageId

string

Pakiet Javy dla testowanej aplikacji. Wartość domyślna jest określana przez sprawdzenie pliku manifestu aplikacji.

scenarios[]

integer

Lista scenariuszy, które powinny być uruchamiane podczas testu. Wartością domyślną są wszystkie pętle testowe pochodzące z pliku manifestu aplikacji.

scenarioLabels[]

string

Lista etykiet scenariuszy, które powinny być uruchamiane podczas testu. Etykiety scenariusza powinny być zmapowane na etykiety zdefiniowane w pliku manifestu aplikacji. Na przykład atrybuty player_experience i com.google.test.loops.player_experience dodają do wykonania wszystkie pętle oznaczone w pliku manifestu jako nazwa com.google.test.loops.player_experience. W polu scenariuszy można też określić scenariusze.

Pole sumy app_under_test. Wymagane. Pakiet na Androida do przetestowania. app_under_test może mieć tylko jedną z tych wartości:
appApk

object (FileReference)

Pakiet APK testowanej aplikacji.

appBundle

object (AppBundle)

Pakiet aplikacji z wieloma plikami APK dla testowanej aplikacji.

Test IOSXc

Test aplikacji na iOS korzystającej z platformy XCTest. Xcode obsługuje opcję „build for test”, która generuje plik .xctestrun zawierający specyfikację testową (argumenty, metody testowe itp.). Ten typ testu akceptuje plik ZIP zawierający plik .xctestrun i odpowiednią zawartość katalogu Build/Products, która zawiera wszystkie pliki binarne potrzebne do uruchomienia testów.

Zapis JSON
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
Pola
testsZip

object (FileReference)

Wymagane. Plik .zip zawierający plik .xctestrun i zawartość katalogu DerivedData/Build/Products. Plik .xctestrun w tym pliku ZIP jest ignorowany, jeśli określono pole xctestrun.

xctestrun

object (FileReference)

Plik .xctestrun, który zastąpi plik .xctestrun w pliku ZIP z testami. Plik .xctestrun zawiera zmienne środowiskowe wraz z metodami testowania do uruchomienia lub zignorowania, co może być przydatne w testach fragmentacji. Wartość domyślna pochodzi z pliku ZIP z testami.

xcodeVersion

string

Wersja Xcode, która powinna być używana w teście. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje. Domyślnie wybierana jest najnowsza wersja Xcode obsługiwana przez Laboratorium Firebase.

appBundleId

string

Tylko dane wyjściowe. Identyfikator pakietu aplikacji, która jest testowana.

testSpecialEntitlements

boolean

Opcja testowania specjalnych uprawnień aplikacji. Ustawienie tej opcji spowoduje ponowne podpisanie aplikacji ze specjalnymi uprawnieniami z wyraźnym identyfikatorem aplikacji. Obecnie obsługuje testowanie uprawnień aplikacji i środowiska.

Zapętla testowa iOS

Test aplikacji na iOS, w której zaimplementowano co najmniej 1 scenariusz pętli gry. Ten typ testu akceptuje zarchiwizowaną aplikację (plik .ipa) i listę scenariuszy liczb całkowitych, które będą wykonywane po kolei w aplikacji.

Zapis JSON
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
Pola
appIpa

object (FileReference)

Wymagane. Plik .ipa aplikacji do przetestowania.

scenarios[]

integer

Lista scenariuszy, które powinny być uruchamiane podczas testu. Jeśli nie określono inaczej, domyślna wartość to pojedynczy scenariusz 0.

appBundleId

string

Tylko dane wyjściowe. Identyfikator pakietu aplikacji, która jest testowana.

Test IosRobo

Test, który sprawdza aplikację na iOS na urządzeniu z iOS.

Zapis JSON
{
  "appIpa": {
    object (FileReference)
  },
  "appBundleId": string,
  "roboScript": {
    object (FileReference)
  }
}
Pola
appIpa

object (FileReference)

Wymagane. Do przeprowadzenia testu należy użyć adresu IP zapisanego w tym pliku.

appBundleId

string

Identyfikator pakietu aplikacji „app-under”. Jest to ustalane przez sprawdzenie pliku „Info.plist” aplikacji .

roboScript

object (FileReference)

Opcjonalny skrypt Roboscript do dostosowywania indeksowania. Więcej informacji o skryptach Robo znajdziesz na stronie https://firebase.google.com/docs/test-lab/android/robo-scripts-reference.

Matryca środowisk

Macierz środowisk, w których ma zostać przeprowadzony test.

Zapis JSON
{

  // Union field environment_matrix can be only one of the following:
  "androidMatrix": {
    object (AndroidMatrix)
  },
  "androidDeviceList": {
    object (AndroidDeviceList)
  },
  "iosDeviceList": {
    object (IosDeviceList)
  }
  // End of list of possible types for union field environment_matrix.
}
Pola
Pole sumy environment_matrix. Wymagane. Macierz środowisk. environment_matrix może mieć tylko jedną z tych wartości:
androidMatrix

object (AndroidMatrix)

Macierz urządzeń z Androidem.

androidDeviceList

object (AndroidDeviceList)

listę urządzeń z Androidem; test zostanie uruchomiony tylko na określonych urządzeniach.

iosDeviceList

object (IosDeviceList)

Lista urządzeń z iOS.

AndroidMatrix,

Zbiór permutacji konfiguracji urządzenia z Androidem jest zdefiniowany przez iloczyn danych osi. Wewnętrznie dane AndroidMatrix zostaną rozszerzone o zestaw urządzeń z Androidem.

Tworzone będą tylko obsługiwane permutacje. Nieprawidłowe permutacje (np. niezgodne modele lub wersje) są ignorowane.

Zapis JSON
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
Pola
androidModelIds[]

string

Wymagane. Identyfikatory zestawu urządzeń z Androidem, których chcesz użyć. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

androidVersionIds[]

string

Wymagane. Identyfikatory zestawu wersji systemu operacyjnego Android, która ma zostać użyta. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

locales[]

string

Wymagane. Zestaw języków, które urządzenie testowe będzie obsługiwać w ramach testów. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

orientations[]

string

Wymagane. Zbiór orientacji, w których będą przeprowadzane testy. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

Lista urządzeń z Androidem

Lista konfiguracji urządzeń z Androidem, w których ma zostać przeprowadzony test.

Zapis JSON
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
Pola
androidDevices[]

object (AndroidDevice)

Wymagane. Lista urządzeń z Androidem.

Lista urządzeń na iOS

Lista konfiguracji urządzeń z iOS, w których ma zostać przeprowadzony test.

Zapis JSON
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
Pola
iosDevices[]

object (IosDevice)

Wymagane. Lista urządzeń z iOS.

Urządzenie z iOS

Pojedyncze urządzenie z iOS.

Zapis JSON
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
Pola
iosModelId

string

Wymagane. Identyfikator urządzenia z iOS, którego chcesz użyć. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

iosVersionId

string

Wymagane. Identyfikator głównej wersji oprogramowania iOS, która ma zostać użyta. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

locale

string

Wymagane. Język używany na urządzeniu testowym do testowania. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

orientation

string

Wymagane. Orientacja urządzenia podczas testu. Użyj usługi TestEnvironmentDiscoveryService, aby uzyskać obsługiwane opcje.

Wykonanie testu

Jeden test wykonywany w 1 środowisku.

Zapis JSON
{
  "id": string,
  "matrixId": string,
  "projectId": string,
  "testSpecification": {
    object (TestSpecification)
  },
  "shard": {
    object (Shard)
  },
  "environment": {
    object (Environment)
  },
  "state": enum (TestState),
  "toolResultsStep": {
    object (ToolResultsStep)
  },
  "timestamp": string,
  "testDetails": {
    object (TestDetails)
  }
}
Pola
id

string

Tylko dane wyjściowe. Unikalny identyfikator ustawiony przez usługę.

matrixId

string

Tylko dane wyjściowe. Identyfikator zawierającej TestMatrix.

projectId

string

Tylko dane wyjściowe. Projekt w chmurze, do którego należy wykonanie testu.

testSpecification

object (TestSpecification)

Tylko dane wyjściowe. Jak przeprowadzić test.

shard

object (Shard)

Tylko dane wyjściowe. Szczegóły fragmentu.

environment

object (Environment)

Tylko dane wyjściowe. Sposób konfiguracji hostów.

state

enum (TestState)

Tylko dane wyjściowe. Wskazuje postęp wykonywania testu (np. ZAKOŃCZONO).

toolResultsStep

object (ToolResultsStep)

Tylko dane wyjściowe. Miejsce, w którym zapisywane są wyniki tego wykonania.

timestamp

string (Timestamp format)

Tylko dane wyjściowe. Czas pierwszego utworzenia tego wykonania testu.

Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

testDetails

object (TestDetails)

Tylko dane wyjściowe. Dodatkowe informacje o uruchomionym teście.

Fragment

Tylko dane wyjściowe. Szczegóły fragmentu.

Zapis JSON
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
Pola
shardIndex

integer

Tylko dane wyjściowe. Indeks fragmentu wśród wszystkich fragmentów.

numShards

integer

Tylko dane wyjściowe. Łączna liczba fragmentów.

testTargetsForShard

object (TestTargetsForShard)

Tylko dane wyjściowe. Przetestuj cele dla każdego fragmentu. Ustawiony tylko do fragmentowania ręcznego.

estimatedShardDuration

string (Duration format)

Tylko dane wyjściowe. Szacowany czas trwania fragmentu na podstawie wcześniejszych rekordów czasu przypadków testowych, jeśli są dostępne.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „s”. Przykład: "3.5s".

Środowisko

Środowisko, w którym uruchamiany jest test.

Zapis JSON
{

  // Union field environment can be only one of the following:
  "androidDevice": {
    object (AndroidDevice)
  },
  "iosDevice": {
    object (IosDevice)
  }
  // End of list of possible types for union field environment.
}
Pola
Pole sumy environment. Wymagane. Środowisko. environment może mieć tylko jedną z tych wartości:
androidDevice

object (AndroidDevice)

Urządzenie z Androidem, na którym chcesz przeprowadzić test Androida.

iosDevice

object (IosDevice)

Urządzenie z iOS, na którym przeprowadza się test iOS.

Stan testowy

Stan (tj. postęp) wykonania testu lub macierzy.

Wartości w polu enum
TEST_STATE_UNSPECIFIED Nie używać. Tylko na potrzeby obsługi wersji proto.
VALIDATING Trwa weryfikacja wykonania lub macierzy.
PENDING Wykonanie lub tablica czeka na udostępnienie zasobów.
RUNNING

Wykonanie jest w tej chwili przetwarzane.

Można ją ustawić tylko podczas wykonywania.

FINISHED

Wykonanie lub macierz zostało normalnie zakończone.

W przypadku macierzy oznacza to, że przetwarzanie na poziomie macierzy zakończyło się normalnie, ale poszczególne uruchomienia mogą mieć stan ERROR.

ERROR Wykonanie lub macierz zostało zatrzymane, ponieważ wystąpiła awaria infrastruktury.
UNSUPPORTED_ENVIRONMENT

Wykonanie nie zostało uruchomione, ponieważ odnosi się do nieobsługiwanego środowiska.

Można ją ustawić tylko podczas wykonywania.

INCOMPATIBLE_ENVIRONMENT

Wykonanie nie zostało uruchomione, ponieważ podane dane wejściowe są niezgodne z żądanym środowiskiem.

Przykład: wymagana wartość AndroidVersion jest niższa niż wartość parametru minSdkVersion w pliku APK

Można ją ustawić tylko podczas wykonywania.

INCOMPATIBLE_ARCHITECTURE

Wykonanie nie zostało uruchomione, ponieważ podane dane wejściowe są niezgodne z żądaną architekturą.

Przykład: żądane urządzenie nie obsługuje uruchamiania kodu natywnego w dostarczonym pliku APK

Można ją ustawić tylko podczas wykonywania.

CANCELLED

Użytkownik anulował wykonanie.

Można ją ustawić tylko podczas wykonywania.

INVALID

Wykonanie lub macierz nie zostało uruchomione, ponieważ podane dane wejściowe są nieprawidłowe.

Przykłady: plik wejściowy nie ma oczekiwanego typu, jest zniekształcony lub uszkodzony albo został oznaczony jako złośliwe oprogramowanie

Kroki wyników narzędzi

Reprezentuje zasób kroku wyników narzędzia.

Wyświetlane są wyniki TestExecution.

Zapis JSON
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
Pola
projectId

string

Tylko dane wyjściowe. Projekt w chmurze, do którego należy krok z wynikami narzędzia.

historyId

string

Tylko dane wyjściowe. Identyfikator historii wyników narzędzia.

executionId

string

Tylko dane wyjściowe. Narzędzie określa identyfikator wykonania.

stepId

string

Tylko dane wyjściowe. Narzędzie zawiera identyfikator kroku.

Szczegóły testu

Dodatkowe informacje o postępie uruchomionego testu.

Zapis JSON
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
Pola
progressMessages[]

string

Tylko dane wyjściowe. Czytelne, szczegółowe opisy postępów testu. na przykład „Obsługa administracyjna urządzenia”, „Rozpoczynanie testu”.

W trakcie wykonywania nowe dane mogą być dołączane na końcu progressMessages.

errorMessage

string

Tylko dane wyjściowe. Jeśli wartość TestState ma wartość ERROR, ten ciąg znaków będzie zawierać czytelne dla człowieka informacje o błędzie.

Magazyn wyników

Lokalizacje, w których przechowywane są wyniki testu.

Zapis JSON
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
Pola
googleCloudStorage

object (GoogleCloudStorage)

Wymagane.

toolResultsHistory

object (ToolResultsHistory)

Historia wyników narzędzia zawierająca wyniki wykonania narzędzia, w którym są zapisywane.

Jeśli nie zostanie podana, usługa wybierze odpowiednią wartość.

toolResultsExecution

object (ToolResultsExecution)

Tylko dane wyjściowe. Narzędzie przeprowadza wyniki, w których są zapisywane wyniki.

resultsUrl

string

Tylko dane wyjściowe. URL do wyników w konsoli internetowej Firebase.

Google CloudStorage,

Lokalizacja miejsca na dane w Google Cloud Storage (GCS).

Zapis JSON
{
  "gcsPath": string
}
Pola
gcsPath

string

Wymagane. Ścieżka do katalogu w GCS, który ostatecznie zawiera wyniki tego testu. Użytkownik wysyłający żądanie musi mieć uprawnienia do zapisu w zasobniku w podanej ścieżce.

ToolResultsHistory (Historia wyników narzędzia)

Reprezentuje zasób historii wyników narzędzia.

Zapis JSON
{
  "projectId": string,
  "historyId": string
}
Pola
projectId

string

Wymagane. Projekt w chmurze, do którego należy historia wyników narzędzia.

historyId

string

Wymagane. Identyfikator historii wyników narzędzia.

Wykonywanie narzędzi ToolResults

Reprezentuje zasób narzędzia wyświetlający wyniki na etapie wykonania.

Zwracane są wyniki macierzy TestMatrix.

Zapis JSON
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
Pola
projectId

string

Tylko dane wyjściowe. Projekt w chmurze, do którego należy wykonanie wyników narzędzia.

historyId

string

Tylko dane wyjściowe. Identyfikator historii wyników narzędzia.

executionId

string

Tylko dane wyjściowe. Narzędzie określa identyfikator wykonania.

Nieprawidłowe szczegóły macierzy

Szczegółowy powód, dla którego Macierz została uznana za NIEPRAWIDŁĄ.

Wartości w polu enum
INVALID_MATRIX_DETAILS_UNSPECIFIED Nie używać. Tylko na potrzeby obsługi wersji proto.
DETAILS_UNAVAILABLE Macierz jest NIEPRAWIDŁOWA, ale nie ma żadnych dodatkowych szczegółów.
MALFORMED_APK Nie udało się przeanalizować wejściowego pakietu APK aplikacji.
MALFORMED_TEST_APK Nie udało się przeanalizować wejściowego testowego pakietu APK.
NO_MANIFEST Nie udało się znaleźć pliku AndroidManifest.xml.
NO_PACKAGE_NAME Plik manifestu pliku APK nie deklaruje nazwy pakietu.
INVALID_PACKAGE_NAME Identyfikator aplikacji APK (inaczej nazwa pakietu) jest nieprawidłowy. Zobacz też https://developer.android.com/studio/build/application-id
TEST_SAME_AS_APP Pakiet testowy i pakiet aplikacji są takie same.
NO_INSTRUMENTATION Testowy plik APK nie deklaruje instrumentacji.
NO_SIGNATURE Wejściowy plik apk aplikacji nie ma podpisu.
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE Klasa mechanizmu uruchamiania testów określona przez użytkownika lub w pliku manifestu testowego pakietu APK jest niezgodna z narzędziem Android Test Assistant. Narzędzie orkiestrowe jest zgodne tylko z aplikacją AndroidJUnitRunner w wersji 1.1 lub nowszej. Narzędzie orkiestrowe można wyłączyć za pomocą parametru DO_NOT_USE_ORCHESTRATOR ArtisttorOption.
NO_TEST_RUNNER_CLASS

Testowy plik APK nie zawiera klasy mechanizmu uruchamiania testów określonej przez użytkownika ani w pliku manifestu. Przyczyna może być następująca:

  • użytkownik podał nieprawidłową nazwę klasy uruchamiania lub
  • narzędzie do uruchamiania testów nie jest wbudowane w testowy plik APK (może być w pliku APK aplikacji).
NO_LAUNCHER_ACTIVITY Nie udało się znaleźć głównego działania programu uruchamiającego.
FORBIDDEN_PERMISSIONS Aplikacja deklaruje co najmniej jedno uprawnienie, które jest niedozwolone.
INVALID_ROBO_DIRECTIVES Wystąpił konflikt w podanych informacjach roboDirectives.
INVALID_RESOURCE_NAME Podane dyrektywy robo zawierają co najmniej jedną nieprawidłową nazwę zasobu.
INVALID_DIRECTIVE_ACTION Nieprawidłowa definicja działania w dyrektywach Robo (np. działanie kliknięcia lub zignorowania zawiera pole tekstowe do wprowadzania danych)
TEST_LOOP_INTENT_FILTER_NOT_FOUND Nie ma filtra intencji pętli testowej lub podany jest nieprawidłowo sformatowany.
SCENARIO_LABEL_NOT_DECLARED Żądanie zawiera etykietę scenariusza, która nie została zadeklarowana w pliku manifestu.
SCENARIO_LABEL_MALFORMED Podczas analizowania wartości etykiety wystąpił błąd.
SCENARIO_NOT_DECLARED Żądanie zawiera numer scenariusza, który nie został zadeklarowany w pliku manifestu.
DEVICE_ADMIN_RECEIVER Aplikacje administratora urządzenia są niedozwolone.
MALFORMED_XC_TEST_ZIP Skompresowany plik XCTest ma nieprawidłowy format. Plik ZIP nie zawierał pojedynczego pliku .xctestrun ani zawartości katalogu DerivedData/Build/Products.
BUILT_FOR_IOS_SIMULATOR Spakowany XCTest powstał z myślą o wersji na symulator iOS, a nie na urządzenia fizyczne.
NO_TESTS_IN_XC_TEST_ZIP Plik .xctestrun nie określał żadnych celów testu.
USE_DESTINATION_ARTIFACTS Co najmniej jeden z celów testu zdefiniowanych w pliku .xctestrun wskazuje „UseDestinationArtifacts”, co jest niedozwolone.
TEST_NOT_APP_HOSTED Testy XC przeprowadzane na urządzeniach fizycznych muszą mieć parametr „IsAppHostedTestBundle”. == "prawda" w pliku xctestrun.
PLIST_CANNOT_BE_PARSED Nie udało się przeanalizować pliku Info.plist w pliku zip XCTest.
TEST_ONLY_APK

Plik APK jest oznaczony jako „testOnly”. Wycofane i nieużywane.

MALFORMED_IPA Nie udało się przeanalizować wejściowego adresu IPA.
MISSING_URL_SCHEME Aplikacja nie rejestruje schematu URL pętli gry.
MALFORMED_APP_BUNDLE Nie udało się przetworzyć pakietu aplikacji na iOS (.app).
NO_CODE_APK Plik APK nie zawiera kodu. Więcej informacji: https://developer.android.com/guide/topics/manifest/application-element.html#code
INVALID_INPUT_APK Podana ścieżka pliku APK jest nieprawidłowa, plik APK nie istnieje lub użytkownik nie ma uprawnień dostępu do pliku APK.
INVALID_APK_PREVIEW_SDK Plik APK jest przeznaczony dla pakietu SDK w wersji testowej, który nie jest obsługiwany
MATRIX_TOO_LARGE Macierz została rozwinięta, aby zawierała zbyt wiele wykonań.
TEST_QUOTA_EXCEEDED Niewystarczający limit testów do uruchomienia wykonań w tej macierzy.
SERVICE_NOT_ACTIVATED Wymagany interfejs API usługi w chmurze nie został aktywowany. Zobacz: https://firebase.google.com/docs/test-lab/android/continuous#requirements
UNKNOWN_PERMISSION_ERROR Podczas tego testu wystąpił nieznany problem z uprawnieniami.

Szczegóły błędu macierzy

Opisuje pojedynczy błąd lub problem z macierzystą.

Zapis JSON
{
  "reason": string,
  "message": string
}
Pola
reason

string

Tylko dane wyjściowe. przyczynę błędu. Jest to stała wartość w UPPER_SNAKE_CASE, która określa przyczynę błędu.

message

string

Tylko dane wyjściowe. Zrozumiały dla człowieka komunikat na temat błędu w macierzy testów. Rozwija się w polu reason i zawiera dodatkowe informacje oraz dostępne opcje rozwiązania problemu.

Podsumowanie wyniku

Podsumowanie wyniku ukończonego zestawu testów.

Wartości w polu enum
OUTCOME_SUMMARY_UNSPECIFIED Nie używać. Tylko na potrzeby obsługi wersji proto.
SUCCESS

Uruchomienie zestawu testów zakończyło się powodzeniem, np.:

  • Wszystkie przypadki testowe zaliczone.
  • Robo nie wykryła awarii w testowanej aplikacji.
FAILURE

Nie udało się uruchomić, na przykład:

  • Co najmniej 1 przypadek testowy zakończył się niepowodzeniem.
  • Przekroczono limit czasu testu.
  • Testowana aplikacja uległa awarii.
INCONCLUSIVE Wystąpił nieoczekiwany błąd. Uruchomienie powinno być nadal uznawane za nieudane, ale prawdopodobnie jest to problem przejściowy. Ponowne uruchomienie może zakończyć się powodzeniem.
SKIPPED

Pominięto wszystkie testy, np.:

  • Wszystkie konfiguracje urządzeń były niezgodne.

Metody

cancel

Anuluje nieukończone wykonania testów w macierzy testów.

create

Tworzy i przeprowadza macierz testów zgodnie z podaną specyfikacją.

get

Sprawdza stan macierzy testów i wykonań po ich utworzeniu.