기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
' AWS CLI샘플을 사용한 테스트 보고서
buildspec 파일에 지정한 테스트는 빌드 중에 실행됩니다. 이 샘플은 를 사용하여 의 빌드에 테스트를 통합 AWS CLI 하는 방법을 보여줍니다 CodeBuild. JUnit 를 사용하여 단위 테스트를 생성하거나 다른 도구를 사용하여 구성 테스트를 생성할 수 있습니다. 그런 다음 테스트 결과를 평가하여 문제를 해결하거나 애플리케이션을 최적화할 수 있습니다.
또는 AWS CodeBuild 콘솔을 사용하여 CodeBuild API 테스트 결과에 액세스할 수 있습니다. 이 샘플에서는 테스트 결과를 S3 버킷으로 내보내도록 보고서를 구성하는 방법을 보여줍니다.
테스트 보고서 샘플 실행
다음 단계에 따라 트레스트 보고서 샘플을 실행합니다.
사전 조건
-
테스트 케이스를 만듭니다. 이 샘플은 샘플 테스트 보고서에 포함할 테스트 케이스가 있다는 것을 전제로 작성된 것입니다. buildspec 파일에서 테스트 파일의 위치를 지정합니다.
지원되는 테스트 보고서 파일 형식은 다음과 같습니다.
-
오이JSON(.json)
-
JUnit XML (.xml)
-
NUnit XML (.xml)
-
NUnit3 XML (.xml)
-
TestNGXML(.xml)
-
Visual StudioTRX(.trx)
-
Visual StudioTRXXML(.xml)
이러한 형식(예: Surefire JUnit 플러그인, TestNG 또는 Cucumber) 중 하나로 보고서 파일을 생성할 수 있는 테스트 프레임워크를 사용하여 테스트 사례를 생성합니다.
-
-
S3 버킷을 만들고 이름을 기록해 둡니다. 자세한 내용을 알아보려면 Amazon S3 사용 설명서의 S3 버킷을 생성하는 방법을 참조하세요.
-
IAM 역할을 생성하고 해당 를 기록해 둡니다ARN. 빌드 프로젝트를 생성할 ARN 때 이 필요합니다.
-
역할에 다음 권한이 없는 경우 권한을 추가합니다.
{ "Effect": "Allow", "Resource": [ "*" ], "Action": [ "codebuild:CreateReportGroup", "codebuild:CreateReport", "codebuild:UpdateReport", "codebuild:BatchPutTestCases" ] }
자세한 내용은 테스트 보고 작업에 대한 권한 단원을 참조하십시오.
1단계: 보고서 그룹 생성
-
CreateReportGroupInput.json
이라는 이름의 파일을 만듭니다. -
S3 버킷에 테스트 결과를 내보낼 폴더를 만듭니다.
-
다음을
CreateReportGroupInput.json
에 복사합니다.
는 S3 버킷의 이름을 사용합니다.<bucket-name>
은 S3 버킷의 폴더 경로를 입력합니다.<path-to-folder>
{ "name": "
<report-name>
", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<bucket-name>
", "path": "<path-to-folder>
", "packaging": "NONE" } } } -
CreateReportGroupInput.json
을 포함하는 디렉터리에서 다음 명령을 실행합니다.aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
출력은 다음과 같습니다. 에 ARN 대한 를 기록해 둡니다
reportGroup
. 이 보고서 그룹을 사용하는 프로젝트를 만들 때 사용합니다.{ "reportGroup": { "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/
<report-name>
", "name": "<report-name>
", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<s3-bucket-name>
", "path": "<folder-path>
", "packaging": "NONE", "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3" } }, "created": 1570837165.885, "lastModified": 1570837165.885 } }
2단계: 보고서 그룹을 사용하여 프로젝트 구성
보고서를 실행하려면 먼저 보고서 그룹으로 구성된 CodeBuild 빌드 프로젝트를 생성합니다. 보고서 그룹에 지정된 테스트 케이스는 빌드를 실행할 때 실행됩니다.
-
이름이
buildspec.yml
인 buildspec 파일을 만듭니다 -
다음을
buildspec.yml
파일의 템플릿YAML으로 사용합니다. 테스트를 실행하는 명령이 포함되어야 합니다.reports
섹션에서는 테스트 케이스 결과가 포함된 파일을 지정합니다. 이러한 파일은 를 사용하여 액세스할 수 있는 테스트 결과를 저장합니다 CodeBuild. 작성되고 30일 후에 만료됩니다. 이러한 파일은 S3 버킷으로 내보내는 원시 테스트 케이스 결과 파일과 다릅니다.version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo Running tests -
<enter commands to run your tests>
reports:<report-name-or-arn>
: #test file information files: - '<test-result-files>
' base-directory: '<optional-base-directory>
' discard-paths: false #do not remove file paths from test result files참고
ARN 기존 보고서 그룹 대신 생성되지 않은 보고서 그룹의 이름을 지정할 수도 있습니다. 대신 이름을 지정하면 빌드를 실행할 때 가 보고서 그룹을 ARN CodeBuild 생성합니다. 이름에는 프로젝트 이름과 buildspec 파일에 지정한 이름이
project-name-report-group-name
형식으로 포함되어 있습니다. 자세한 내용은 테스트 보고서 생성 및 보고서 그룹 이름 지정 단원을 참조하세요. -
project.json
이라는 이름의 파일을 만듭니다. 이 파일에는 create-project 명령에 대한 입력이 들어 있습니다. -
다음을 JSON에 복사합니다
project.json
.source
는 소스 파일이 들어있는 저장소의 유형과 위치를 입력합니다. 에서 사용 중인 역할ARN의 를serviceRole
지정합니다.{ "name": "test-report-project", "description": "sample-test-report-project", "source": { "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE", "location": "
<your-source-url>
" }, "artifacts": { "type": "NO_ARTIFACTS" }, "cache": { "type": "NO_CACHE" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "small" }, "serviceRole": "arn:aws:iam::<your-aws-account-id>
:role/service-role/<your-role-name>
" } -
project.json
을 포함하는 디렉터리에서 다음 명령을 실행합니다. 이렇게 하면 이름이test-project
인 프로젝트가 생성됩니다.aws codebuild create-project --cli-input-json file://project.json
3단계: 보고서 실행 및 결과 보기
이 섹션에서는 이전에 만든 프로젝트의 빌드를 실행합니다. 빌드 프로세스 중에 는 테스트 사례 결과가 포함된 보고서를 CodeBuild 생성합니다. 보고서는 지정한 보고서 그룹에 포함되어 있습니다.
-
빌드를 시작하려면 다음 명령을 실행합니다.
test-report-project
는 위에서 만든 빌드 프로젝트의 이름입니다. 출력에 나타나는 빌드 ID를 기록해 둡니다.aws codebuild start-build --project-name test-report-project
-
다음 명령을 실행하여 보고서의 를 포함하여 빌드ARN에 대한 정보를 가져옵니다.
은 빌드 ID를 지정합니다. 출력 속성에 보고서를 기록ARN<build-id>
reportArns
해 둡니다.aws codebuild batch-get-builds --ids
<build-id>
-
보고서에 대한 세부 정보를 가져오려면 다음 명령을 실행합니다. 에 보고서 를
지정합니다ARN.<report-arn>
aws codebuild batch-get-reports --report-arns
<report-arn>
출력은 다음과 같습니다. 이 샘플 출력은 성공했거나, 실패했거나, 건너뛰었거나, 오류가 발생했거나, 알 수 없는 상태를 반환하는 테스트 수를 보여 줍니다.
{ "reports": [ { "status": "FAILED", "reportGroupArn": "
<report-group-arn>
", "name": "<report-group-name>
", "created": 1573324770.154, "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<amzn-s3-demo-bucket>", "path": "<path-to-your-report-results>", "packaging": "NONE", "encryptionKey": "<encryption-key>" } }, "expired": 1575916770.0, "truncated": false, "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>
:2c254862-ddf6-4831-a53f-6839a73829c1", "type": "TEST", "arn": "<report-arn>
", "testSummary": { "durationInNanoSeconds": 6657770, "total": 11, "statusCounts": { "FAILED": 3, "SKIPPED": 7, "ERROR": 0, "SUCCEEDED": 1, "UNKNOWN": 0 } } } ], "reportsNotFound": [] } -
보고서의 테스트 케이스에 대한 정보를 나열하려면 다음 명령을 실행합니다. ARN 의 경우 보고서의 를
지정합니다. 선택 사항인<report-arn>
--filter
매개변수의 경우 하나의 상태 결과(SUCCEEDED
,FAILED
,SKIPPED
,ERROR
또는UNKNOWN
)를 지정할 수 있습니다.aws codebuild describe-test-cases \ --report-arn
<report-arn>
\ --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN출력은 다음과 같습니다.
{ "testCases": [ { "status": "FAILED", "name": "Test case 1", "expired": 1575916770.0, "reportArn": "
<report-arn>
", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>
" }, { "status": "SUCCEEDED", "name": "Test case 2", "expired": 1575916770.0, "reportArn": "<report-arn>
", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>
" } ] }