REST Resource: projects.histories.executions.steps

リソース: ステップ

ステップは、実行の一部として実行される単一の操作を表します。ステップは、ツールの実行 (テスト ランナーの実行やコンパイラの実行など) を表すために使用できます。

ステップは重複する可能性があります (たとえば、一部の操作が並行して実行される場合、2 つのステップの開始時間が同じになる可能性があります)。

以下に例を示します。反復ごとにテスト ランナーを実行する継続的なビルドがあると考えてみましょう。ワークフローは次のようになります。 - ユーザーが ID 1 の実行を作成します - ユーザーが実行 1 に対して ID 100 の TestExecutionStep を作成します - ユーザーが ID 100 の TestExecutionStep を更新して生の XML ログを追加します + サービスは XML ログを解析し、次のような TestExecutionStep を返しますTestResult を更新しました。 - ユーザーは、ID 100 の TestExecutionStep のステータスを COMPLETE に更新します。

ステップは、状態が COMPLETE に設定されるまで更新でき、その時点で不変になります。

JSON表現
{
  "stepId": string,
  "creationTime": {
    object (Timestamp)
  },
  "completionTime": {
    object (Timestamp)
  },
  "name": string,
  "description": string,
  "state": enum (State),
  "outcome": {
    object (Outcome)
  },
  "hasImages": boolean,
  "labels": {
    string: string,
    ...
  },
  "dimensionValue": {
    string: string,
    ...
  },
  "runDuration": {
    object (Duration)
  },
  "deviceUsageDuration": {
    object (Duration)
  },
  "multiStep": {
    object (MultiStep)
  },

  // Union field step can be only one of the following:
  "testExecutionStep": {
    object (TestExecutionStep)
  },
  "toolExecutionStep": {
    object (ToolExecutionStep)
  }
  // End of list of possible types for union field step.
}
田畑
stepId

string

このステップの実行内の一意の識別子。

このフィールドが呼び出し元によって設定または上書きされた場合は、INVALID_ARGUMENT を返します。

  • 応答: 常に設定
  • 作成/更新リクエスト: 設定しない
creationTime

object ( Timestamp )

ステップが作成された時刻。

  • 応答: 常に設定
  • 作成/更新リクエスト: 設定しない
completionTime

object ( Timestamp )

ステップのステータスが完了に設定された時刻。

この値は、状態が COMPLETE に移行すると自動的に設定されます。

  • 応答: 実行状態が COMPLETE の場合に設定されます。
  • 作成/更新リクエスト: 設定しない
name

string

UI に表示される人間が判読できる短い名前。最大 100 文字。例: クリーンビルド

新しいステップの名前と次元値が既存のステップと共有されている場合、新しいステップの作成時に PRECONDITION_FAILED が返されます。 2 つのステップが同様のアクションを表しているが、ディメンション値が異なる場合、それらは同じ名前を共有する必要があります。たとえば、同じテスト セットを 2 つの異なるプラットフォームで実行する場合、2 つのステップは同じ名前を持つ必要があります。

  • 応答: 常に設定
  • 作成リクエストでは: 常に設定されます
  • 更新リクエスト時: 設定しない
description

string

このツールの説明 例: mvn clean package -D stopTests=true

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成/更新リクエストの場合: オプション
state

enum ( State )

初期状態は IN_PROGRESS です。正当な状態遷移は * IN_PROGRESS -> COMPLETE のみです。

無効な遷移が要求された場合は、PRECONDITION_FAILED が返されます。

状態を COMPLETE に設定してステップを作成することは有効です。状態を COMPLETE に設定できるのは 1 回だけです。状態が COMPLETE に複数回設定されると、PRECONDITION_FAILED が返されます。

  • 応答: 常に設定
  • 作成/更新リクエストの場合: オプション
outcome

object ( Outcome )

結果の分類 (成功または失敗など)

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成/更新リクエストの場合: オプション
hasImages

boolean

このステップの出力のいずれかが、thumbnails.list でサムネイルを取得できる画像であるかどうか。

  • 応答: 常に設定
  • 作成/更新リクエスト: 設定しない
labels

map (key: string, value: string)

ステップに関連付けられた任意のユーザー指定のキーと値のペア。

ユーザーは、キーが誤って衝突しないようにキーの名前空間を管理する責任があります。

ラベルの数が 100 を超える場合、またはいずれかのキーまたは値の長さが 100 文字を超える場合は、INVALID_ARGUMENT が返されます。

  • 応答: 常に設定
  • 作成リクエスト内: オプション
  • 更新リクエスト時: オプション。新しいキーと値のペアがマップに追加され、既存のキーの新しい値がそのキーの値を更新します。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

dimensionValue

map (key: string, value: string)

このステップを含む実行に次元定義セットがある場合、このフィールドを使用して子が次元の値を指定できるようになります。

キーは実行の次元定義と正確に一致する必要があります。

たとえば、実行にdimension_definition = ['attempt', 'device']がある場合、ステップではそれらのディメンションの値を定義する必要があります。 dimensionValue = ['attempt': '1', 'device': 'Nexus 6']

ステップが行列の 1 つの次元に参加していない場合、その次元の値は空の文字列である必要があります。たとえば、テストの 1 つが再試行​​をサポートしていないランナーによって実行される場合、ステップdimensionValue = ['attempt': '', 'device': 'Nexus 6']含まれる可能性があります。

ステップが行列のどの次元にも関与していない場合は、dimensionValue を設定しないままにすることができます。

実行の次元定義にキーが存在しない場合は、PRECONDITION_FAILED が返されます。

この実行の別のステップがすでに同じ名前と次元値を持っているが、他のデータ フィールドでは異なる場合 (たとえば、ステップ フィールドが異なる場合)、PRECONDITION_FAILED が返されます。

ディメンション値が設定されており、実行中にキーの 1 つとして指定されていないディメンション定義がある場合は、PRECONDITION_FAILED が返されます。

  • 応答: create で設定されている場合は存在します
  • 作成リクエスト内: オプション
  • 更新リクエスト時: 設定しない

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

runDuration

object ( Duration )

このステップの実行にかかった時間。

設定されていない場合、これは、ステップが COMPLETE 状態に設定されたときの CreationTime と completedTime の差に設定されます。場合によっては、この値を個別に設定することが適切な場合があります。たとえば、ステップが作成されたが、それが表す操作が実行前に数分間キューに入れられる場合、キューに費やされた時間をそのステップに含めないことが適切です。 runDuration。

すでにこのフィールドが設定されているステップに runDuration を設定しようとすると、PRECONDITION_FAILED が返されます。

  • 応答: 以前に設定されていた場合は存在します。 COMPLETE ステップに常に存在します
  • 作成リクエスト内: オプション
  • 更新リクエスト時: オプション
deviceUsageDuration

object ( Duration )

テストの実行に使用されるデバイス リソースの量。

これは、課金目的で使用されるデバイスの使用量であり、runDuration とは異なります。たとえば、インフラストラクチャの障害に対してデバイスの使用量は課金されません。

すでにこのフィールドが設定されているステップで device_usage を設定しようとすると、PRECONDITION_FAILED が返されます。

  • 応答: 以前に設定されていた場合は存在します。
  • 作成リクエスト内: オプション
  • 更新リクエスト時: オプション
multiStep

object ( MultiStep )

複数のステップをグループとして同じ構成で実行する場合の詳細。これらの詳細を使用して、このステップがどのグループに属しているかを識別できます。また、すべてのグループ メンバーのインデックスを作成するグループの「プライマリ ステップ」も識別します。

  • 応答: 以前に設定されていた場合は存在します。
  • create request: オプションで、このステップが複数回実行された場合に設定します。
  • 更新リクエスト時: オプション

ユニオンフィールドstep

step次のいずれか 1 つだけです。

testExecutionStep

object ( TestExecutionStep )

テストランナーの実行。

toolExecutionStep

object ( ToolExecutionStep )

ツールの実行 (明示的にサポートされていないステップに使用されます)。

テスト実行ステップ

テストの実行を表すステップ。

これは、サービスによって構造化されたテスト結果に解析される ant-junit XML ファイルを受け入れます。 XML ファイルのパスは、さらにファイルを追加するために更新されますが、削除することはできません。

ユーザーは、test_result フィールドを使用してテスト結果を手動で追加することもできます。

JSON表現
{
  "testSuiteOverviews": [
    {
      object (TestSuiteOverview)
    }
  ],
  "toolExecution": {
    object (ToolExecution)
  },
  "testIssues": [
    {
      object (TestIssue)
    }
  ],
  "testTiming": {
    object (TestTiming)
  }
}
田畑
testSuiteOverviews[]

object ( TestSuiteOverview )

テスト スイートの概要コンテンツのリスト。これは、サーバーによって xUnit XML ログから解析されるか、ユーザーによって直接アップロードされます。この参照は、テスト スイートが完全に解析またはアップロードされた場合にのみ呼び出す必要があります。

ステップごとに許可されるテスト スイートの概要の最大数は 1000 です。

  • 応答: 常に設定
  • 作成リクエスト内: オプション
  • 更新リクエスト: なし (代わりに、publishXunitXmlFiles カスタム メソッドを使用します)
toolExecution

object ( ToolExecution )

テストランナーの実行を表します。

このツールの終了コードは、テストが成功したかどうかを判断するために使用されます。

  • 応答: 常に設定
  • 作成/更新リクエストの場合: オプション
testIssues[]

object ( TestIssue )

テスト実行中に観察された問題。

たとえば、テスト中のモバイル アプリがテスト中にクラッシュした場合、デバッグを支援するためにエラー メッセージとスタック トレースの内容をここに記録できます。

  • 応答: 作成または更新によって設定されている場合は存在します。
  • 作成/更新リクエストの場合: オプション
testTiming

object ( TestTiming )

テスト実行のタイミングの内訳。

  • 応答: 作成または更新によって設定されている場合は存在します。
  • 作成/更新リクエストの場合: オプション

ツール実行

任意のツールの実行。それは、テスト ランナーや、アーティファクトをコピーしたりコードをデプロイするツールである可能性があります。

JSON表現
{
  "commandLineArguments": [
    string
  ],
  "toolLogs": [
    {
      object (FileReference)
    }
  ],
  "exitCode": {
    object (ToolExitCode)
  },
  "toolOutputs": [
    {
      object (ToolOutputReference)
    }
  ]
}
田畑
commandLineArguments[]

string

プログラム名を含む完全なトークン化されたコマンド ライン (C プログラムの argv に相当)。

  • 応答: 作成リクエストによって設定されている場合は存在します。
  • 作成リクエスト内: オプション
  • 更新リクエスト時: 設定しない
toolLogs[]

object ( FileReference )

プレーン テキスト ログへの参照により、ツールの実行が出力されます。

このフィールドは、ツールの実行中にログのライブ ビューにアクセスできるようにするために、ツールが終了する前に設定できます。

ステップごとに許可されるツール ログの最大数は 1000 です。

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成リクエスト内: オプション
  • 更新リクエスト: オプション。指定された値は既存のリストに追加されます。
exitCode

object ( ToolExitCode )

ツール実行の終了コード。このフィールドは、ツールが終了すると設定されます。

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成リクエスト内: オプション
  • 更新リクエスト: オプションで、exitCode がすでに設定されている場合は FAILED_PRECONDITION エラーが返されます。
toolOutputs[]

object ( ToolOutputReference )

ツールの実行によって出力される任意の形式の不透明なファイルへの参照。

ステップごとに許可されるツール出力の最大数は 1000 です。

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成リクエスト内: オプション
  • 更新リクエスト: オプション。指定された値は既存のリストに追加されます。

ツール終了コード

ツール実行からの終了コード。

JSON表現
{
  "number": integer
}
田畑
number

integer

ツール実行の終了コード。値 0 は、実行が成功したことを意味します。

  • 応答: 常に設定
  • 作成/更新リクエスト: 常に設定

テスト問題

テストの実行中に発生した問題が検出されました。

JSON表現
{
  "errorMessage": string,
  "stackTrace": {
    object (StackTrace)
  },
  "warning": {
    object (Any)
  },
  "severity": enum (Severity),
  "type": enum (Type),
  "category": enum (Category)
}
田畑
errorMessage

string

問題を説明する人間が読める短いメッセージ。必須。

stackTrace
(deprecated)

object ( StackTrace )

特定の警告内のスタック トレース フィールドを優先して非推奨になりました。

warning

object ( Any )

問題の追加詳細を含む警告メッセージ。常に com.google.devtools.toolresults.v1.warnings からのメッセージである必要があります。

severity

enum ( Severity )

問題の重大度。必須。

type

enum ( Type )

問題の種類。必須。

category

enum ( Category )

問題のカテゴリ。必須。

どれでも

Any 、任意のシリアル化されたプロトコル バッファ メッセージと、シリアル化されたメッセージのタイプを説明する URL が含まれます。

Protobuf ライブラリは、ユーティリティ関数または Any 型の追加生成メソッドの形式で Any 値をパック/アンパックするためのサポートを提供します。

例 1: C++ でメッセージをパックおよびアンパックします。

Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
  ...
}

例 2: Java でメッセージをパックおよびアンパックします。

Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
  foo = any.unpack(Foo.class);
}

例 3: Python でメッセージをパックおよびアンパックします。

foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
  any.Unpack(foo)
  ...

例 4: Go でメッセージをパックおよびアンパックする

 foo := &pb.Foo{...}
 any, err := ptypes.MarshalAny(foo)
 ...
 foo := &pb.Foo{}
 if err := ptypes.UnmarshalAny(any, foo); err != nil {
   ...
 }

protobuf ライブラリによって提供されるパック メソッドは、デフォルトでタイプ URL として「type.googleapis.com/full.type.name」を使用し、アンパック メソッドはタイプ URL の最後の「/」の後の完全修飾タイプ名のみを使用します。たとえば、「foo.bar.com/x/yz」は型名「yz」を生成します。

JSON

Any値の JSON 表現では、逆シリアル化された埋め込みメッセージの通常の表現が使用され、タイプ URL を含む追加フィールド@type使用されます。例:

package google.profile;
message Person {
  string first_name = 1;
  string last_name = 2;
}

{
  "@type": "type.googleapis.com/google.profile.Person",
  "firstName": <string>,
  "lastName": <string>
}

埋め込まれたメッセージ タイプが既知であり、カスタム JSON 表現がある場合、その表現は@typeフィールドに加えてカスタム JSON を保持するフィールドvalueを追加して埋め込まれます。例 (メッセージgoogle.protobuf.Durationの場合):

{
  "@type": "type.googleapis.com/google.protobuf.Duration",
  "value": "1.212s"
}
JSON表現
{
  "typeUrl": string,
  "value": string
}
田畑
typeUrl

string

シリアル化されたプロトコル バッファ メッセージのタイプを一意に識別する URL/リソース名。この文字列には少なくとも 1 つの「/」文字が含まれている必要があります。 URL のパスの最後のセグメントは、タイプの完全修飾名を表す必要があります ( path/google.protobuf.Durationなど)。名前は正規形式である必要があります (たとえば、先頭の「.」は受け入れられません)。

実際には、チームは通常、Any のコンテキストで使用すると予想されるすべての型をバイナリにプリコンパイルします。ただし、スキームhttphttpsを使用する、またはスキームを使用しない URL の場合は、次のように、タイプ URL をメッセージ定義にマップするタイプ サーバーをオプションでセットアップできます。

  • スキームが指定されていない場合は、 httpsが想定されます。
  • URL に対する HTTP GET は、バイナリ形式のgoogle.protobuf.Type値を生成する必要があり、そうでない場合はエラーが発生します。
  • アプリケーションは、URL に基づいてルックアップ結果をキャッシュしたり、ルックアップを回避するためにバイナリにプリコンパイルしたりすることができます。したがって、型の変更時にバイナリ互換性を維持する必要があります。 (重大な変更を管理するには、バージョン管理された型名を使用します。)

注: この機能は現在、公式の protobuf リリースでは使用できません。また、type.googleapis.com で始まるタイプの URL には使用されません。

httphttps (または空のスキーム) 以外のスキームは、実装固有のセマンティクスで使用される可能性があります。

value

string ( bytes format)

上記で指定されたタイプの有効なシリアル化されたプロトコル バッファーである必要があります。

Base64 でエンコードされた文字列。

重大度

問題の重大度。

列挙型
unspecifiedSeverityデフォルトの未指定の重大度。使ってはいけません。バージョン管理のみ。
info重要ではない問題ですが、テスト実行に関する情報をユーザーに提供します。
suggestion重要ではない問題。テスト エクスペリエンスを向上させるためのヒントをユーザーに提供します。たとえば、ゲーム ループの使用を提案します。
warning潜在的に重大な問題。
severe重要な問題。

タイプ

問題の種類。

列挙型
unspecifiedTypeデフォルトの未指定タイプ。使ってはいけません。バージョン管理のみ。
fatalException問題は致命的な例外です。
nativeCrash問題はネイティブクラッシュです。
anr問題は ANR クラッシュです。
unusedRoboDirective問題は未使用の robo ディレクティブです。
compatibleWithOrchestrator問題は、オーケストレーターを使用するという提案です。
launcherActivityNotFoundランチャーアクティビティの検索に関する問題
startActivityNotFoundアクティビティを開始するためのユーザー指定のインテントの解決に関する問題
incompleteRoboScriptExecution Robo スクリプトが完全には実行されませんでした。
completeRoboScriptExecution Robo スクリプトが完全に正常に実行されました。
failedToInstall APK のインストールに失敗しました。
nonSdkApiUsageViolationアプリが非 SDK API にアクセスしました。
nonSdkApiUsageReportアプリが非 SDK API にアクセスしました (新しい詳細レポート)
encounteredNonAndroidUiWidgetScreenロボ クロールで、Android UI ウィジェットではない要素を含む画面が少なくとも 1 つ見つかりました。
encounteredLoginScreenロボ クロールで少なくとも 1 つのログイン画面が発生した可能性があります。
performedGoogleLoginロボは Google にサインインしました。
iosException iOS アプリが例外によりクラッシュしました。
iosCrash iOS アプリが例外なくクラッシュしました (強制終了など)。
performedMonkeyActionsロボクロールには、いくつかの猿のアクションの実行が含まれていました。
usedRoboDirectiveロボ クロールでは Robo ディレクティブが使用されました。
usedRoboIgnoreDirective Robo クロールでは、Robo ディレクティブを使用して UI 要素を無視しました。
insufficientCoverage Robo は、アプリの潜在的に重要な部分の一部をクロールしませんでした。
inAppPurchasesロボ クロールにはアプリ内購入が含まれていました。
crashDialogErrorテスト実行中にクラッシュ ダイアログが検出されました
uiElementsTooDeep UI 要素の深さがしきい値を超えています
blankScreen Robo クロールで空白の画面が見つかる
overlappingUiElements Robo クロールで重複する UI 要素が見つかる
unityExceptionキャッチされなかった Unity 例外が検出されました (アプリはクラッシュしません)。
deviceOutOfMemoryメモリ不足のデバイスが検出されました
logcatCollectionError logcat の収集中に検出された問題
detectedAppSplashScreen Robo は、アプリによって提供されるスプラッシュ スクリーンを検出しました (Android OS のスプラッシュ スクリーンと比較)。

カテゴリー

問題のカテゴリ。

列挙型
unspecifiedCategoryデフォルトの未指定カテゴリ。使ってはいけません。バージョン管理のみ。
common問題は特定のテストの種類に固有のものではありません (ネイティブ クラッシュなど)。
robo問題は Robo の実行に固有のものです。

テストタイミング

テストのタイミングをブレークダウンしてフェーズを把握します。

JSON表現
{
  "testProcessDuration": {
    object (Duration)
  }
}
田畑
testProcessDuration

object ( Duration )

テストプロセスの実行にかかった時間。

  • 応答: 以前に設定されていた場合は存在します。
  • 作成/更新リクエストの場合: オプション

ツール実行ステップ

明示的にサポートしていないバイナリに使用される汎用ツール ステップ。たとえば、cp を実行してアーティファクトをある場所から別の場所にコピーします。

JSON表現
{
  "toolExecution": {
    object (ToolExecution)
  }
}
田畑
toolExecution

object ( ToolExecution )

ツールの実行。

  • 応答: 作成/更新リクエストによって設定されている場合は存在します。
  • 作成/更新リクエストの場合: オプション

マルチステップ

複数のステップをグループとして同じ構成で実行する場合の詳細。

JSON表現
{
  "primaryStepId": string,
  "multistepNumber": integer,
  "primaryStep": {
    object (PrimaryStep)
  }
}
田畑
primaryStepId

string

プライマリ (元の) ステップのステップ ID (このステップである可能性があります)。

multistepNumber

integer

各ステップに与えられる一意の int。範囲は 0 (両端を含む) から合計ステップ数 (両端を含まない) までです。プライマリステップは 0 です。

primaryStep

object ( PrimaryStep )

プライマリ (オリジナル) ステップの場合に存在します。

プライマリーステップ

グループとして実行された複数のステップのロールアップ テストのステータスと、個々のステップの結果を保存します。

JSON表現
{
  "rollUp": enum (OutcomeSummary),
  "individualOutcome": [
    {
      object (IndividualOutcome)
    }
  ]
}
田畑
rollUp

enum ( OutcomeSummary )

グループとして同じ構成で実行された複数のステップのロールアップ テスト ステータス。

individualOutcome[]

object ( IndividualOutcome )

ステップ ID と各ステップの結果。

個人の成果

同じ構成の他のステップとグループとして実行された個々のステップのステップ ID と結果。

JSON表現
{
  "stepId": string,
  "outcomeSummary": enum (OutcomeSummary),
  "multistepNumber": integer,
  "runDuration": {
    object (Duration)
  }
}
田畑
stepId

string

outcomeSummary

enum ( OutcomeSummary )

multistepNumber

integer

各ステップに与えられる一意の int。範囲は 0 (両端を含む) から合計ステップ数 (両端を含まない) までです。プライマリステップは 0 です。

runDuration

object ( Duration )

このステップの実行にかかった時間。

メソッド

accessibilityClusters

特定のステップのアクセシビリティ クラスタをリストします。

次の正規エラー コードのいずれかを返す場合があります。

  • PERMISSION_DENIED - ユーザーがプロジェクトを読み取る権限を持たない場合
  • INVALID_ARGUMENT - リクエストの形式が不正な場合
  • FAILED_PRECONDITION - リクエスト内の引数がたまたま無効だった場合。例えば

create

ステップを作成します。

get

ステップを取得します。

getPerfMetricsSummary

PerfMetricssummary を取得します。

list

特定の実行のステップをリストします。

patch

指定された部分エンティティを使用して既存のステップを更新します。

publishXunitXmlFiles

XML ファイルを既存のステップにパブリッシュします。