- 리소스: 단계
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 테스트 실행 단계
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 도구 실행
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- ToolExitCode
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- TestIssue
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 모두
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 심각도
- 유형
- 카테고리
- TestTiming
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 도구 실행 단계
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 멀티스텝
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 기본 단계
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 개인결과
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 메서드
리소스: 단계
단계는 실행의 일부로 수행되는 단일 작업을 나타냅니다. 단계는 도구의 실행 ( 예: 테스트 실행기 실행 또는 컴파일러의 실행)을 나타내는 데 사용할 수 있습니다.
단계는 중복될 수 있습니다. 예를 들어 일부 작업이 동시에 완료되는 경우 두 단계의 시작 시간이 같을 수 있습니다.
다음 예를 통해 연속 빌드가 각 반복에 대해 테스트 실행기를 실행한다고 가정해 보겠습니다. 워크플로는 다음과 같습니다. - 사용자가 ID가 1인 실행을 생성 - 사용자는 실행 1에 대해 ID 100으로 TestExecutionStep을 생성 - 사용자가 ID 100으로 TestExecutionStep을 업데이트하여 원시 xml 로그를 추가 + 서비스가 xml 로그를 파싱하고 업데이트된 TestResult와 함께 TestExecutionStep을 반환합니다. - 사용자가 ID가 100인 TestExecutionStep의 상태를 COMPLETE로 업데이트
Step은 상태가 COMPLETE로 설정될 때까지 업데이트할 수 있으며, 그 시점에는 불변이 됩니다.
JSON 표현 |
---|
{ "stepId": string, "creationTime": { object ( |
필드 | |
---|---|
stepId |
이 단계의 실행 내에서 고유 식별자입니다. 호출자가 이 필드를 설정하거나 덮어쓸 경우 INVALID_ARGUMENT를 반환합니다.
|
creationTime |
단계가 생성된 시간입니다.
|
completionTime |
단계 상태가 완료로 설정된 시간입니다. 이 값은 상태가 COMPLETE로 전환될 때 자동으로 설정됩니다.
|
name |
UI에 표시할 사람이 읽을 수 있는 짧은 이름입니다. 최대 100자(영문 기준)까지 입력할 수 있습니다. 예: 클린 빌드 새 단계를 만들 때 이름 및 측정기준Value를 기존 단계와 공유하는 경우 PRECONDITION_FAILED가 반환됩니다. 두 단계의 액션이 비슷하지만 측정기준 값이 다른 경우 두 단계의 이름이 동일해야 합니다. 예를 들어, 동일한 테스트 세트를 두 개의 다른 플랫폼에서 실행하는 경우 두 단계의 이름은 동일해야 합니다.
|
description |
이 도구에 대한 설명(예: mvn clear package -D skipTests=true)
|
state |
초기 상태는 IN_PROGRESS입니다. 유일한 정상 상태 전환은 * IN_PROGRESS ->입니다. 완료 잘못된 전환이 요청되면 PRECONDITION_FAILED가 반환됩니다. 상태가 COMPLETE로 설정된 단계를 생성하는 것은 유효합니다. 상태는 한 번만 COMPLETE로 설정할 수 있습니다. 상태가 COMPLETE로 여러 번 설정되면 PRECONDITION_FAILED가 반환됩니다.
|
outcome |
결과의 분류입니다(예: SUCCESS 또는 FAILURE).
|
hasImages |
이 단계의 출력 중에 썸네일 이미지 목록을 사용하여 썸네일을 가져올 수 있는 이미지가 있는지 여부입니다.
|
labels |
단계와 연결된 임의의 사용자 제공 키/값 쌍입니다. 키가 실수로 충돌하지 않도록 키 네임스페이스를 관리할 책임은 사용자에게 있습니다. 라벨 수가 100개를 초과하거나 키 또는 값의 길이가 100자를 초과하면 INVALID_ARGUMENT가 반환됩니다.
|
dimensionValue |
이 단계를 포함하는 실행에 dimension_definition이 설정된 경우 이 필드를 통해 하위 요소가 측정기준의 값을 지정할 수 있습니다. 키는 실행의 dimension_definition과 정확하게 일치해야 합니다. 예를 들어 실행에 단계가 행렬의 한 차원에 참여하지 않는 경우 해당 차원의 값은 빈 문자열이어야 합니다. 예를 들어 재시도를 지원하지 않는 실행기에서 테스트 중 하나를 실행하는 경우 단계는 단계가 매트릭스의 어떤 측정기준에도 참여하지 않는 경우 dimensionValue가 설정되지 않은 채로 둘 수 있습니다. 실행의 dimension_definition에 키가 없는 경우 PRECONDITION_FAILED가 반환됩니다. 이 실행의 다른 단계에 이미 동일한 name과 dimensionValue가 있지만 다른 데이터 필드와는 다른 경우(예: 단계 필드가 다른 경우) PRECONDITION_FAILED가 반환됩니다. annotationValue가 설정되어 있고 키 중 하나로 지정되지 않은 측정기준_정의가 실행에 있는 경우 PRECONDITION_FAILED가 반환됩니다.
|
runDuration |
이 단계를 실행하는 데 걸린 시간입니다. 설정하지 않으면 단계가 COMPLETE 상태로 설정될 때 createdTime과 completeTime의 차이가 설정됩니다. 경우에 따라서는 이 값을 별도로 설정하는 것이 적절합니다. 예를 들어 단계를 만들었지만 단계가 나타내는 작업이 실행되기 전에 몇 분 동안 큐에 있는 경우, runDuration에 큐에 추가된 시간을 포함하지 않는 것이 적절할 수 있습니다. 이 필드가 이미 설정된 단계에서 runDuration을 설정하려고 하면 PRECONDITION_FAILED가 반환됩니다.
|
deviceUsageDuration |
테스트를 실행하는 데 사용되는 기기 리소스의 양입니다. 결제 목적으로 사용되는 기기 사용량이며 runDuration과 다릅니다. 예를 들어 인프라 장애의 경우 기기 사용 요금이 청구되지 않습니다. 이 필드가 이미 설정된 단계에서 device_usage을 설정하려고 시도하면 PRECONDITION_FAILED가 반환됩니다.
|
multiStep |
그룹과 동일한 구성으로 여러 단계를 실행하는 경우의 세부정보입니다. 이러한 세부정보를 사용하여 이 단계가 속한 그룹을 식별할 수 있습니다. 또한 그룹의 '기본 단계'를 식별합니다. 모든 그룹 구성원의 색인을 생성합니다.
|
통합 필드
|
|
testExecutionStep |
테스트 실행기 실행 |
toolExecutionStep |
도구의 실행 (Google에서 명시적으로 지원하지 않는 단계에 사용됨) |
테스트 실행 단계
테스트 실행을 나타내는 단계입니다.
ant-junit xml 파일을 허용하며, 이 파일은 서비스에 의해 구조화된 테스트 결과로 파싱됩니다. 파일을 더 추가하기 위해 XML 파일 경로가 업데이트되지만 삭제할 수는 없습니다.
사용자는 test_result 필드를 사용하여 테스트 결과를 수동으로 추가할 수도 있습니다.
JSON 표현 |
---|
{ "testSuiteOverviews": [ { object ( |
필드 | |
---|---|
testSuiteOverviews[] |
테스트 모음 개요 콘텐츠의 목록입니다. 이는 서버에서 xUnit XML 로그에서 파싱하거나 사용자가 직접 업로드할 수 있습니다. 이 참조는 테스트 도구 모음이 완전히 파싱되거나 업로드된 경우에만 호출해야 합니다. 단계당 허용되는 최대 테스트 모음 개요 수는 1,000개입니다.
|
toolExecution |
테스트 실행기의 실행을 나타냅니다. 이 도구의 종료 코드는 테스트 통과 여부를 확인하는 데 사용됩니다.
|
testIssues[] |
테스트 실행 중에 관찰된 문제 예를 들어 테스트 중에 테스트 중인 모바일 앱이 비정상 종료된 경우 디버깅을 지원하기 위해 오류 메시지와 스택 트레이스 콘텐츠를 여기에 기록할 수 있습니다.
|
testTiming |
테스트 실행의 타이밍 분석입니다.
|
도구 실행
임의 도구의 실행입니다. 테스트 실행기이거나 아티팩트를 복사하거나 코드를 배포하는 도구일 수 있습니다.
JSON 표현 |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
필드 | |
---|---|
commandLineArguments[] |
프로그램 이름을 포함하여 토큰화된 전체 명령줄입니다 (C 프로그램의 argv와 같음).
|
toolLogs[] |
일반 텍스트 로그를 참조하면 도구 실행이 출력됩니다. 이 필드는 도구가 실행되는 동안 로그의 실시간 보기에 액세스할 수 있도록 도구가 종료되기 전에 설정할 수 있습니다. 단계당 허용되는 최대 도구 로그 수는 1,000개입니다.
|
exitCode |
도구 실행 종료 코드입니다. 이 필드는 도구가 종료되면 설정됩니다.
|
toolOutputs[] |
도구 실행으로 인해 출력되는 모든 형식의 불투명 파일에 대한 참조입니다. 단계당 허용되는 최대 도구 출력 수는 1,000개입니다.
|
도구 종료 코드
도구 실행의 코드 종료
JSON 표현 |
---|
{ "number": integer } |
필드 | |
---|---|
number |
도구 실행 종료 코드입니다. 값이 0이면 실행이 성공했음을 의미합니다.
|
TestIssue
테스트 실행 중에 발생한 문제가 감지되었습니다.
JSON 표현 |
---|
{ "errorMessage": string, "stackTrace": { object ( |
필드 | |
---|---|
errorMessage |
사람이 읽을 수 있는 간단한 메시지로 문제를 설명합니다. 필수 항목입니다. |
stackTrace |
지원 중단되고 특정 경고 내의 스택 트레이스 필드로 대체되었습니다. |
warning |
문제에 대한 추가 세부정보가 포함된 경고 메시지 항상 com.google.devtools.toolresults.v1.warnings의 메시지여야 합니다. |
severity |
문제의 심각도 필수 항목입니다. |
type |
문제 유형입니다. 필수 항목입니다. |
category |
문제 카테고리입니다. 필수 항목입니다. |
모두
Any
에는 직렬화된 메시지의 유형을 설명하는 URL과 함께 임의의 직렬화된 프로토콜 버퍼 메시지가 포함됩니다.
Protobuf 라이브러리는 유틸리티 함수 형식으로 모든 값을 패킹/압축 풀기 위한 지원 또는 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 라이브러리에서 제공되는 팩 메서드는 기본적으로 'type.googleapis.com/full.type.name'을 사용합니다. 을 유형 URL로 사용하고 압축해제 메서드는 마지막 '/' 뒤에 있는 정규화된 유형 이름만 사용합니다. 유형 URL(예: 'foo.bar.com/x/y.z') 유형 이름 'y.z'를 생성합니다.
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 |
직렬화된 프로토콜 버퍼 메시지의 유형을 고유하게 식별하는 URL/리소스 이름입니다. 이 문자열에는 '/'가 하나 이상 포함되어야 합니다. 있습니다. URL 경로의 마지막 세그먼트는 실제로 팀은 일반적으로 Any의 컨텍스트에서 사용할 것으로 예상되는 모든 유형을 바이너리로 사전 컴파일합니다. 그러나
참고: 이 기능은 현재 공식 protobuf 출시에서 사용할 수 없으며 type.googleapis.com으로 시작하는 유형 URL에는 사용되지 않습니다.
|
value |
위에 지정된 유형의 유효한 직렬화된 프로토콜 버퍼여야 합니다. base64 인코딩 문자열입니다. |
심각도
문제의 심각도
열거형 | |
---|---|
unspecifiedSeverity |
기본적으로 지정되지 않은 심각도입니다. 사용하지 마세요. 버전 관리 전용입니다. |
info |
사용자에게 테스트 실행에 관한 일부 정보를 제공하는 중요하지 않은 문제입니다. |
suggestion |
사용자에게 테스트 환경 개선에 관한 힌트를 제공하는 등 심각하지 않은 문제(예: 게임 루프 사용 제안) |
warning |
중요할 수 있는 문제입니다. |
severe |
심각한 문제입니다. |
유형
문제 유형.
열거형 | |
---|---|
unspecifiedType |
기본적으로 지정되지 않은 유형입니다. 사용하지 마세요. 버전 관리 전용입니다. |
fatalException |
문제는 치명적인 예외입니다. |
nativeCrash |
네이티브 충돌 문제입니다. |
anr |
문제는 ANR 비정상 종료입니다. |
unusedRoboDirective |
사용되지 않은 robo 지시어가 문제입니다. |
compatibleWithOrchestrator |
문제는 조정자 사용을 제안하는 것입니다. |
launcherActivityNotFound |
런처 활동 찾기 관련 문제 |
startActivityNotFound |
활동 시작을 위해 사용자 제공 인텐트를 해결하는 문제 |
incompleteRoboScriptExecution |
Robo 스크립트가 완전히 실행되지 않았습니다. |
completeRoboScriptExecution |
Robo 스크립트가 완전히 실행되었습니다. |
failedToInstall |
APK를 설치할 수 없습니다. |
availableDeepLinks |
테스트 중인 앱에 딥 링크가 있지만 Robo에 제공된 링크가 없습니다. |
nonSdkApiUsageViolation |
앱이 SDK가 아닌 API에 액세스했습니다. |
nonSdkApiUsageReport |
앱에서 SDK가 아닌 API에 액세스함 (새로운 세부 보고서) |
encounteredNonAndroidUiWidgetScreen |
Robo 크롤링 중에 Android UI 위젯이 아닌 요소가 있는 화면이 하나 이상 발견되었습니다. |
encounteredLoginScreen |
Robo 크롤링 중에 로그인 화면이 1개 이상 발견되었습니다. |
performedGoogleLogin |
Robo가 Google로 로그인했습니다. |
iosException |
iOS 앱이 예외와 함께 비정상 종료되었습니다. |
iosCrash |
iOS 앱이 예외 없이 비정상 종료되었습니다 (예: 종료됨). |
performedMonkeyActions |
Robo 크롤링에 일부 monkey 작업이 수행되었습니다. |
usedRoboDirective |
Robo 크롤링에 Robo 지시어가 사용되었습니다. |
usedRoboIgnoreDirective |
Robo 크롤링에서 Robo 지시문을 사용하여 UI 요소를 무시했습니다. |
insufficientCoverage |
Robo가 앱에서 중요할 수 있는 일부 부분을 크롤링하지 않았습니다. |
inAppPurchases |
Robo 크롤링에 일부 인앱 구매가 포함되었습니다. |
crashDialogError |
테스트 실행 중에 비정상 종료 대화상자가 감지되었습니다. |
uiElementsTooDeep |
UI 요소 깊이가 기준보다 큼 |
blankScreen |
Robo 크롤링에 빈 화면이 있습니다. |
overlappingUiElements |
Robo 크롤링에서 겹치는 UI 요소가 발견됨 |
unityException |
포착되지 않은 Unity 예외가 감지되었습니다 (앱을 비정상 종료하지 않음). |
deviceOutOfMemory |
기기 메모리 부족이 감지됨 |
logcatCollectionError |
Logcat을 수집하는 중에 문제가 감지되었습니다. |
detectedAppSplashScreen |
Robo에서 Android OS 스플래시 화면이 아닌 앱에서 제공하는 스플래시 화면을 감지했습니다. |
assetIssue |
테스트의 애셋에 문제가 있습니다. |
카테고리
문제 카테고리
열거형 | |
---|---|
unspecifiedCategory |
기본 미지정 카테고리입니다. 사용하지 마세요. 버전 관리 전용입니다. |
common |
문제가 특정 테스트 종류에 국한되지 않습니다 (예: 네이티브 충돌). |
robo |
Robo 실행과 관련된 문제입니다. |
테스트 타이밍
테스트 타이밍을 세분화하여 단계를 파악합니다.
JSON 표현 |
---|
{
"testProcessDuration": {
object ( |
필드 | |
---|---|
testProcessDuration |
테스트 프로세스를 실행하는 데 걸린 시간입니다.
|
도구 실행 단계
Google에서 명시적으로 지원하지 않는 바이너리에 사용되는 일반적인 도구 단계입니다. 예: cp를 실행하여 한 위치에서 다른 위치로 아티팩트를 복사합니다.
JSON 표현 |
---|
{
"toolExecution": {
object ( |
필드 | |
---|---|
toolExecution |
도구 실행
|
멀티스텝
그룹과 동일한 구성으로 여러 단계를 실행하는 경우의 세부정보입니다.
JSON 표현 |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
필드 | |
---|---|
primaryStepId |
기본 (원본) 단계의 단계 ID로, 이 단계일 수 있습니다. |
multistepNumber |
각 단계에 부여되는 고유한 int입니다. 범위는 0(포함)에서 총 단계 수(제외)입니다. 기본 단계는 0입니다. |
primaryStep |
기본 (원래) 단계인 경우 표시합니다. |
기본 단계
그룹으로 실행된 여러 단계의 롤업 테스트 상태와 각 개별 단계의 결과를 저장합니다.
JSON 표현 |
---|
{ "rollUp": enum ( |
필드 | |
---|---|
rollUp |
그룹과 동일한 구성으로 실행된 여러 단계의 롤업 테스트 상태입니다. |
individualOutcome[] |
각 개별 단계의 단계 ID 및 결과입니다. |
개별결과
동일한 구성의 다른 단계가 있는 그룹으로 실행된 각 개별 단계의 단계 ID 및 결과입니다.
JSON 표현 |
---|
{ "stepId": string, "outcomeSummary": enum ( |
필드 | |
---|---|
stepId |
|
outcomeSummary |
|
multistepNumber |
각 단계에 부여되는 고유한 int입니다. 범위는 0(포함)에서 총 단계 수(제외)입니다. 기본 단계는 0입니다. |
runDuration |
이 단계를 실행하는 데 걸린 시간입니다. |
메소드 |
|
---|---|
|
지정된 단계의 접근성 클러스터를 나열합니다. 다음과 같은 표준 오류 코드를 반환할 수 있습니다.
|
|
단계를 만듭니다. |
|
Step을 가져옵니다. |
|
PerfMetricsSummary를 검색합니다. |
|
지정된 실행의 단계를 나열합니다. |
|
제공된 부분 항목으로 기존 단계를 업데이트합니다. |
|
xml 파일을 기존 단계에 게시합니다. |