

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 테스트 시나리오 생성
<a name="create-test-scenario"></a>

테스트 시나리오 생성에는 일반 설정 구성, 시나리오 정의, 트래픽 패턴 구성, 구성 검토의 네 가지 주요 단계가 포함됩니다.

## 1단계: 일반 설정
<a name="step-1-general-settings"></a>

테스트 이름, 설명 및 일반 구성 옵션을 포함하여 로드 테스트의 기본 파라미터를 구성합니다.

 **테스트 식별** 
+  **테스트 이름**(필수) - 테스트 시나리오를 설명하는 이름입니다.
+  **테스트 설명**(필수) - 테스트 목적 및 구성에 대한 추가 세부 정보
+  **태그**(선택 사항) - 최대 5개의 태그를 추가하여 테스트 시나리오를 분류하고 구성합니다.

 **예약 옵션** 

테스트를 실행해야 하는 시기를 구성합니다.
+  **지금 실행** - 생성 직후 테스트를 실행합니다.  
![\[지금 실행 옵션 선택됨\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-now.png)
+  한 **번 실행** - 특정 날짜 및 시간에 실행되도록 테스트를 예약합니다.  
![\[날짜 및 시간 선택기가 있는 한 번 실행 옵션\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-once.png)
+  **일정에 따라 실행** - cron 기반 예약을 사용하여 정기적으로 테스트를 자동으로 실행합니다. 일반적인 패턴(매시간, 매일, 매주) 중에서 선택하거나 사용자 지정 cron 표현식을 정의할 수 있습니다.  
![\[cron 패턴 선택기를 사용하여 일정 옵션에서 실행\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-recurring.png)

 **워크플로 예약** 

테스트를 예약하면 다음 워크플로가 발생합니다.
+ 일정 파라미터는 Amazon API Gateway로 전송됩니다.
+ API는 지정된 날짜에 실행되도록 예약된 CloudWatch Events 규칙을 생성하는 Lambda 함수에 파라미터를 전달합니다.
+ 일회성 테스트(한 번 실행)의 경우 CloudWatch Events 규칙은 지정된 날짜에 실행되고 `api-services` Lambda 함수는 테스트를 실행합니다.
+ 반복 테스트(일정에 따라 실행)의 경우 CloudWatch Events 규칙이 지정된 날짜에 활성화되고 `api-services` Lambda 함수는 지정된 빈도에 따라 즉시 반복적으로 실행되는 새 규칙을 생성합니다.

 **라이브 데이터** 

테스트가 실행되는 동안 실시간 지표를 보려면 **라이브 데이터 포함** 확인란을 선택합니다. 활성화되면 다음을 모니터링할 수 있습니다.
+ 평균 응답 시간입니다.
+ 가상 사용자 수입니다.
+ 성공적인 요청 수입니다.
+ 실패한 요청 수입니다.

라이브 데이터 기능은 1초 간격으로 집계된 데이터를 사용하여 실시간 차트를 제공합니다. 자세한 내용은 [라이브 데이터로 모니터링을](run-test-scenario.md#monitoring-live-data) 참조하세요.

## 2단계: 시나리오 구성
<a name="step-2-scenario-configuration"></a>

특정 테스트 시나리오를 정의하고 원하는 테스트 프레임워크를 선택합니다.

 **테스트 유형 선택** 

수행할 로드 테스트 유형을 선택합니다.

![\[실행할 테스트 유형 선택\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/test-types.png)

+  **단일 HTTP 엔드포인트** - 간단한 구성으로 단일 API 엔드포인트 또는 웹 페이지를 테스트합니다.
+  **JMeter** - JMeter 테스트 스크립트(.jmx 파일 또는 .zip 아카이브)를 업로드합니다.
+  **K6** - K6 테스트 스크립트(.js 파일 또는 .zip 아카이브)를 업로드합니다.
+  **Locust** - Locust 테스트 스크립트(.py 파일 또는 .zip 아카이브)를 업로드합니다.

 **HTTP 엔드포인트 구성** 이미지::images/test-types.png[실행할 테스트 유형 선택] "단일 HTTP 엔드포인트"를 선택하면 다음 설정을 구성합니다.

 **HTTP 엔드포인트**(필수)  
테스트하려는 엔드포인트의 전체 URL을 입력합니다. 예를 들어 `https://api.example.com/users`입니다. AWS 인프라에서 엔드포인트에 액세스할 수 있는지 확인합니다.

 **HTTP 메**서드(필수)  
요청에 대한 HTTP 메서드를 선택합니다. 기본값은 `GET`입니다. 다른 옵션에는 `POST`, `PUT`, `DELETE`, `PATCH`, 및 `HEAD`가 포함됩니다`OPTIONS`.

 **요청 헤더**(선택 사항)  
요청에 사용자 지정 HTTP 헤더를 추가합니다. 일반적인 예는 다음과 같습니다.  
+  `Content-Type: application/json` 
+  `Authorization: Bearer <token>` 
+  `User-Agent: LoadTest/1.0` 

  **헤더 추가**를 선택하여 여러 헤더를 포함합니다.

 **본문 페이로드**(선택 사항)  
POST 또는 PUT 요청에 대한 요청 본문 콘텐츠를 추가합니다. JSON, XML 또는 일반 텍스트 형식을 지원합니다. 예를 들어 `{"userId": 123, "action": "test"}`입니다.

 **프레임워크 스크립트 테스트** 

JMeter, K6 또는 Locust를 사용하는 경우 테스트 스크립트 파일 또는 테스트 스크립트와 지원 파일이 포함된.zip 아카이브를 업로드합니다. JMeter의 경우 .zip 아카이브 내의 `/plugins` 폴더에 사용자 지정 플러그인을 포함할 수 있습니다.

**중요**  
테스트 스크립트(JMeter, K6 또는 Locust)가 동시성(가상 사용자), 트랜잭션 속도(TPS), 증가 시간 및 기타 로드 파라미터를 정의할 수 있지만 솔루션은 테스트 생성 중에 트래픽 셰이프 화면에서 지정한 값으로 이러한 구성을 재정의합니다. 트래픽 셰이프 구성은 테스트 실행의 작업 수, 동시성(작업당 가상 사용자 수), 증가 기간 및 대기 기간을 제어합니다.

## 3단계: 트래픽 셰이프
<a name="step-3-traffic-shape"></a>

다중 리전 지원을 포함하여 테스트 중에 트래픽이 분산되는 방식을 구성합니다.

![\[트래픽 셰이프 구성 화면\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-overview.png)


 **다중 리전 트래픽 구성** 

하나 이상의 AWS 리전을 선택하여 로드 테스트를 지리적으로 배포합니다. 선택한 각 리전에 대해 다음을 구성합니다.

 **작업 수**   
테스트 시나리오를 위해 Fargate 클러스터에서 시작될 컨테이너(작업) 수입니다. 계정이 "Fargate 리소스에 도달" 한도에 도달하면 추가 작업이 생성되지 않습니다.

 **동시성**   
작업당 생성된 동시 가상 사용자 수입니다. 권장 제한은 작업당 vCPUs 2개의 기본 설정을 기반으로 합니다. 동시성은 CPU 및 메모리 리소스에 의해 제한됩니다.

### 사용자 수 결정
<a name="determine-number-of-users"></a>

컨테이너가 테스트에 지원할 수 있는 사용자 수는 Amazon CloudWatch에서 사용자 수를 점진적으로 늘리고 성능을 모니터링하여 확인할 수 있습니다. CPU 및 메모리 성능이 제한에 도달하는 것을 관찰하면 컨테이너가 기본 구성(vCPU 2개 및 메모리 4GB)에서 해당 테스트를 지원할 수 있는 최대 사용자 수에 도달한 것입니다.

 **보정 프로세스** 

다음 예제를 사용하여 테스트에 대한 동시 사용자 제한을 확인할 수 있습니다.

1. 사용자가 200명 이하인 테스트를 생성합니다.

1. 테스트가 실행되는 동안 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch/home)을 사용하여 CPU와 메모리를 모니터링합니다.

   1. 왼쪽 탐색 창의 **Container Insights**에서 **성능 모니터링을** 선택합니다.

   1. **성능 모니터링** 페이지의 왼쪽 드롭다운 메뉴에서 **ECS 클러스터를** 선택합니다.

   1. 오른쪽 드롭다운 메뉴에서 Amazon Elastic Container Service(Amazon ECS) 클러스터를 선택합니다.

1. 모니터링하는 동안 CPU와 메모리를 관찰합니다. CPU가 75%를 초과하지 않거나 메모리가 85%를 초과하지 않는 경우(일회성 피크 무시) 사용자 수가 많은 다른 테스트를 실행할 수 있습니다.

테스트가 리소스 제한을 초과하지 않은 경우 1\$13단계를 반복합니다. 선택적으로 컨테이너 리소스를 늘려 동시 사용자 수를 늘릴 수 있습니다. 그러나 이로 인해 비용이 더 많이 듭니다. 자세한 내용은 개발자 안내서를 참조하세요.

**참고**  
정확한 결과를 얻으려면 동시 사용자 제한을 결정할 때 한 번에 하나의 테스트만 실행합니다. 모든 테스트는 동일한 클러스터를 사용하며 CloudWatch 컨테이너 인사이트는 클러스터를 기반으로 성능 데이터를 집계합니다. 이로 인해 두 테스트가 CloudWatch Container Insights에 동시에 보고되어 단일 테스트에 대한 리소스 사용률 지표가 부정확해집니다.

엔진당 사용자 보정에 대한 자세한 내용은 BlazeMeter 설명서의 [타우루스 테스트 보정](https://guide.blazemeter.com/hc/en-us/articles/360000864389-Calibrating-a-Taurus-Test-Calibrating-a-Taurus-Test)을 참조하세요.

**참고**  
솔루션은 각 리전에 사용 가능한 용량 정보를 표시하므로 사용 가능한 한도 내에서 테스트 구성을 계획하는 데 도움이 됩니다.

 **사용 가능한 작업 테이블** 

**사용 가능한 작업 테이블에는 선택한 각 리전의 리소스 가용성이** 표시됩니다.
+  **리전** - AWS 리전 이름입니다.
+  **작업당 vCPUs ** - 각 작업에 할당된 가상 CPUs 수(기본값: 2).
+  **DLT 작업 제한** - 계정의 Fargate 제한(기본값: 2000)에 따라 생성할 수 있는 최대 작업 수입니다.
+  **사용 가능한 DLT 작업** - 리전에서 사용할 수 있는 현재 작업 수입니다(기본값: 2000).

![\[리전당 사용 가능한 작업을 보여주는 표\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-available-tasks.png)


작업당 사용 가능한 작업 또는 vCPUs 수를 늘리려면 개발자 안내서를 참조하세요.

 **테스트 기간** 

로드 테스트가 실행되는 기간을 정의합니다.

 **램프 업**   
대상 동시성에 도달하는 시간입니다. 이 기간 동안 로드가 0에서 구성된 동시성 수준으로 점진적으로 증가합니다.

 **에 대해 보류**   
대상 로드를 유지하는 기간입니다. 테스트는이 기간 동안 전체 동시성으로 계속됩니다.

## 4단계: 검토 및 생성
<a name="step-4-review-create"></a>

테스트 시나리오를 생성하기 전에 모든 구성을 검토합니다. 다음을 확인합니다.
+ 일반 설정(이름, 설명, 일정).
+ 시나리오 구성(테스트 유형, 엔드포인트 또는 스크립트).
+ 트래픽 셰이프(작업, 사용자, 기간, 리전).

검토 후 **생성을** 선택하여 테스트 시나리오를 저장합니다.

 **테스트 시나리오 관리** 

테스트 시나리오를 생성한 후 다음을 수행할 수 있습니다.
+  **편집** - 테스트 구성을 수정합니다. 일반적인 사용 사례는 다음과 같습니다.
  + 원하는 트랜잭션 속도를 달성하기 위해 트래픽 셰이프를 구체화합니다.
+  **복사** - 기존 테스트 시나리오를 복제하여 변형을 생성합니다. 일반적인 사용 사례는 다음과 같습니다.
  + 엔드포인트 업데이트 또는 헤더/본문 파라미터 추가.
  + 테스트 스크립트 추가 또는 수정.
+  **삭제** - 더 이상 필요하지 않은 테스트 시나리오를 제거합니다.