REST Resource: projects.testMatrices

리소스: TestMatrix

TestMatrix는 테스트에 관한 모든 세부정보를 캡처합니다. 여기에는 환경 구성, 테스트 사양, 테스트 실행, 전반적인 상태 및 결과가 포함됩니다.

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
}
필드
testMatrixId

string

출력 전용. 서비스에서 설정된 고유 ID입니다.

projectId

string

테스트 매트릭스를 소유한 Cloud 프로젝트입니다.

clientInfo

object (ClientInfo)

테스트를 호출한 클라이언트에 대한 정보입니다.

testSpecification

object (TestSpecification)

필수 항목입니다. 테스트를 실행하는 방법입니다.

environmentMatrix

object (EnvironmentMatrix)

필수 항목입니다. 테스트가 실행되는 기기

testExecutions[]

object (TestExecution)

출력 전용입니다. 서비스가 이 매트릭스에 대해 작성하는 테스트 실행 목록입니다.

resultStorage

object (ResultStorage)

필수 항목입니다. 매트릭스의 결과가 기록되는 위치입니다.

state

enum (TestState)

출력 전용입니다. 테스트 매트릭스의 현재 진행 상황을 나타냅니다.

timestamp

string (Timestamp format)

출력 전용입니다. 이 테스트 매트릭스가 처음 만들어진 시간입니다.

RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"입니다.

invalidMatrixDetails

enum (InvalidMatrixDetails)

출력 전용입니다. 매트릭스가 잘못된 것으로 간주된 이유를 설명합니다. INVALID 상태의 매트릭스에서만 유용합니다.

extendedInvalidMatrixDetails[]

object (MatrixErrorDetail)

출력 전용입니다. 행렬이 잘못된 것으로 간주된 이유에 대한 세부정보입니다. 여러 검사를 안전하게 수행할 수 있는 경우 검사가 보고되지만 이 목록의 길이에 대해 어떤 가정도 하지 않아야 합니다.

flakyTestAttempts

integer

어떤 이유로든 테스트 사례가 하나 이상 실패할 경우 TestExecution을 다시 시도해야 하는 횟수입니다. 허용되는 최대 재실행 횟수는 10회입니다.

기본값은 0이며, 이는 재실행이 없음을 의미합니다.

outcomeSummary

enum (OutcomeSummary)

출력 전용. 테스트의 전체 결과입니다. 테스트 매트릭스 상태가 FINISHED인 경우에만 설정됩니다.

failFast

boolean

true인 경우 매트릭스의 각 실행/샤드를 실행하기 위해 최대 한 번만 시도됩니다. 불안정한 테스트 시도는 영향을 받지 않습니다.

일반적으로 잠재적인 인프라 문제가 감지되면 2회 이상 시도합니다.

이 기능은 지연 시간에 민감한 워크로드에 사용됩니다. 빠른 장애 행렬의 경우 실행 실패 발생률이 크게 증가할 수 있으며 이러한 기대로 인해 지원이 더 제한됩니다.

ClientInfo

테스트를 호출한 클라이언트에 대한 정보입니다.

JSON 표현
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
필드
name

string

필수. 클라이언트 이름입니다(예: gcloud).

clientInfoDetails[]

object (ClientInfoDetail)

클라이언트에 대한 자세한 정보 목록입니다.

ClientInfoDetail

테스트를 호출한 클라이언트에 대한 자세한 키-값 쌍 정보입니다(예: {'Version', '1.0'}, {'Release Track', 'BETA'}).

JSON 표현
{
  "key": string,
  "value": string
}
필드
key

string

필수. 자세한 클라이언트 정보의 키입니다.

value

string

필수. 자세한 클라이언트 정보의 값입니다.

TestSpecification

테스트를 실행하는 방법의 설명입니다.

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.
}
필드
testTimeout

string (Duration format)

테스트 실행이 자동으로 취소되기 전에 실행되도록 허용된 최대 시간입니다. 기본값은 5분입니다.

소수점 아래가 최대 9자리까지이고 's'로 끝나는 초 단위 기간입니다. 예를 들면 "3.5s"입니다.

disableVideoRecording

boolean

동영상 녹화를 사용 중지합니다. 테스트 지연 시간을 줄일 수 있습니다.

disablePerformanceMetrics

boolean

성능 측정항목 기록을 사용 중지합니다. 테스트 지연 시간을 줄일 수 있습니다.

통합 필드 setup. 테스트 설정 요구사항 setup은 다음 중 하나여야 합니다.
testSetup

object (TestSetup)

Android용 테스트 설정 요구사항입니다(예: 설치할 파일, 부트스트랩 스크립트).

iosTestSetup

object (IosTestSetup)

iOS용 테스트 설정 요구사항입니다.

통합 필드 test. 필수 항목입니다. 실행할 테스트 유형입니다. test은 다음 중 하나여야 합니다.
androidInstrumentationTest

object (AndroidInstrumentationTest)

Android 도구 작동 테스트입니다.

androidRoboTest

object (AndroidRoboTest)

Android robo 테스트입니다.

androidTestLoop

object (AndroidTestLoop)

테스트 루프가 포함된 Android 애플리케이션입니다.

iosXcTest

object (IosXcTest)

.xctestrun 파일을 통한 iOS XCTest입니다.

iosTestLoop

object (IosTestLoop)

테스트 루프가 있는 iOS 애플리케이션

iosRoboTest

object (IosRoboTest)

iOS Robo 테스트입니다.

TestSetup

테스트를 실행하기 전에 Android 기기를 설정하는 방법에 대한 설명입니다.

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
}
필드
filesToPush[]

object (DeviceFile)

테스트를 시작하기 전에 기기에 푸시할 파일 목록입니다.

directoriesToPull[]

string

테스트 종료 시 GCS에 업로드할 기기의 디렉터리 목록입니다. /sdcard, /storage 또는 /data/local/tmp 아래의 절대 경로여야 합니다. 경로 이름은 a~z, A~Z, 0~9, _, -, 문자로 제한됩니다. + 및 /

참고: /sdcard 및 /data 경로를 사용할 수 있으며 암시적 경로 대체로 처리됩니다. 예를 들어 특정 기기에서 /sdcard가 외부 저장소에 매핑되지 않는 경우 시스템은 해당 기기의 외부 저장소 경로 프리픽스로 경로를 바꿉니다.

initialSetupApks[]

object (Apk)

선택사항. 테스트 중인 앱을 설치하기 전에 설치할 초기 설정 APK입니다. 현재 100개로 제한됩니다.

additionalApks[]

object (Apk)

직접 테스트한 항목과 더불어 설치할 APK입니다. 이러한 앱은 테스트 중인 앱 이후에 설치됩니다. 현재 100개로 제한됩니다.

account

object (Account)

기기에서 테스트 기간 동안 이 계정으로 로그인됩니다.

networkProfile

string

테스트를 실행하는 데 사용되는 네트워크 트래픽 프로필입니다. 사용 가능한 네트워크 프로필은 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog를 호출할 때 NETWORK_CONFIGURATION 환경 유형을 사용하여 쿼리할 수 있습니다.

environmentVariables[]

object (EnvironmentVariable)

테스트에 설정할 환경 변수입니다(도구 작동 테스트에만 적용됨).

systrace
(deprecated)

object (SystraceSetup)

Systrace 구성입니다. 지원 중단됨: Systrace는 2020년 1월 1일에 지원 중단된 Python 2를 사용했습니다. Systrace는 Cloud Testing API에서 더 이상 지원되지 않으며 결과에 Systrace 파일이 제공되지 않습니다.

dontAutograntPermissions

boolean

앱 설치 시 모든 런타임 권한이 부여되는 것을 방지할지 여부입니다.

DeviceFile

단일 기기 파일 설명입니다.

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.
}
필드
통합 필드 device_file. 필수 항목입니다. device_file은 다음 중 하나여야 합니다.
obbFile

object (ObbFile)

불투명한 바이너리 blob 파일에 대한 참조입니다.

regularFile

object (RegularFile)

정규 파일에 대한 참조입니다.

ObbFile

테스트를 시작하기 전에 기기에 설치할 불투명한 바이너리 BLOB 파일입니다.

JSON 표현
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
필드
obbFileName

string

필수. Android에서 지정한 형식을 준수해야 하는 OBB 파일 이름입니다. 예를 들어[main|patch].0300110.com.example.android.obb는 기기의 <shared-storage>/Android/obb/<package-name>/에 설치됩니다.

obb

object (FileReference)

필수 항목입니다. 기기에 설치할 불투명한 바이너리 BLOB(OBB) 파일입니다.

FileReference

사용자 입력에 사용되는 파일을 가리키는 참조입니다.

JSON 표현
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
필드
통합 필드 file. 필수 항목입니다. 파일 참조입니다. file은 다음 중 하나여야 합니다.
gcsPath

string

Google Cloud Storage에 있는 파일의 경로입니다. 예: gs://build-app-1414623860166/app%40debug-unaligned.apk 이러한 경로는 URL로 인코딩되어야 합니다 (퍼센트 인코딩).

RegularFile

테스트를 시작하기 전에 기기에 설치할 파일 또는 디렉토리입니다.

JSON 표현
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
필드
content

object (FileReference)

필수 항목입니다. 소스 파일입니다.

devicePath

string

필수. 기기에서 콘텐츠를 넣을 위치입니다. 허용된 절대 경로여야 합니다. 파일이 존재하는 경우 대체됩니다. 다음과 같은 기기 측 디렉터리 및 하위 디렉터리가 허용 목록에 포함됩니다.

${EXTERNAL_STORAGE}, /sdcard 또는 /storage

${ANDROID_DATA}/local/tmp 또는 /data/local/tmp

이러한 디렉토리 트리 바깥에 경로를 지정하는 것은 유효하지 않습니다.

/sdcard 및 /data 경로를 사용할 수 있으며 암시적 경로 대체로 처리됩니다. 예를 들어 특정 기기에서 /sdcard가 외부 저장소에 매핑되지 않는 경우 시스템은 해당 기기의 외부 저장소 경로 프리픽스로 경로를 바꾸고 파일을 복사합니다.

포팅 가능한 방식으로 기기의 파일에 액세스하려면 앱에서 Environment API를 사용하여 코드를 테스트하는 것이 좋습니다.

Apk

설치할 Android 패키지 파일입니다.

JSON 표현
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
필드
location

object (FileReference)

테스트를 시작하기 전에 기기에 설치할 APK 경로입니다.

packageName

string

설치할 APK의 자바 패키지입니다. 값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

Account

계정 및 로그인 방법을 식별합니다.

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.
}
필드
통합 필드 account_type. 필수 항목입니다. 계정 유형 (예: Google) 및 로그인 메커니즘 (예: 사용자 이름, 비밀번호)에 따른 계정 유형 account_type은 다음 중 하나여야 합니다.
googleAuto

object (GoogleAuto)

자동 Google 로그인 계정입니다.

GoogleAuto

이 유형에는 필드가 없습니다.

자동 Google 계정 로그인을 사용 설정합니다. 이 옵션을 설정하면 테스트를 실행하기 전에 서비스에서 자동으로 Google 테스트 계정을 생성하고 기기에 추가합니다. 테스트 계정을 다시 사용할 수도 있습니다. 기기에 계정이 있어야 많은 애플리케이션에서 전체 기능 집합이 표시됩니다. 이렇게 생성된 계정으로 기기에 로그인하면 더 많은 기능을 테스트할 수 있습니다.

EnvironmentVariable

테스트에 환경 변수로 전달된 키-값 쌍입니다.

JSON 표현
{
  "key": string,
  "value": string
}
필드
key

string

환경 변수 키입니다.

value

string

환경 변수 값입니다.

Systrace 설정

JSON 표현
{
  "durationSeconds": integer
}
필드
durationSeconds
(deprecated)

integer

Systrace 기간(초) 1초에서 30초 사이여야 합니다. 0은 systrace를 사용 중지합니다.

IosTestSetup

테스트를 실행하기 전에 iOS 기기를 설정하는 방법에 관한 설명입니다.

JSON 표현
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
필드
networkProfile

string

테스트를 실행하는 데 사용되는 네트워크 트래픽 프로필입니다. 사용 가능한 네트워크 프로필은 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog를 호출할 때 NETWORK_CONFIGURATION 환경 유형을 사용하여 쿼리할 수 있습니다.

additionalIpas[]

object (FileReference)

직접 테스트 중인 앱 외에 추가로 설치할 수 있는 iOS 앱 수

pushFiles[]

object (IosDeviceFile)

테스트를 시작하기 전에 기기에 푸시할 파일 목록입니다.

pullDirectories[]

object (IosDeviceFile)

테스트 종료 시 Cloud Storage에 업로드할 기기의 디렉터리 목록입니다.

디렉터리는 공유 디렉터리 (예: /private/var/mobile/Media)에 있거나 번들 ID를 지정하여 앱의 파일 시스템 내 액세스 가능한 디렉터리 (예: /Documents) 내에 있어야 합니다.

iOS 기기 파일

테스트를 시작하기 전에 기기에 설치할 파일 또는 디렉토리입니다.

JSON 표현
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
필드
content

object (FileReference)

소스 파일

bundleId

string

이 파일이 위치한 앱의 번들 ID입니다.

iOS 앱은 자체 파일 시스템을 샌드박스에 저장하므로 앱 파일은 기기에 설치된 앱을 지정해야 합니다.

devicePath

string

앱의 샌드박스 파일 시스템 내의 기기 파일 위치입니다.

AndroidInstrumentationTest

정상 수명 주기에 관계없이 Android 구성요소를 제어할 수 있는 Android 애플리케이션 테스트입니다. Android 도구 작동 테스트는 가상 또는 실제 AndroidDevice를 사용해 동일한 프로세스 내에서 애플리케이션 APK와 테스트 APK를 실행합니다. 또한 com.google.GoogleTestRunner와 같은 테스트 실행기 클래스를 지정합니다. 이 클래스는 선택한 특정 계측 프레임워크에 따라 다를 수 있습니다.

Android 테스트 유형에 관한 자세한 내용은 https://developer.android.com/training/testing/fundamentals을 참고하세요.

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.
}
필드
testApk

object (FileReference)

필수 항목입니다. 실행될 테스트 코드가 포함된 APK입니다.

appPackageId

string

테스트 중인 애플리케이션의 자바 패키지입니다. 기본값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

testPackageId

string

테스트를 실행할 자바 패키지입니다. 기본값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

testRunnerClass

string

InstrumentationTestRunner 클래스입니다. 기본값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

testTargets[]

string

각 타겟은 패키지 이름이나 클래스 이름으로 다음 형식 중 하나로 정규화되어야 합니다.

  • 'package packageName'
  • 'class packageName.class_name'
  • 'class packageName.class_name#methodName'

비어 있으면 모듈의 모든 대상이 실행됩니다.

orchestratorOption

enum (OrchestratorOption)

Android 테스트 조정자에서 도구 작동을 자체 호출하여 각 테스트를 실행할지를 선택하는 옵션입니다. ** 조정자는 AndroidJUnitRunner 버전 1.1 이상과만 호환됩니다. ** Orchestrator는 다음과 같은 이점을 제공합니다.

  • 공유 상태 없음
  • 비정상 종료가 격리됨
  • 로그 범위는 테스트별로 지정됩니다.

Android 테스트 조정자에 대한 자세한 내용은 https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator를 참조하세요.

설정하지 않으면 테스트는 조정자 없이 실행됩니다.

shardingOption

object (ShardingOption)

여러 샤드에서 동시에 테스트를 실행하는 옵션입니다.

통합 필드 app_under_test. 필수 항목입니다. app_under_test은 다음 중 하나여야 합니다.
appApk

object (FileReference)

테스트 중인 애플리케이션의 APK입니다.

appBundle

object (AppBundle)

테스트 중인 애플리케이션의 다중 APK App Bundle입니다.

AppBundle

BundleConfig.pb 파일, 기본 모듈 디렉토리, 0개 이상의 동적 기능 모듈 디렉토리가 포함된 Android App Bundle 파일 형식입니다.

App Bundle 빌드에 대한 안내는 https://developer.android.com/guide/app-bundle/build를 참조하세요.

JSON 표현
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
필드
통합 필드 bundle. 필수 항목입니다. 번들 위치 정보 bundle은 다음 중 하나여야 합니다.
bundleLocation

object (FileReference)

테스트 중인 App Bundle을 나타내는 .aab 파일입니다.

OrchestratorOption

테스트를 실행하는 방법을 지정합니다.

열거형
ORCHESTRATOR_OPTION_UNSPECIFIED 기본값: 서버가 모드를 선택합니다. 테스트가 조정자 없이 실행된다는 의미입니다. 향후 모든 도구 작동 테스트는 조정자를 사용하여 실행됩니다. 조정자가 제공하는 이점이 많으므로 조정자를 사용하는 것이 좋습니다.
USE_ORCHESTRATOR 조정자를 사용하여 테스트를 실행합니다. ** AndroidJUnitRunner 버전 1.1 이상과만 호환됩니다. ** 권장사항입니다.
DO_NOT_USE_ORCHESTRATOR 조정자를 사용하지 않고 테스트를 실행합니다.

샤딩 옵션

샤딩을 사용 설정하는 옵션입니다.

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.
}
필드

통합 필드 option.

option는 다음 중 하나여야 합니다.

uniformSharding

object (UniformSharding)

총 샤드 수를 고려하여 테스트 사례를 균일하게 샤딩합니다.

manualSharding

object (ManualSharding)

테스트 사례를 지정된 패키지, 클래스 또는 메서드 그룹으로 샤딩합니다.

smartSharding

object (SmartSharding)

샤드 테스트는 이전 테스트 사례 타이밍 기록을 기반으로 합니다.

유니폼샤딩

총 샤드 수를 고려하여 테스트 사례를 균일하게 샤딩합니다.

계측 테스트에서는 '-e numShard'로 변환됩니다. 및 '-e ShIndexIndex'를 포함합니다. AndroidJUnitRunner 인수입니다. 균일 샤딩이 사용 설정된 경우 environmentVariables를 통해 이러한 샤딩 인수 중 하나를 지정하는 것은 유효하지 않습니다.

AndroidJUnitRunner가 사용하는 샤딩 메커니즘에 따라 테스트 사례가 모든 샤드에 균일하게 배포된다는 보장이 없습니다.

JSON 표현
{
  "numShards": integer
}
필드
numShards

integer

필수 항목입니다. 생성할 총 샤드 수입니다. 항상 총 테스트 사례 수 이하의 양수여야 합니다. 하나 이상의 실제 기기를 선택할 때 샤드 수는 50개 이하여야 합니다. 하나 이상의 ARM 가상 기기를 선택하는 경우 200 이하여야 합니다. x86 가상 기기만 선택하는 경우 500 이하여야 합니다.

수동 샤딩

테스트 사례를 지정된 패키지, 클래스 또는 메서드 그룹으로 샤딩합니다.

수동 샤딩을 사용 설정한 상태에서 환경 변수 또는 InstrumentationTest를 통해 테스트 대상을 지정하는 것은 유효하지 않습니다.

JSON 표현
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
필드
testTargetsForShard[]

object (TestTargetsForShard)

필수 항목입니다. 수동으로 생성된 각 샤드에 실행할 패키지, 클래스 또는 테스트 메서드 그룹입니다. 이 필드가 있으면 샤드를 1개 이상 지정해야 합니다. 하나 이상의 실제 기기를 선택할 때 반복되는 testTargetsForShard의 수는 50개 이하여야 합니다. 하나 이상의 ARM 가상 기기를 선택하는 경우 200 이하여야 합니다. x86 가상 기기만 선택하는 경우 500 이하여야 합니다.

TestTargetsForShard 대상

샤드의 테스트 대상.

JSON 표현
{
  "testTargets": [
    string
  ]
}
필드
testTargets[]

string

각 샤드에 실행할 패키지, 클래스 또는 테스트 메서드 그룹입니다. 대상은 AndroidJUnitRunner 인수 형식으로 지정해야 합니다. 예: 'package com.my.packages' 'class com.my.package.MyClass'

testTargets 수는 0보다 커야 합니다.

스마트샤딩

샤드 테스트는 이전 테스트 사례 타이밍 기록을 기반으로 합니다.

JSON 표현
{
  "targetedShardDuration": string
}
필드
targetedShardDuration

string (Duration format)

샤드 내에서 테스트에 걸리는 시간입니다.

기본값은 300초 (5분)입니다. 허용되는 최솟값: 120초 (2분)

샤드 수는 최대 샤드 한도까지 시간에 따라 동적으로 설정됩니다 (아래 설명 참고). 각 샤드에 대해 하나 이상의 테스트 사례를 보장하기 위해 샤드 수가 테스트 사례 수를 초과하지 않아야 합니다. 다음과 같은 경우 샤드 기간이 초과됩니다.

  • 최대 샤드 한도에 도달했으며 샤드에 할당할 계산된 테스트 시간이 더 남습니다.
  • 모든 개별 테스트는 타겟팅된 샤드 기간보다 더 긴 것으로 추정됩니다.

스마트 샤딩은 정확하지 않을 수 있는 테스트 사례 기록과 기본 기간을 사용하므로 샤딩 기간이 보장되지 않습니다. 테스트 사례 타이밍 레코드를 찾는 규칙은 다음과 같습니다.

  • 서비스에서 지난 30일 동안 테스트 사례를 처리한 경우 최근에 성공한 테스트 사례의 기록이 사용됩니다.
  • 새로운 테스트 사례의 경우 알려진 다른 테스트 사례의 평균 기간이 사용됩니다.
  • 사용 가능한 이전 테스트 사례 타이밍 기록이 없는 경우 기본 테스트 사례 기간은 15초입니다.

실제 샤드 기간은 타겟팅된 샤드 기간을 초과할 수 있으므로 타겟팅된 값을 허용되는 최대 테스트 제한 시간 (실제 기기의 경우 45분, 가상 기기의 경우 60분)보다 최소 5분 미만으로 설정하거나 직접 설정한 맞춤 테스트 제한 시간 값을 사용하는 것이 좋습니다. 이 접근 방식을 사용하면 모든 테스트가 완료되기 전에 샤드가 취소되지 않습니다.

최대 샤드 수에는 제한이 있습니다. 하나 이상의 실제 기기를 선택할 때 샤드 수는 50개 이하여야 합니다. 하나 이상의 ARM 가상 기기를 선택하는 경우 200 이하여야 합니다. x86 가상 기기만 선택하는 경우 500 이하여야 합니다. 샤드당 테스트 사례가 하나 이상 보장되도록 샤드 수는 테스트 사례 수를 초과하지 않아야 합니다. 생성된 각 샤드는 일일 테스트 할당량에 포함됩니다.

소수점 아래가 최대 9자리까지이고 's'로 끝나는 초 단위 기간입니다. 예를 들면 "3.5s"입니다.

AndroidRoboTest

가상 또는 실제 Android 기기에서 애플리케이션을 탐색하는 Android 애플리케이션의 테스트로, 테스트가 진행되는 동안 원인과 장애를 찾습니다.

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.
}
필드
appPackageId

string

테스트 중인 애플리케이션의 자바 패키지입니다. 기본값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

appInitialActivity

string

앱을 시작하는 데 사용해야 하는 초기 활동입니다.

maxDepth
(deprecated)

integer

Robo가 탐색할 수 있는 순회 스택의 최대 깊이입니다. Robo가 최초 활동 이후 앱을 탐색하게 하려면 2 이상이어야 합니다. 기본값은 50입니다.

maxSteps
(deprecated)

integer

Robo가 탐색할 수 있는 최대 단계입니다. 기본값은 제한이 없습니다.

roboDirectives[]

object (RoboDirective)

Robo가 크롤링을 진행하는 동안 적용해야 하는 지시문 집합입니다. 이를 통해 사용자는 크롤링을 맞춤설정할 수 있습니다. 예를 들어 테스트 계정의 사용자 이름과 비밀번호를 제공할 수 있습니다.

roboMode

enum (RoboMode)

Robo가 실행되어야 하는 모드입니다. 대부분의 클라이언트는 서버가 이 필드를 자동으로 채우도록 허용해야 합니다.

roboScript

object (FileReference)

Robo가 크롤링을 진행하는 동안 프롤로그로 수행해야 하는 일련의 작업이 포함된 JSON 파일입니다.

startingIntents[]

object (RoboStartingIntent)

크롤링을 위한 앱을 실행하는 데 사용된 인텐트입니다. 아무것도 지정하지 않으면 기본 런처 활동이 실행됩니다. 일부를 지정하면 지정한 것만 실행됩니다(기본 런처 활동을 명시적으로 지정해야 함).

통합 필드 app_under_test. 필수 항목입니다. app_under_test은 다음 중 하나여야 합니다.
appApk

object (FileReference)

테스트 중인 애플리케이션의 APK입니다.

appBundle

object (AppBundle)

테스트 중인 애플리케이션의 다중 APK App Bundle입니다.

RoboDirective

Robo가 크롤링을 진행하는 동안 발생하는 특정 UI 요소와 상호작용하도록 지시합니다. 현재 Robo는 텍스트 입력 또는 요소 클릭을 수행할 수 있습니다.

JSON 표현
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
필드
resourceName

string

필수. 대상 UI 요소의 Android 리소스 이름입니다. 예를 들어 자바의 R.string.foo 또는 xml의 @string/foo에서 'foo' 부분만 필요합니다. 참조 문서: https://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Robo가 설정에 전달하는 텍스트입니다. 비워 두면 지시문은 resourceName과 일치하는 요소에서 클릭으로 처리됩니다.

actionType

enum (RoboActionType)

필수 항목입니다. Robo가 지정된 요소에서 수행해야 하는 작업 유형입니다.

RoboActionType

Robo가 UI 요소에 수행할 수 있는 작업입니다.

열거형
ACTION_TYPE_UNSPECIFIED 사용하지 마세요. Proto 버전 관리 전용입니다.
SINGLE_CLICK Robo가 지정된 요소를 클릭하도록 지시합니다. 지정된 요소를 클릭할 수 없는 경우 작업에 실패합니다.
ENTER_TEXT Robo가 지정된 요소에 텍스트를 입력하도록 지시합니다. 지정된 요소를 사용할 수 없거나 텍스트 입력을 할 수 없는 경우 작업에 실패합니다.
IGNORE Robo가 특정 요소와의 상호작용을 무시하도록 지시합니다.

Robo 모드

Robo가 실행되어야 하는 모드입니다.

열거형
ROBO_MODE_UNSPECIFIED 즉, 서버가 모드를 선택해야 합니다. 권장됨
ROBO_VERSION_1 앱 다시 서명 없이 UIAutomator 전용 모드에서 Robo 실행
ROBO_VERSION_2 UIAutomator 대체를 사용하여 표준 Espresso에서 Robo 실행

RoboStartingIntent

크롤링을 위한 시작 활동을 지정하기 위한 메시지입니다.

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.
}
필드
timeout

string (Duration format)

각 인텐트의 제한 시간(초)입니다.

소수점 아래가 최대 9자리까지이고 's'로 끝나는 초 단위 기간입니다. 예를 들면 "3.5s"입니다.

통합 필드 starting_intent. 필수 항목입니다. 활동을 시작하기 위한 인텐트 세부정보 starting_intent은 다음 중 하나여야 합니다.
launcherActivity

object (LauncherActivityIntent)

기본 런처 활동을 시작하는 인텐트입니다.

startActivity

object (StartActivityIntent)

특정 세부정보로 활동을 시작하는 인텐트

noActivity

object (NoActivityIntent)

시작 활동을 건너뜁니다.

LauncherActivityIntent

이 유형에는 필드가 없습니다.

기본 런처 활동을 시작하는 인텐트를 지정합니다.

StartActivityIntent

작업, URI, 카테고리로 지정된 시작 인텐트입니다.

JSON 표현
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
필드
action

string

작업 이름입니다. START_ACTIVITY에 필요합니다.

uri

string

작업을 위한 URI입니다.

categories[]

string

인텐트에 설정할 인텐트 카테고리입니다.

액티비티 인텐트 없음

이 유형에는 필드가 없습니다.

시작 활동을 건너뜁니다.

AndroidTestLoop

테스트 루프가 포함된 Android 애플리케이션의 테스트입니다. 당분간은 Games가 이 API의 유일한 사용자이므로 <intent-name> 인텐트가 묵시적으로 추가됩니다.

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.
}
필드
appPackageId

string

테스트 중인 애플리케이션의 자바 패키지입니다. 기본값은 애플리케이션의 매니페스트를 검사하여 결정됩니다.

scenarios[]

integer

테스트 중에 실행해야 하는 시나리오 목록입니다. 기본값은 애플리케이션의 매니페스트에서 가져온 모든 테스트 루프입니다.

scenarioLabels[]

string

테스트 중에 실행해야 하는 시나리오 라벨 목록입니다. 시나리오 라벨은 애플리케이션의 매니페스트에 정의된 라벨로 매핑되어야 합니다. 예를 들어 player_experience와 com.google.test.loops.player_experience는 매니페스트에 com.google.test.loops.player_experience 이름이 지정된 모든 루프가 실행에 추가됩니다. 시나리오를 시나리오 필드에 지정할 수도 있습니다.

통합 필드 app_under_test. 필수 항목입니다. 테스트할 Android 패키지입니다. app_under_test은 다음 중 하나여야 합니다.
appApk

object (FileReference)

테스트 중인 애플리케이션의 APK입니다.

appBundle

object (AppBundle)

테스트 중인 애플리케이션의 다중 APK App Bundle입니다.

IosXcTest

XCTest 프레임워크를 사용하는 iOS 애플리케이션 테스트입니다. Xcode는 '테스트용 빌드' 옵션을 지원합니다, 이 옵션은 테스트 사양(인수, 테스트 메소드 등)이 포함된 .xctestrun 파일을 생성합니다. 이 테스트 유형은 .xctestrun 파일과 테스트를 실행하는 데 필요한 모든 바이너리가 포함된 Build/Products 디렉토리의 콘텐츠가 포함된 zip 파일을 허용합니다.

JSON 표현
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
필드
testsZip

object (FileReference)

필수 항목입니다. .xctestrun 파일과 DerivedData/Build/Products 디렉토리의 콘텐츠가 포함된 .zip입니다. xctestrun 필드를 지정하면 zip 파일의 .xctestrun 파일은 무시됩니다.

xctestrun

object (FileReference)

테스트 zip의 .xctestrun 파일을 재정의하는 .xctestrun 파일입니다. .xctestrun 파일에는 실행하거나 무시할 테스트 메소드와 함께 환경 변수가 포함되므로 분할 테스트에 유용할 수 있습니다. 기본값은 테스트 zip에서 가져옵니다.

xcodeVersion

string

테스트에 사용해야 하는 Xcode 버전입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다. 기본값은 Firebase Test Lab이 지원하는 가장 최신 Xcode 버전입니다.

appBundleId

string

출력 전용입니다. 테스트 중인 애플리케이션의 번들 ID입니다.

testSpecialEntitlements

boolean

특수 앱 사용 권한을 테스트하는 옵션. 이를 설정하면 명시적인 애플리케이션 식별자가 있는 특수한 권한을 가진 앱이 다시 서명됩니다. 현재 aps-environment 사용 권한 테스트를 지원합니다.

IosTestLoop

하나 이상의 게임 루프 시나리오를 구현하는 iOS 애플리케이션의 테스트입니다. 이 테스트 유형은 보관처리된 애플리케이션 (.ipa 파일)과 앱에서 순차적으로 실행될 정수 시나리오 목록을 허용합니다.

JSON 표현
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
필드
appIpa

object (FileReference)

필수 항목입니다. 테스트할 애플리케이션의 .ipa입니다.

scenarios[]

integer

테스트 중에 실행해야 하는 시나리오 목록입니다. 지정되지 않은 경우 기본값은 단일 시나리오 0입니다.

appBundleId

string

출력 전용입니다. 테스트 중인 애플리케이션의 번들 ID입니다.

IosRoboTest

iOS 기기에서 iOS 애플리케이션을 탐색하는 테스트입니다.

JSON 표현
{
  "appIpa": {
    object (FileReference)
  },
  "appBundleId": string,
  "roboScript": {
    object (FileReference)
  }
}
필드
appIpa

object (FileReference)

필수 항목입니다. 이 파일에 저장된 IPA는 테스트를 실행하는 데 사용됩니다.

appBundleId

string

테스트 중인 앱의 번들 ID입니다. 이는 애플리케이션의 'Info.plist'를 검토하여 결정됩니다. 파일에서 참조됩니다.

roboScript

object (FileReference)

크롤링을 맞춤설정하기 위한 Robo 스크립트(선택사항)입니다. Roboscript에 대한 자세한 내용은 https://firebase.google.com/docs/test-lab/android/robo-scripts-reference를 참조하세요.

EnvironmentMatrix

테스트를 실행할 환경 매트릭스입니다.

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.
}
필드
통합 필드 environment_matrix. 필수 항목입니다. 환경 매트릭스입니다. environment_matrix은 다음 중 하나여야 합니다.
androidMatrix

object (AndroidMatrix)

Android 기기의 매트릭스입니다.

androidDeviceList

object (AndroidDeviceList)

Android 기기 목록입니다. 테스트는 지정된 기기에서만 실행됩니다.

iosDeviceList

object (IosDeviceList)

iOS 기기 목록입니다.

AndroidMatrix

Android 기기 설정 순열 집합은 지정한 축의 교차 곱에 의해 정의됩니다. 내부적으로 지정된 AndroidMatrix가 AndroidDevices 집합으로 확장됩니다.

지원되는 순열만 인스턴스화됩니다. 지원되지 않는 순열(예: 호환되지 않는 모델/버전)은 무시됩니다.

JSON 표현
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
필드
androidModelIds[]

string

필수. 사용할 Android 기기 집합의 ID입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

androidVersionIds[]

string

필수 항목입니다. 사용할 Android OS 버전 집합의 ID입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

locales[]

string

필수 항목입니다. 테스트 기기에서 테스트에 사용 설정할 언어 집합입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

orientations[]

string

필수 항목입니다. 테스트할 방향 집합입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

AndroidDeviceList

테스트를 실행할 Android 기기 설정 목록입니다.

JSON 표현
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
필드
androidDevices[]

object (AndroidDevice)

필수 항목입니다. Android 기기 목록입니다.

IosDeviceList

테스트를 실행할 iOS 기기 설정 목록입니다.

JSON 표현
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
필드
iosDevices[]

object (IosDevice)

필수 항목입니다. iOS 기기 목록입니다.

IosDevice

단일 iOS 기기입니다.

JSON 표현
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
필드
iosModelId

string

필수. 사용할 iOS 기기의 ID입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

iosVersionId

string

필수 항목입니다. 사용할 iOS 주요 소프트웨어 버전의 ID입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

locale

string

필수 항목입니다. 테스트 기기에서 테스트에 사용된 언어입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

orientation

string

필수 항목입니다. 테스트 중 기기의 방향입니다. TestEnvironmentDiscoveryService를 사용하여 지원되는 옵션을 가져옵니다.

TestExecution

단일 환경에서 실행되는 단일 테스트입니다.

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)
  }
}
필드
id

string

출력 전용. 서비스에서 설정된 고유 ID입니다.

matrixId

string

출력 전용입니다. 포함된 TestMatrix의 ID입니다.

projectId

string

출력 전용. 테스트 실행을 소유한 Cloud 프로젝트입니다.

testSpecification

object (TestSpecification)

출력 전용입니다. 테스트를 실행하는 방법입니다.

shard

object (Shard)

출력 전용입니다. 샤드에 관한 세부정보입니다.

environment

object (Environment)

출력 전용입니다. 호스트 머신을 구성하는 방법입니다.

state

enum (TestState)

출력 전용입니다. 테스트 실행의 현재 진행 상황을 나타냅니다 (예: FINISHED)를 확인할 수 있습니다.

toolResultsStep

object (ToolResultsStep)

출력 전용입니다. 이 실행 결과가 작성되는 곳입니다.

timestamp

string (Timestamp format)

출력 전용입니다. 이 테스트 실행이 처음 만들어진 시간입니다.

RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"입니다.

testDetails

object (TestDetails)

출력 전용입니다. 테스트 실행에 대한 추가 세부정보입니다.

분할

출력 전용입니다. 샤드에 관한 세부정보입니다.

JSON 표현
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
필드
shardIndex

integer

출력 전용입니다. 모든 샤드 중 샤드의 색인입니다.

numShards

integer

출력 전용입니다. 총 샤드 수입니다.

testTargetsForShard

object (TestTargetsForShard)

출력 전용입니다. 각 샤드의 테스트 대상 수동 샤딩에만 설정됩니다.

estimatedShardDuration

string (Duration format)

출력 전용입니다. 이전 테스트 사례 타이밍 기록(있는 경우)을 기반으로 한 예상 샤드 기간입니다.

소수점 아래가 최대 9자리까지이고 's'로 끝나는 초 단위 기간입니다. 예를 들면 "3.5s"입니다.

환경

테스트가 실행되는 환경입니다.

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.
}
필드
통합 필드 environment. 필수 항목입니다. 환경입니다. environment은 다음 중 하나여야 합니다.
androidDevice

object (AndroidDevice)

Android 테스트에 사용해야 하는 Android 기기입니다.

iosDevice

object (IosDevice)

iOS 테스트에 사용해야 하는 iOS 기기입니다.

TestState

테스트 실행 또는 매트릭스의 상태(즉, 진행 상황)입니다.

열거형
TEST_STATE_UNSPECIFIED 사용하지 마세요. Proto 버전 관리 전용입니다.
VALIDATING 실행 또는 매트릭스에 대한 유효성을 검사하는 중입니다.
PENDING 실행 또는 매트릭스에서 리소스를 사용할 수 있을 때까지 기다리는 중입니다.
RUNNING

현재 실행을 처리 중입니다.

실행에서만 설정할 수 있습니다.

FINISHED

실행 또는 매트릭스가 정상적으로 종료되었습니다.

매트릭스에서는 매트릭스 수준의 처리가 정상적으로 완료되었다는 의미이며, 각각의 실행에는 오류 상태가 있을 수도 있습니다.

ERROR 인프라 오류가 발생하여 실행 또는 매트릭스가 중지되었습니다.
UNSUPPORTED_ENVIRONMENT

지원되지 않는 환경에 해당하므로 테스트 실행이 진행되지 않았습니다.

실행에서만 설정할 수 있습니다.

INCOMPATIBLE_ENVIRONMENT

제공된 입력이 요청된 환경과 호환되지 않으므로 테스트 실행이 진행되지 않았습니다.

예: 요청된 AndroidVersion이 APK의 minSdkVersion보다 낮습니다.

실행에서만 설정할 수 있습니다.

INCOMPATIBLE_ARCHITECTURE

제공된 입력이 요청된 아키텍처와 호환되지 않으므로 테스트 실행이 진행되지 않았습니다.

예: 요청된 기기는 제공된 APK의 네이티브 코드 실행을 지원하지 않습니다.

실행에서만 설정할 수 있습니다.

CANCELLED

사용자가 실행을 취소했습니다.

실행에서만 설정할 수 있습니다.

INVALID

제공된 입력이 유효하지 않아서 테스트 실행 또는 매트릭스가 실행되지 않았습니다.

예: 입력 파일이 적절한 유형이 아니거나, 형식이 잘못 또는 손상되었거나, 멀웨어로 신고되었습니다.

ToolResultsStep

도구 결과 단계 리소스를 나타냅니다.

여기에는 TestExecution의 결과가 포함되어 있습니다.

JSON 표현
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
필드
projectId

string

출력 전용. 도구 결과 단계를 소유하는 Cloud 프로젝트입니다.

historyId

string

출력 전용. 도구 결과 기록 ID입니다.

executionId

string

출력 전용. 도구 결과 실행 ID입니다.

stepId

string

출력 전용. 도구 결과 단계 ID입니다.

TestDetails

실행 중인 테스트의 진행 상태에 대한 추가 세부정보입니다.

JSON 표현
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
필드
progressMessages[]

string

출력 전용. 테스트 진행 상태에 대한 자세한 설명으로, 사람이 읽을 수 있는 형식으로 출력됩니다. 예: '기기 프로비저닝', '테스트 시작'.

실행 과정에서 새 데이터가 progressMessages의 끝에 추가될 수 있습니다.

errorMessage

string

출력 전용. TestState가 ERROR인 경우 이 문자열에는 오류에 대한 정보가 사람이 읽을 수 있는 형식으로 포함됩니다.

ResultStorage

테스트의 실행 결과가 저장된 위치입니다.

JSON 표현
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
필드
googleCloudStorage

object (GoogleCloudStorage)

필수 항목입니다.

toolResultsHistory

object (ToolResultsHistory)

결과가 작성된 도구 결과 실행이 포함된 도구 결과 기록입니다.

지정하지 않으면 서비스가 적절한 값을 선택합니다.

toolResultsExecution

object (ToolResultsExecution)

출력 전용입니다. 결과가 작성된 도구 결과 실행입니다.

resultsUrl

string

출력 전용입니다. Firebase 웹 콘솔의 결과 URL입니다.

GoogleCloudStorage

Google Cloud Storage(GCS) 내의 저장소 위치입니다.

JSON 표현
{
  "gcsPath": string
}
필드
gcsPath

string

필수 항목입니다. 이 테스트의 결과가 포함될 GCS의 디렉터리 경로입니다. 요청하는 사용자에게 제공된 경로의 버킷에 대한 쓰기 액세스 권한이 있어야 합니다.

ToolResultsHistory

도구 결과 기록 리소스를 나타냅니다.

JSON 표현
{
  "projectId": string,
  "historyId": string
}
필드
projectId

string

필수. 도구 결과 기록을 소유하는 Cloud 프로젝트입니다.

historyId

string

필수. 도구 결과 기록 ID입니다.

ToolResultsExecution

도구 결과 실행 리소스를 나타냅니다.

여기에는 TestMatrix의 결과가 포함되어 있습니다.

JSON 표현
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
필드
projectId

string

출력 전용. 도구 결과 실행을 소유하는 Cloud 프로젝트입니다.

historyId

string

출력 전용. 도구 결과 기록 ID입니다.

executionId

string

출력 전용. 도구 결과 실행 ID입니다.

InvalidMatrixDetails

잘못된 매트릭스로 간주된 상세한 이유입니다.

열거형
INVALID_MATRIX_DETAILS_UNSPECIFIED 사용하지 마세요. Proto 버전 관리 전용입니다.
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/studio/build/application-id도 참고하세요.
TEST_SAME_AS_APP 테스트 패키지와 앱 패키지가 동일합니다.
NO_INSTRUMENTATION 테스트 APK가 도구 작동을 선언하지 않습니다.
NO_SIGNATURE 입력 앱 APK에 서명이 없습니다.
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE 사용자 또는 테스트 APK의 매니페스트 파일에 의해 지정된 테스트 러너 클래스가 Android 테스트 조정자와 호환되지 않습니다. 조정자는 AndroidJUnitRunner 버전 1.1 이상과만 호환됩니다. DO_NOT_USE_ORCHESTRATOR OrchestratorOption을 사용하여 조정자를 사용 중지할 수 있습니다.
NO_TEST_RUNNER_CLASS

테스트 APK에 사용자 또는 매니페스트 파일에 의해 지정된 테스트 실행자 클래스가 포함되어 있지 않습니다. 다음 이유 중 하나가 원인일 수 있습니다.

  • 사용자가 잘못된 러너 클래스 이름을 제공함
  • 테스트 실행기가 테스트 APK에 빌드되지 않았습니다 (대신 앱 APK에 있을 수 있음).
NO_LAUNCHER_ACTIVITY 기본 런처 활동을 찾을 수 없습니다.
FORBIDDEN_PERMISSIONS 앱이 애플리케이션에서 허용되지 않는 권한을 1개 이상 선언합니다.
INVALID_ROBO_DIRECTIVES 제공된 roboDirectives에 충돌이 있습니다.
INVALID_RESOURCE_NAME 제공된 robo 지시어에 잘못된 리소스 이름이 하나 이상 있습니다.
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 압축된 XCTest가 잘못되었습니다. zip에 .xctestrun 파일 한 개와 DerivedData/Build/Products 디렉토리의 콘텐츠가 포함되어 있지 않습니다.
BUILT_FOR_IOS_SIMULATOR 압축된 XCTest가 실제 기기가 아니라 iOS 시뮬레이터용으로 빌드되었습니다.
NO_TESTS_IN_XC_TEST_ZIP .xctestrun 파일에 테스트 대상을 지정하지 않았습니다.
USE_DESTINATION_ARTIFACTS .xctestrun 파일에 정의된 하나 이상의 테스트 대상에 허용되지 않는 '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 이 테스트를 실행하는 중에 알 수 없는 권한 문제가 발생했습니다.

행렬 오류 세부정보

매트릭스의 단일 오류 또는 문제를 설명합니다.

JSON 표현
{
  "reason": string,
  "message": string
}
필드
reason

string

출력 전용입니다. 오류가 발생한 이유입니다. 오류의 원인을 식별하는 UPPER_SNAKE_CASE의 상수 값입니다.

message

string

출력 전용입니다. TestMatrix의 오류 방식에 관한 사람이 읽을 수 있는 메시지입니다. reason 필드를 확장하여 추가 세부정보와 문제 해결 가능한 옵션을 포함합니다.

결과 요약

완료된 테스트 매트릭스의 결과 요약입니다.

열거형
OUTCOME_SUMMARY_UNSPECIFIED 사용하지 마세요. Proto 버전 관리 전용입니다.
SUCCESS

다음과 같이 테스트 매트릭스가 성공적으로 실행되었습니다.

  • 모든 테스트 사례를 통과했습니다.
  • Robo에서 테스트 중인 애플리케이션의 비정상 종료를 감지하지 못했습니다.
FAILURE

실행에 실패했습니다. 예를 들면 다음과 같습니다.

  • 하나 이상의 테스트 사례가 실패했습니다.
  • 테스트 시간이 초과되었습니다.
  • 테스트 중인 애플리케이션이 비정상 종료되었습니다.
INCONCLUSIVE 예기치 않은 문제가 발생했습니다. 여전히 실행에 실패한 것으로 간주해야 하지만 일시적인 문제일 수 있으며 테스트를 다시 실행하면 성공할 수도 있습니다.
SKIPPED

다음과 같은 모든 테스트를 건너뛰었습니다.

  • 모든 기기 설정이 호환되지 않습니다.

메소드

cancel

테스트 매트릭스에서 완료되지 않은 테스트 실행을 취소합니다.

create

지정된 사양에 따라 테스트 매트릭스를 만들고 실행합니다.

get

테스트 매트릭스와 실행이 생성되면 상태를 확인합니다.