- リソース: テストマトリックス
- クライアント情報
- クライアント情報詳細
- テスト仕様
- テスト設定
- デバイスファイル
- オブジェクトファイル
- ファイル参照
- 通常ファイル
- APK
- アカウント
- GoogleAuto
- 環境変数
- Systraceセットアップ
- Iosテストセットアップ
- Iosデバイスファイル
- Android計測テスト
- アプリバンドル
- オーケストレーターオプション
- シャーディングオプション
- ユニフォームシャーディング
- 手動シャーディング
- シャードのテストターゲット
- スマートシャーディング
- AndroidRoboTest
- ロボディレクティブ
- ロボアクションタイプ
- ロボモード
- ロボ開始意図
- ランチャーアクティビティ意図
- StartActivityIntent
- AndroidTestLoop
- IosXcテスト
- Iosテストループ
- 環境マトリックス
- Androidマトリックス
- Androidデバイスリスト
- Androidデバイス
- Iosデバイスリスト
- Iosデバイス
- テスト実行
- シャード
- 環境
- テスト状態
- ツール結果ステップ
- テストの詳細
- 結果ストレージ
- Googleクラウドストレージ
- ツール結果履歴
- ツール結果実行
- 無効なマトリックスの詳細
- 結果の概要
- メソッド
リソース: テストマトリックス
TestMatrix は、テストに関するすべての詳細をキャプチャします。これには、環境構成、テスト仕様、テストの実行、全体的な状態と結果が含まれます。
JSON表現 |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
田畑 | |
---|---|
testMatrixId | 出力のみ。サービスによって設定された一意の ID。 |
projectId | テスト マトリックスを所有するクラウド プロジェクト。 |
clientInfo | テストを呼び出したクライアントに関する情報。 |
testSpecification | 必須。テストの実行方法。 |
environmentMatrix | 必須。テストが実行されているデバイス。 |
testExecutions[] | 出力のみ。サービスがこのマトリックスに対して作成するテスト実行のリスト。 |
resultStorage | 必須。マトリックスの結果が書き込まれる場所。 |
state | 出力のみ。テスト マトリックスの現在の進行状況を示します。 |
timestamp | 出力のみ。このテスト マトリックスが最初に作成された時刻。 RFC3339 UTC「Zulu」形式のタイムスタンプ。ナノ秒の分解能と最大 9 桁の小数点以下を備えています。例: |
invalidMatrixDetails | 出力のみ。マトリックスが無効であるとみなされる理由を説明します。 INVALID 状態の行列にのみ有効です。 |
flakyTestAttempts | 何らかの理由で 1 つ以上のテスト ケースが失敗した場合に、TestExecution を再試行する回数。許可される再実行の最大数は 10 です。 デフォルトは 0 で、再実行がないことを意味します。 |
outcomeSummary | 出力のみ。テストの全体的な結果。テスト マトリックスの状態が FINISHED の場合にのみ設定されます。 |
failFast | true の場合、マトリックス内の各実行/シャードの実行は最大 1 回のみ試行されます。不安定なテストの試みは影響を受けません。 通常、潜在的なインフラストラクチャの問題が検出された場合、2 回以上の試行が行われます。 この機能は、遅延の影響を受けやすいワークロード向けです。実行失敗の発生率はフェイルファスト マトリックスの場合に大幅に高くなる可能性があり、そのことが予想されるためサポートはより制限されます。 |
クライアント情報
テストを呼び出したクライアントに関する情報。
JSON表現 |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
田畑 | |
---|---|
name | 必須。クライアント名 (gcloud など)。 |
clientInfoDetails[] | クライアントに関する詳細情報のリスト。 |
クライアント情報詳細
テストを呼び出したクライアントに関する詳細情報のキーと値のペア。例: {'バージョン'、'1.0'}、{'リリース トラック'、'ベータ'}。
JSON表現 |
---|
{ "key": string, "value": string } |
田畑 | |
---|---|
key | 必須。詳細な顧客情報のキー。 |
value | 必須。詳細なクライアント情報の値。 |
テスト仕様
テストの実行方法の説明。
JSON表現 |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
田畑 | |
---|---|
testTimeout | テスト実行が自動的にキャンセルされるまでに実行が許可される最大時間。デフォルト値は 5 分です。 「 |
disableVideoRecording | ビデオ録画を無効にします。テストの待ち時間を短縮できる可能性があります。 |
disablePerformanceMetrics | パフォーマンス メトリクスの記録を無効にします。テストの待ち時間を短縮できる可能性があります。 |
ユニオンフィールドsetup 。テスト設定の要件。 setup 次のいずれか 1 つだけです。 | |
testSetup | Android のセットアップ要件 (インストールするファイル、ブートストラップ スクリプトなど) をテストします。 |
iosTestSetup | iOS のテスト設定要件。 |
ユニオンフィールドtest 。必須。実行するテストのタイプ。 test 次のいずれか 1 つだけです。 | |
androidInstrumentationTest | Android インストルメンテーション テスト。 |
androidRoboTest | Androidのロボテストです。 |
androidTestLoop | テストループを備えた Android アプリケーション。 |
iosXcTest | iOS XCTest (.xctestrun ファイル経由)。 |
iosTestLoop | テストループを備えた iOS アプリケーション。 |
テスト設定
テストを実行する前に Android デバイスをセットアップする方法の説明。
JSON表現 |
---|
{ "filesToPush": [ { object ( |
田畑 | |
---|---|
filesToPush[] | テストを開始する前にデバイスにプッシュするファイルのリスト。 |
directoriesToPull[] | テストの終了時に GCS にアップロードするデバイス上のディレクトリのリスト。 /sdcard、/storage、または /data/local/tmp の下の絶対パスである必要があります。パス名は、文字 a ~ AZ 0 ~ 9 _ - に制限されます。 + と / 注: パス /sdcard および /data が使用可能になり、暗黙的なパス置換として扱われます。たとえば、特定のデバイス上の /sdcard が外部ストレージにマップされていない場合、システムはそれをそのデバイスの外部ストレージ パスのプレフィックスに置き換えます。 |
additionalApks[] | 直接テストされる APK に加えてインストールする APK。現在は 100 が上限となっています。 |
account | テスト中、デバイスはこのアカウントにログインします。 |
networkProfile | テストの実行に使用されるネットワーク トラフィック プロファイル。使用可能なネットワーク プロファイルは、TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog を呼び出すときに NETWORK_CONFIGURATION 環境タイプを使用してクエリできます。 |
environmentVariables[] | テスト用に設定する環境変数 (インストルメンテーション テストにのみ適用可能)。 |
systrace | 実行のための Systrace 構成。非推奨: Systrace は、2020 年 1 月 1 日に廃止された Python 2 を使用していました。 Systrace は Cloud Testing API でサポートされなくなり、結果には Systrace ファイルが提供されなくなります。 |
dontAutograntPermissions | アプリのインストール時にすべてのランタイム権限が付与されないようにするかどうか |
デバイスファイル
単一のデバイス ファイルの説明。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
共用体フィールドdevice_file 。必須。 device_file 次のいずれか 1 つだけです。 | |
obbFile | 不透明なバイナリ BLOB ファイルへの参照。 |
regularFile | 通常のファイルへの参照。 |
オブジェクトファイル
テストの開始前にデバイスにインストールする不透明なバイナリ BLOB ファイル。
JSON表現 |
---|
{
"obbFileName": string,
"obb": {
object ( |
田畑 | |
---|---|
obbFileName | 必須。 Android で指定された形式に準拠する必要がある OBB ファイル名 (例: [main|patch].0300110.com.example.android.obb)。<shared-storage>/Android/obb/<package-name>/ にインストールされます。デバイス上で。 |
obb | 必須。デバイスにインストールする Opaque Binary Blob (OBB) ファイル。 |
ファイル参照
ユーザー入力に使用されるファイルへの参照。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
ユニオンフィールドfile 。必須。ファイル参照。 file 次のいずれか 1 つだけです。 | |
gcsPath | Google Cloud Storage 内のファイルへのパス。例: gs://build-app-1414623860166/app%40debug-unaligned.apkこれらのパスは URL エンコード (パーセント エンコード) されることが想定されています |
通常ファイル
テストの開始前にデバイスにインストールするファイルまたはディレクトリ。
JSON表現 |
---|
{
"content": {
object ( |
田畑 | |
---|---|
content | 必須。ソースファイル。 |
devicePath | 必須。コンテンツをデバイス上のどこに配置するか。ホワイトリストに登録された絶対パスである必要があります。ファイルが存在する場合は置き換えられます。次のデバイス側ディレクトリとそのサブディレクトリがホワイトリストに登録されています。 ${EXTERNAL_STORAGE}、/sdcard、または /storage ${ANDROID_DATA}/local/tmp、または /data/local/tmp これらのディレクトリ ツリーの外側のパスを指定することは無効です。 パス /sdcard および /data が使用可能になり、暗黙的なパス置換として扱われます。たとえば、特定のデバイス上の /sdcard が外部ストレージにマップされていない場合、システムはそれをそのデバイスの外部ストレージ パスのプレフィックスに置き換えて、そこにファイルをコピーします。 アプリで環境 API を使用し、コードをテストして、ポータブルな方法でデバイス上のファイルにアクセスすることを強くお勧めします。 |
APK
インストールする Android パッケージ ファイル。
JSON表現 |
---|
{
"location": {
object ( |
田畑 | |
---|---|
location | テストの開始前にデバイスにインストールされる APK へのパス。 |
packageName | インストールする APK の Java パッケージ。値はアプリケーションのマニフェストを調べることによって決定されます。 |
アカウント
アカウントとそのログイン方法を識別します。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
ユニオンフィールドaccount_type 。必須。アカウントの種類。その目的 (Google など) とログイン メカニズム (ユーザー名とパスワードなど) に基づいています。 account_type 次のいずれか 1 つだけです。 | |
googleAuto | Google の自動ログイン アカウント。 |
GoogleAuto
Google アカウントの自動ログインを有効にします。設定すると、サービスはテストを実行する前に、Google テスト アカウントを自動的に生成し、デバイスに追加します。テスト アカウントは再利用される可能性があることに注意してください。多くのアプリケーションは、アカウントがデバイス上に存在する場合、その完全な機能セットを表示します。これらの生成されたアカウントを使用してデバイスにログインすると、より多くの機能をテストできるようになります。
環境変数
環境変数としてテストに渡されるキーと値のペア。
JSON表現 |
---|
{ "key": string, "value": string } |
田畑 | |
---|---|
key | 環境変数のキー。 |
value | 環境変数の値。 |
Systraceセットアップ
JSON表現 |
---|
{ "durationSeconds": integer } |
田畑 | |
---|---|
durationSeconds | Systrace の継続時間 (秒単位)。 1 ~ 30 秒にする必要があります。 0 は systrace を無効にします。 |
Iosテストセットアップ
テストを実行する前に iOS デバイスをセットアップする方法の説明。
JSON表現 |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
田畑 | |
---|---|
networkProfile | テストの実行に使用されるネットワーク トラフィック プロファイル。使用可能なネットワーク プロファイルは、TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog を呼び出すときに NETWORK_CONFIGURATION 環境タイプを使用してクエリできます。 |
additionalIpas[] | 直接テストされるアプリに加えてインストールする iOS アプリ。 |
pushFiles[] | テストを開始する前にデバイスにプッシュするファイルのリスト。 |
pullDirectories[] | テストの終了時に Cloud Storage にアップロードするデバイス上のディレクトリのリスト。 ディレクトリは、共有ディレクトリ (/private/var/mobile/Media など) 内にあるか、バンドル ID を指定してアプリのファイル システム内のアクセス可能なディレクトリ (/Documents など) 内にある必要があります。 |
Iosデバイスファイル
テストの開始前にデバイスにインストールするファイルまたはディレクトリ。
JSON表現 |
---|
{
"content": {
object ( |
田畑 | |
---|---|
content | ソースファイル |
bundleId | このファイルが存在するアプリのバンドル ID。 iOS アプリは独自のファイル システムをサンドボックス化するため、アプリ ファイルはデバイスにインストールされているアプリを指定する必要があります。 |
devicePath | アプリのサンドボックス ファイル システム内の、デバイス上のファイルの場所 |
Android計測テスト
Android コンポーネントを通常のライフサイクルから独立して制御できる Android アプリケーションのテスト。 Android インストルメンテーション テストでは、仮想または物理 AndroidDevice 上の同じプロセス内でアプリケーション APK を実行し、APK をテストします。また、com.google.GoogleTestRunner などのテスト ランナー クラスも指定します。これは、選択した特定のインストルメンテーション フレームワークによって異なります。
Android テストの種類の詳細については、 https://developer.android.com/training/testing/fundamentalsを参照してください。
JSON表現 |
---|
{ "testApk": { object ( |
田畑 | |
---|---|
testApk | 必須。実行するテストコードを含む APK。 |
appPackageId | テスト対象のアプリケーションの Java パッケージ。デフォルト値は、アプリケーションのマニフェストを調べることによって決定されます。 |
testPackageId | 実行するテストの Java パッケージ。デフォルト値は、アプリケーションのマニフェストを調べることによって決定されます。 |
testRunnerClass | InstrumentationTestRunner クラス。デフォルト値は、アプリケーションのマニフェストを調べることによって決定されます。 |
testTargets[] | 各ターゲットは、次のいずれかの形式で、パッケージ名またはクラス名で完全修飾されている必要があります。
空の場合、モジュール内のすべてのターゲットが実行されます。 |
orchestratorOption | Android Test Orchestrator を使用したインストルメンテーションの独自の呼び出し内で各テストを実行するかどうかのオプション。 ** Orchestrator は AndroidJUnitRunner バージョン 1.1 以降とのみ互換性があります。 ** Orchestrator には次の利点があります。
Android Test Orchestrator の詳細については、https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestratorを参照してください。 設定しない場合、テストはオーケストレーターなしで実行されます。 |
shardingOption | 複数のシャードでテストを並行して実行するオプション。 |
ユニオンフィールドapp_under_test 。必須。 app_under_test 次のいずれか 1 つだけです。 | |
appApk | テスト対象のアプリケーションの APK。 |
appBundle | テスト対象のアプリケーションのマルチ APK アプリ バンドル。 |
アプリバンドル
BundleConfig.pb ファイル、ベース モジュール ディレクトリ、0 個以上の動的機能モジュール ディレクトリを含む Android アプリ バンドル ファイル形式。
App Bundle の構築に関するガイダンスについては、 https://developer.android.com/guide/app-bundle/buildを参照してください。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
ユニオンフィールドbundle 。必須。位置情報をバンドルします。 bundle 次のいずれか 1 つだけです。 | |
bundleLocation | テスト対象のアプリ バンドルを表す .aab ファイル。 |
オーケストレーターオプション
テストの実行方法を指定します。
列挙型 | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | デフォルト値: サーバーがモードを選択します。現時点では、テストがオーケストレーターなしで実行されることを意味します。将来的には、すべてのインストルメンテーション テストがオーケストレーターを使用して実行されるようになります。オーケストレーターにはさまざまなメリットがあるため、オーケストレーターの使用を強くお勧めします。 |
USE_ORCHESTRATOR | オーケストレーターを使用してテストを実行します。 ** AndroidJUnitRunner バージョン 1.1 以降とのみ互換性があります。 ** 推奨。 |
DO_NOT_USE_ORCHESTRATOR | オーケストレーターを使用せずにテストを実行します。 |
シャーディングオプション
シャーディングを有効にするためのオプション。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
ユニオンフィールド | |
uniformSharding | シャードの総数を指定してテスト ケースを均一にシャードします。 |
manualSharding | テスト ケースをパッケージ、クラス、メソッドの指定されたグループに分割します。 |
smartSharding | 以前のテスト ケースのタイミング記録に基づいてシャード テストを行います。 |
ユニフォームシャーディング
シャードの総数を指定してテスト ケースを均一にシャードします。
インストルメンテーション テストの場合、これは AndroidJUnitRunner 引数「-e numShard」および「-e shardIndex」に変換されます。均一シャーディングが有効な場合、 environmentVariables
を介してこれらのシャーディング引数のいずれかを指定することは無効です。
AndroidJUnitRunner が使用するシャーディング メカニズムに基づいて、テスト ケースがすべてのシャードに均一に分散されるという保証はありません。
JSON表現 |
---|
{ "numShards": integer } |
田畑 | |
---|---|
numShards | 必須。作成するシャードの総数。これは常に、テスト ケースの総数を超えない正の数である必要があります。 1 つ以上の物理デバイスを選択する場合、シャードの数は 50 以下である必要があります。1 つ以上の ARM 仮想デバイスを選択する場合は、200 以下である必要があります。x86 仮想デバイスのみを選択する場合は、500 以下である必要があります。 |
手動シャーディング
テスト ケースをパッケージ、クラス、メソッドの指定されたグループに分割します。
手動シャーディングが有効になっている場合、environmentVariables または InstrumentationTest でのテスト ターゲットの指定は無効です。
JSON表現 |
---|
{
"testTargetsForShard": [
{
object ( |
田畑 | |
---|---|
testTargetsForShard[] | 必須。手動で作成されたシャードごとに実行されるパッケージ、クラス、テスト メソッドのグループ。このフィールドが存在する場合は、少なくとも 1 つのシャードを指定する必要があります。 1 つ以上の物理デバイスを選択する場合、繰り返される testTargetsForShard の数は 50 以下である必要があります。1 つ以上の ARM 仮想デバイスを選択する場合は、200 以下である必要があります。x86 仮想デバイスのみを選択する場合は、<= 500。 |
シャードのテストターゲット
シャードのテストターゲット。
JSON表現 |
---|
{ "testTargets": [ string ] } |
田畑 | |
---|---|
testTargets[] | 各シャードに対して実行されるパッケージ、クラス、テスト メソッドのグループ。ターゲットは AndroidJUnitRunner 引数形式で指定する必要があります。たとえば、「パッケージ com.my.packages」「クラス com.my.package.MyClass」などです。 testTarget の数は 0 より大きくなければなりません。 |
スマートシャーディング
以前のテスト ケースのタイミング記録に基づいてシャード テストを行います。
JSON表現 |
---|
{ "targetedShardDuration": string } |
田畑 | |
---|---|
targetedShardDuration | シャード内のテストにかかる時間。 デフォルト: 300 秒 (5 分)。許容される最小値: 120 秒 (2 分)。 シャード数は、最大シャード制限 (後述) まで、時間に基づいて動的に設定されます。各シャードに少なくとも 1 つのテスト ケースを保証するために、シャードの数がテスト ケースの数を超えることはありません。次の場合、シャードの期間は超過します。
スマート シャーディングではテスト ケースの履歴とデフォルトの期間が使用されるため、シャードの期間は保証されませんが、これらは正確ではない可能性があります。テスト ケースのタイミング レコードを検索するためのルールは次のとおりです。
実際のシャード期間は目標のシャード期間を超える可能性があるため、最大許容テスト タイムアウト (物理デバイスの場合は 45 分、仮想デバイスの場合は 60 分) よりも少なくとも 5 分短い目標値を設定するか、カスタムのシャード期間を使用することをお勧めします。設定したテストタイムアウト値。このアプローチにより、すべてのテストが完了する前にシャードがキャンセルされることが回避されます。 シャードの最大数には制限があることに注意してください。 1 つ以上の物理デバイスを選択する場合、シャードの数は 50 以下である必要があります。1 つ以上の ARM 仮想デバイスを選択する場合は、200 以下である必要があります。x86 仮想デバイスのみを選択する場合は、500 以下である必要がありますシャードごとに少なくとも 1 つのテスト ケースを保証するために、シャードの数がテスト ケースの数を超えることはありません。作成された各シャードは、毎日のテスト割り当てにカウントされます。 「 |
AndroidRoboTest
Android アプリケーションのテスト。仮想または物理 Android デバイス上のアプリケーションを探索し、実行中に原因とクラッシュを見つけます。
JSON表現 |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
田畑 | |
---|---|
appPackageId | テスト対象のアプリケーションの Java パッケージ。デフォルト値は、アプリケーションのマニフェストを調べることによって決定されます。 |
appInitialActivity | アプリの起動に使用する必要がある最初のアクティビティ。 |
maxDepth | ロボが探索できるトラバーサル スタックの最大深さ。 Robo が最初のアクティビティを超えてアプリを探索するには、少なくとも 2 である必要があります。デフォルトは50です。 |
maxSteps | Robo が実行できる最大ステップ数。デフォルトは制限なしです。 |
roboDirectives[] | Robo がクロール中に適用する必要がある一連のディレクティブ。これにより、ユーザーはクロールをカスタマイズできるようになります。たとえば、テスト アカウントのユーザー名とパスワードを指定できます。 |
roboMode | ロボが実行するモード。ほとんどのクライアントは、サーバーがこのフィールドに自動的に入力できるようにする必要があります。 |
roboScript | Robo がクロールのプロローグとして実行する必要がある一連のアクションを含む JSON ファイル。 |
startingIntents[] | クロール用にアプリを起動するために使用されるインテント。何も指定されていない場合は、メインのランチャー アクティビティが起動されます。いくつかが提供されている場合は、提供されているものだけが起動されます (メインのランチャー アクティビティは明示的に提供する必要があります)。 |
ユニオンフィールドapp_under_test 。必須。 app_under_test 次のいずれか 1 つだけです。 | |
appApk | テスト対象のアプリケーションの APK。 |
appBundle | テスト対象のアプリケーションのマルチ APK アプリ バンドル。 |
ロボディレクティブ
クロール中に特定の UI 要素が見つかった場合、それと対話するように Robo に指示します。現在、Robo はテキスト入力または要素のクリックを実行できます。
JSON表現 |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
田畑 | |
---|---|
resourceName | 必須。ターゲット UI 要素の Android リソース名。たとえば、Java の場合: R.string.foo XML の場合: @string/foo 「foo」部分のみが必要です。参考ドキュメント: https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText | ロボに設定するように指示されるテキスト。空のままにした場合、ディレクティブは resourceName に一致する要素の CLICK として扱われます。 |
actionType | 必須。 Robo が指定された要素に対して実行するアクションのタイプ。 |
ロボアクションタイプ
Robo が UI 要素に対して実行できるアクション。
列挙型 | |
---|---|
ACTION_TYPE_UNSPECIFIED | 使ってはいけません。プロトバージョン管理のみ。 |
SINGLE_CLICK | Robo に指定された要素をクリックするよう指示します。指定された要素をクリックできない場合は何もしません。 |
ENTER_TEXT | 指定された要素にテキストを入力するように Robo に指示します。指定された要素が有効でない場合、またはテキスト入力が許可されていない場合は、何も行われません。 |
IGNORE | Robo に特定の要素との相互作用を無視するように指示します。 |
ロボモード
ロボが実行するモード。
列挙型 | |
---|---|
ROBO_MODE_UNSPECIFIED | これは、サーバーがモードを選択する必要があることを意味します。推奨。 |
ROBO_VERSION_1 | アプリを再起動せずに UIAutomator 専用モードで Robo を実行します |
ROBO_VERSION_2 | UIAutomator フォールバックを使用して標準の Espresso で Robo を実行します |
ロボ開始意図
クロールする開始アクティビティを指定するためのメッセージ。
JSON表現 |
---|
{ "timeout": string, // Union field |
田畑 | |
---|---|
timeout | 各インテントのタイムアウト (秒単位)。 「 |
ユニオンフィールドstarting_intent 。必須。アクティビティを開始するためのインテントの詳細。 starting_intent 次のいずれか 1 つだけです。 | |
launcherActivity | メインのランチャーアクティビティを開始するインテント。 |
startActivity | 特定の詳細を含むアクティビティを開始するインテント。 |
ランチャーアクティビティ意図
メインのランチャーアクティビティを開始するインテントを指定します。
StartActivityIntent
アクション、URI、カテゴリによって指定される開始インテント。
JSON表現 |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
田畑 | |
---|---|
action | アクション名。 START_ACTIVITY には必須です。 |
uri | アクションの URI。 |
categories[] | インテントに設定するインテント カテゴリ。 |
AndroidTestLoop
テストループを使用した Android アプリケーションのテスト。当面はゲームがこの API の唯一のユーザーであるため、インテント <intent-name> は暗黙的に追加されます。
JSON表現 |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
田畑 | |
---|---|
appPackageId | テスト対象のアプリケーションの Java パッケージ。デフォルトは、アプリケーションのマニフェストを調べることによって決定されます。 |
scenarios[] | テスト中に実行する必要があるシナリオのリスト。デフォルトは、アプリケーションのマニフェストから派生したすべてのテスト ループです。 |
scenarioLabels[] | テスト中に実行する必要があるシナリオ ラベルのリスト。シナリオ ラベルは、アプリケーションのマニフェストで定義されたラベルにマップする必要があります。たとえば、player_ experience と com.google.test.loops.player_ experience は、マニフェスト内で com.google.test.loops.player_ experience という名前のラベルが付けられたすべてのループを実行に追加します。シナリオフィールドでシナリオを指定することもできます。 |
ユニオンフィールドapp_under_test 。必須。テストする Android パッケージ。 app_under_test 次のいずれか 1 つだけです。 | |
appApk | テスト対象のアプリケーションの APK。 |
appBundle | テスト対象のアプリケーションのマルチ APK アプリ バンドル。 |
IosXcテスト
XCTest フレームワークを使用する iOS アプリケーションのテスト。 Xcode は、テスト仕様 (引数、テスト メソッドなど) を含む .xctestrun ファイルを生成する「テスト用にビルド」オプションをサポートしています。このテスト タイプは、.xctestrun ファイルと、テストの実行に必要なすべてのバイナリを含む Build/Products ディレクトリの対応するコンテンツを含む zip ファイルを受け入れます。
JSON表現 |
---|
{ "testsZip": { object ( |
田畑 | |
---|---|
testsZip | 必須。 .xctestrun ファイルと DerivedData/Build/Products ディレクトリの内容を含む .zip。 xctestrun フィールドが指定されている場合、この zip 内の .xctestrun ファイルは無視されます。 |
xctestrun | テスト zip 内の .xctestrun ファイルをオーバーライドする .xctestrun ファイル。 .xctestrun ファイルには、実行または無視するテスト メソッドとともに環境変数が含まれているため、これはテストのシャーディングに役立ちます。デフォルトはテスト zip から取得されます。 |
xcodeVersion | テストに使用する必要がある Xcode のバージョン。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。デフォルトは、Firebase Test Lab がサポートする最新の Xcode バージョンです。 |
appBundleId | 出力のみ。テスト対象のアプリケーションのバンドル ID。 |
testSpecialEntitlements | 特別なアプリの資格をテストするオプション。これを設定すると、明示的なアプリケーション識別子を持つ特別な資格を持つアプリに再署名されます。現在、aps 環境資格のテストをサポートしています。 |
Iosテストループ
1 つ以上のゲーム ループ シナリオを実装する iOS アプリケーションのテスト。このテスト タイプは、アーカイブされたアプリケーション (.ipa ファイル) と、アプリ上で順次実行される整数のシナリオのリストを受け入れます。
JSON表現 |
---|
{
"appIpa": {
object ( |
田畑 | |
---|---|
appIpa | 必須。テストするアプリケーションの .ipa。 |
scenarios[] | テスト中に実行する必要があるシナリオのリスト。指定しない場合、デフォルトは単一シナリオ 0 になります。 |
appBundleId | 出力のみ。テスト対象のアプリケーションのバンドル ID。 |
環境マトリックス
テストが実行される環境のマトリックス。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
共用体フィールドenvironment_matrix 。必須。環境マトリックス。 environment_matrix 次のいずれか 1 つだけです。 | |
androidMatrix | Android デバイスのマトリックス。 |
androidDeviceList | Android デバイスのリスト。テストは指定されたデバイスでのみ実行されます。 |
iosDeviceList | iOS デバイスのリスト。 |
Androidマトリックス
Android デバイス構成の順列のセットは、指定された軸の外積によって定義されます。内部的には、指定された AndroidMatrix は AndroidDevices のセットに展開されます。
サポートされている順列のみがインスタンス化されます。無効な順列 (互換性のないモデル/バージョンなど) は無視されます。
JSON表現 |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
田畑 | |
---|---|
androidModelIds[] | 必須。使用する Android デバイスのセットの ID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
androidVersionIds[] | 必須。使用する Android OS バージョンのセットの ID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
locales[] | 必須。テストデバイスがテストのために有効にするロケールのセット。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
orientations[] | 必須。テストに使用する方向のセット。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
Androidデバイスリスト
テストが実行される Android デバイス構成のリスト。
JSON表現 |
---|
{
"androidDevices": [
{
object ( |
田畑 | |
---|---|
androidDevices[] | 必須。 Android デバイスのリスト。 |
Androidデバイス
単一の Android デバイス。
JSON表現 |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
田畑 | |
---|---|
androidModelId | 必須。使用する Android デバイスの ID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
androidVersionId | 必須。使用する Android OS バージョンの ID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
locale | 必須。テストデバイスがテストに使用したロケール。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
orientation | 必須。テスト中のデバイスの向き。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
Iosデバイスリスト
テストが実行される iOS デバイス構成のリスト。
JSON表現 |
---|
{
"iosDevices": [
{
object ( |
田畑 | |
---|---|
iosDevices[] | 必須。 iOS デバイスのリスト。 |
Iosデバイス
単一の iOS デバイス。
JSON表現 |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
田畑 | |
---|---|
iosModelId | 必須。使用するiOSデバイスのID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
iosVersionId | 必須。使用する iOS メジャー ソフトウェア バージョンの ID。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
locale | 必須。テストデバイスがテストに使用したロケール。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
orientation | 必須。テスト中のデバイスの向き。 TestEnvironmentDiscoveryService を使用して、サポートされているオプションを取得します。 |
テスト実行
単一のテストは単一の環境で実行されます。
JSON表現 |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
田畑 | |
---|---|
id | 出力のみ。サービスによって設定された一意の ID。 |
matrixId | 出力のみ。含まれている TestMatrix の ID。 |
projectId | 出力のみ。テスト実行を所有するクラウド プロジェクト。 |
testSpecification | 出力のみ。テストの実行方法。 |
shard | 出力のみ。シャードの詳細。 |
environment | 出力のみ。ホスト マシンの構成方法。 |
state | 出力のみ。テスト実行の現在の進行状況を示します (FINISHED など)。 |
toolResultsStep | 出力のみ。この実行の結果が書き込まれる場所。 |
timestamp | 出力のみ。このテスト実行が最初に作成された時刻。 RFC3339 UTC「Zulu」形式のタイムスタンプ。ナノ秒の分解能と最大 9 桁の小数点以下を備えています。例: |
testDetails | 出力のみ。実行テストに関する追加の詳細。 |
シャード
出力のみ。シャードの詳細。
JSON表現 |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
田畑 | |
---|---|
shardIndex | 出力のみ。すべてのシャードの中のシャードのインデックス。 |
numShards | 出力のみ。シャードの総数。 |
testTargetsForShard | 出力のみ。各シャードのテスト ターゲット。手動シャーディングの場合のみ設定します。 |
estimatedShardDuration | 出力のみ。可能な場合は、以前のテスト ケースのタイミング記録に基づく推定シャード期間。 「 |
環境
テストが実行される環境。
JSON表現 |
---|
{ // Union field |
田畑 | |
---|---|
ユニオンフィールドenvironment 。必須。環境。 environment 次のいずれか 1 つだけです。 | |
androidDevice | Android テストで使用する必要がある Android デバイス。 |
iosDevice | iOS テストで使用する必要がある iOS デバイス。 |
テスト状態
テスト実行またはマトリックスの状態 (つまり、進行状況)。
列挙型 | |
---|---|
TEST_STATE_UNSPECIFIED | 使ってはいけません。プロトバージョン管理のみ。 |
VALIDATING | 実行またはマトリックスが検証中です。 |
PENDING | 実行またはマトリックスは、リソースが使用可能になるのを待っています。 |
RUNNING | 実行は現在処理中です。 実行時にのみ設定できます。 |
FINISHED | 実行またはマトリックスは正常に終了しました。 マトリックスでは、これはマトリックス レベルの処理が正常に完了したが、個々の実行がエラー状態になる可能性があることを意味します。 |
ERROR | インフラストラクチャ障害が発生したため、実行またはマトリックスが停止しました。 |
UNSUPPORTED_ENVIRONMENT | サポートされていない環境に該当するため、実行されませんでした。 実行時にのみ設定できます。 |
INCOMPATIBLE_ENVIRONMENT | 提供された入力が要求された環境と互換性がないため、実行は実行されませんでした。 例: 要求された AndroidVersion が APK の minSdkVersion より低い 実行時にのみ設定できます。 |
INCOMPATIBLE_ARCHITECTURE | 提供された入力が要求されたアーキテクチャと互換性がないため、実行は実行されませんでした。 例: 要求されたデバイスは、提供された APK のネイティブ コードの実行をサポートしていません 実行時にのみ設定できます。 |
CANCELLED | ユーザーが実行をキャンセルしました。 実行時にのみ設定できます。 |
INVALID | 指定された入力が無効であるため、実行またはマトリックスは実行されませんでした。 例: 入力ファイルが予期したタイプではない、形式が不正または破損している、またはマルウェアとしてフラグが立てられている |
ツール結果ステップ
ツール結果ステップ リソースを表します。
これには TestExecution の結果が含まれています。
JSON表現 |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
田畑 | |
---|---|
projectId | 出力のみ。ツール結果ステップを所有するクラウド プロジェクト。 |
historyId | 出力のみ。ツール結果履歴 ID。 |
executionId | 出力のみ。ツール結果の実行 ID。 |
stepId | 出力のみ。ツール結果のステップ ID。 |
テストの詳細
実行テストの進行状況に関する追加の詳細。
JSON表現 |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
田畑 | |
---|---|
progressMessages[] | 出力のみ。人間が判読できる、テストの進行状況に関する詳細な説明。例: 「デバイスのプロビジョニング」、「テストの開始」。 実行中に、新しいデータが progressMessage の末尾に追加される場合があります。 |
errorMessage | 出力のみ。 TestState が ERROR の場合、この文字列には人間が判読できるエラーの詳細が含まれます。 |
結果ストレージ
テストの実行結果が保存される場所。
JSON表現 |
---|
{ "googleCloudStorage": { object ( |
田畑 | |
---|---|
googleCloudStorage | 必須。 |
toolResultsHistory | 結果が書き込まれるツール結果の実行を含むツール結果履歴。 指定しない場合、サービスは適切な値を選択します。 |
toolResultsExecution | 出力のみ。結果が書き込まれるツールの実行結果。 |
resultsUrl | 出力のみ。 Firebase Web コンソールの結果への URL。 |
Googleクラウドストレージ
Google クラウド ストレージ (GCS) 内の保存場所。
JSON表現 |
---|
{ "gcsPath": string } |
田畑 | |
---|---|
gcsPath | 必須。最終的にこのテストの結果が含まれる GCS 内のディレクトリへのパス。要求元のユーザーは、指定されたパスのバケットに対する書き込みアクセス権を持っている必要があります。 |
ツール結果履歴
ツール結果履歴リソースを表します。
JSON表現 |
---|
{ "projectId": string, "historyId": string } |
田畑 | |
---|---|
projectId | 必須。ツールの結果履歴を所有するクラウド プロジェクト。 |
historyId | 必須。ツール結果履歴 ID。 |
ツール結果実行
ツール結果の実行リソースを表します。
これには TestMatrix の結果が含まれています。
JSON表現 |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
田畑 | |
---|---|
projectId | 出力のみ。ツール結果の実行を所有するクラウド プロジェクト。 |
historyId | 出力のみ。ツール結果履歴 ID。 |
executionId | 出力のみ。ツール結果の実行 ID。 |
無効なマトリックスの詳細
マトリックスが無効であるとみなされた詳細な理由。
列挙型 | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED | 使ってはいけません。プロトバージョン管理のみ。 |
DETAILS_UNAVAILABLE | マトリックスは無効ですが、これ以上の詳細はありません。 |
MALFORMED_APK | 入力されたアプリ APK を解析できませんでした。 |
MALFORMED_TEST_APK | 入力されたテスト APK を解析できませんでした。 |
NO_MANIFEST | AndroidManifest.xml が見つかりませんでした。 |
NO_PACKAGE_NAME | APK マニフェストではパッケージ名が宣言されていません。 |
INVALID_PACKAGE_NAME | APK アプリケーション ID (別名パッケージ名) が無効です。 https://developer.android.com/build/configure-app-module#set-application-idも参照してください。 |
TEST_SAME_AS_APP | テストパッケージとアプリパッケージは同じです。 |
NO_INSTRUMENTATION | テスト APK はインストルメンテーションを宣言しません。 |
NO_SIGNATURE | 入力アプリの apk には署名がありません。 |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE | ユーザーまたはテスト APK のマニフェスト ファイルで指定されたテスト ランナー クラスは、Android Test Orchestrator と互換性がありません。 Orchestrator は、AndroidJUnitRunner バージョン 1.1 以降とのみ互換性があります。オーケストレーターは、DO_NOT_USE_ORCHESTRATOR OrchestratorOption を使用して無効にできます。 |
NO_TEST_RUNNER_CLASS | テスト APK には、ユーザーまたはマニフェスト ファイルで指定されたテスト ランナー クラスが含まれていません。これは、次のいずれかの理由が原因である可能性があります。
|
NO_LAUNCHER_ACTIVITY | メインのランチャー アクティビティが見つかりませんでした。 |
FORBIDDEN_PERMISSIONS | アプリは、許可されていない 1 つ以上の権限を宣言しています。 |
INVALID_ROBO_DIRECTIVES | 提供された roboDirective に競合があります。 |
INVALID_RESOURCE_NAME | 提供された robo ディレクティブに無効なリソース名が少なくとも 1 つあります |
INVALID_DIRECTIVE_ACTION | robo ディレクティブ内のアクションの定義が無効です (例: クリックまたは無視アクションには入力テキスト フィールドが含まれます) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND | テスト ループ インテント フィルターが存在しないか、指定されたフィルターの形式が正しくありません。 |
SCENARIO_LABEL_NOT_DECLARED | リクエストには、マニフェストで宣言されていないシナリオ ラベルが含まれています。 |
SCENARIO_LABEL_MALFORMED | ラベルの値を解析中にエラーが発生しました。 |
SCENARIO_NOT_DECLARED | リクエストには、マニフェストで宣言されていないシナリオ番号が含まれています。 |
DEVICE_ADMIN_RECEIVER | デバイス管理者アプリケーションは許可されません。 |
MALFORMED_XC_TEST_ZIP | zip 圧縮された XCTest の形式が正しくありませんでした。この zip には、単一の .xctestrun ファイルと DerivedData/Build/Products ディレクトリの内容が含まれていませんでした。 |
BUILT_FOR_IOS_SIMULATOR | zip 圧縮された XCTest は、物理デバイス用ではなく、iOS シミュレーター用に構築されました。 |
NO_TESTS_IN_XC_TEST_ZIP | .xctestrun ファイルではテスト ターゲットが指定されていませんでした。 |
USE_DESTINATION_ARTIFACTS | .xctestrun ファイルで定義されている 1 つ以上のテスト ターゲットで「UseDestinationArtifacts」が指定されていますが、これは許可されていません。 |
TEST_NOT_APP_HOSTED | 物理デバイス上で実行される XC テストでは、xctestrun ファイルに「IsAppHostedTestBundle」 == "true" が含まれている必要があります。 |
PLIST_CANNOT_BE_PARSED | XCTest zip 内の Info.plist ファイルを解析できませんでした。 |
TEST_ONLY_APK | APK は「testOnly」としてマークされます。非推奨となり、現在は使用されていません。 |
MALFORMED_IPA | 入力 IPA を解析できませんでした。 |
MISSING_URL_SCHEME | アプリケーションはゲーム ループ URL スキームを登録しません。 |
MALFORMED_APP_BUNDLE | iOS アプリケーション バンドル (.app) を処理できませんでした。 |
NO_CODE_APK | APK にはコードが含まれていません。 https://developer.android.com/guide/topics/manifest/application-element.html#codeも参照してください。 |
INVALID_INPUT_APK | 指定された入力 APK パスの形式が間違っているか、APK ファイルが存在しないか、ユーザーに APK ファイルにアクセスする権限がありません。 |
INVALID_APK_PREVIEW_SDK | APK はサポートされていないプレビュー SDK 用にビルドされています |
MATRIX_TOO_LARGE | マトリックスが拡張されて、実行数が多すぎました。 |
TEST_QUOTA_EXCEEDED | このマトリックスで実行を実行するのに十分なテスト クォータがありません。 |
SERVICE_NOT_ACTIVATED | 必要なクラウド サービス API が有効化されていません。参照: https://firebase.google.com/docs/test-lab/android/continuous#requirements |
UNKNOWN_PERMISSION_ERROR | このテストを実行中に不明な権限の問題がありました。 |
結果の概要
完成したテスト マトリックスの結果の概要。
列挙型 | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED | 使ってはいけません。プロトバージョン管理のみ。 |
SUCCESS | テスト マトリックスの実行は成功しました。たとえば、次のようになります。
|
FAILURE | 実行が失敗しました。例:
|
INCONCLUSIVE | 予期せぬことが起こりました。実行は依然として失敗したとみなされますが、これは一時的な問題である可能性が高く、テストを再実行すると成功する可能性があります。 |
SKIPPED | すべてのテストがスキップされました。たとえば、次のとおりです。
|
メソッド | |
---|---|
| テスト マトリックス内の未完了のテスト実行をキャンセルします。 |
| 指定された仕様に従ってテストのマトリックスを作成および実行します。 |
| テスト マトリックスのステータスと作成後の実行をチェックします。 |