> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/web/testing-tools/jmeter/test-plan.md).

# Test Plan

## Test Plan

`JMeter`에서 테스트를 진행하려면 Test Plan을 작성해야 한다.

이 문서에서는 Test Plan을 작성하는 방법에 대해서 살펴본다.  &#x20;

### 테스트 이름 작성

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2Fw7I4K3ETenBgNhhotLNa%2Fimage.png?alt=media&amp;token=d84eb59e-c684-47cd-9fe9-ceaff81f913b" alt=""></div>

테스트 계획의 이름은 최초 생성되어 있는 Test Plan을 클릭하여 나오는 화면에서 변경할 수 있다. 작성 후 바로 변경되지 않고 한 박자 느리게 변경된다. &#x20;

### 사용자 생성

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FDK0I0DvqC6HLUmLqvgTZ%2Fimage.png?alt=media&amp;token=1af0be38-8007-443c-b3eb-5e97fc8d748d" alt=""></div>

사용자는 테스트 계획을 우클릭하여 `Threads(Users)` 메뉴 내부에서 추가한다. 기본적으로 존재하는 `Threads` 종류는 다음과 같다.

* Thread Group - 일정한 수의 사용자 그룹
* setUp Thread Group - 지속적으로 증가하는 사용자 그룹  &#x20;
* tearDown Thread Group - 지속적으로 감소하는 사용자 그룹

플러그인을 설치하면 다양한 형태의 사용자 그룹을 생성할 수 있다.

{% content-ref url="/pages/FkNqpisyyrWcV2noct7H" %}
[Plugin 설치](/web/testing-tools/jmeter/plugin.md)
{% endcontent-ref %}

![](https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FFfsKHB6YoW8mVOdXQrH4%2Fimage.png?alt=media\&token=65fe89d5-0bbb-4637-9bac-e49f94b23d0a)

위 그림은 다음과 같이 설정한 결과이다.

* Number of Threads(users) - 총 사용자 10명
* Ramp-up period(seconds) - 사용자 생성 시각 5초
* Loop Count - 동작 반복 횟수 1회

### 요청 생성

![](https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2F9YafERtgG77XIwKbp7q7%2Fimage.png?alt=media\&token=4fce6ed6-5fa1-489e-95c3-2e4e1452c18c)

사용자를 생성했다면 사용자가 해야 할 작업을 알려주어야 한다. 일반적인 웹 요청은 `Add` - `Sampler` - `Http Request`를 생성하여 처리한다.&#x20;

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FYNJGi6pev1bc2gxHGnPh%2Fimage.png?alt=media&amp;token=78c8677d-64c5-498e-ad24-09dbef9a2662" alt=""></div>

위 그림은 설정이 완료된 화면이며, 요청 주소를 각각의 영역에 나누어 작성한다(하단 그림 참조).

![ ](https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FxXIkewVM54V7qW3eU9Wn%2Fimage.png?alt=media\&token=403188e2-9cfa-4720-bc54-6c5e65a1a52d)

### 접속 간격 설정

사용자가 현재는 1회만 요청하도록 되어있으나 경우에 따라 지속적으로 요청을 해야 하는 경우도 있다. 이 경우 Timer를 설정하여 접속 사이의 지연 시간을 설정할 수 있다.  &#x20;

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FN945k6A6Bj0SGK8Wue0s%2Fimage.png?alt=media&amp;token=0ec94493-f81b-473f-9c26-a55471353c61" alt=""></div>

Contant Timer는 정해진 시간 동안 요청과 요청 사이를 정지시키는  기능을 가지고 있다.

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2FW1CLCHOcIwzPxHQcqW83%2Fimage.png?alt=media&amp;token=050e887b-01f1-4d31-a1b6-af5a4c5adc3d" alt=""></div>

위 그림은 요청 간격을 3000ms(3초)로 설정한 화면이다. 2회 이상의 요청을 수행할 경우 지정한 간격만큼 대기한다.   &#x20;

### 결과 추가&#x20;

테스트를 수행했다면 테스트의 결과를 확인할 수 있어야 하므로 원하는 대상을 선택하여 `Listener`를 추가한다.&#x20;

* 사용자에 대한 전체 결과를 보고 싶을 경우 Thread를 우클릭하여 Listener를 추가한다.     &#x20;
* 요청에 대한 결과만 보고 싶을 경우 Sampler를 우클릭하여 Listener를 추가한다.    &#x20;

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2Fx03mf8cNeeQwbkqEB0rd%2Fimage.png?alt=media&amp;token=be8f6753-22ff-4059-bd79-a800f48001f3" alt=""></div>

위 사진은 **index 페이지 요청**에 요약 리포트(Summary Report)를 추가하는 장면이다. 추가하면 다음과 같이 `Listener`가 추가되는 것을 확인할 수 있다.      &#x20;

<div align="left"><img src="https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_TNZwLuHV9ipYLbvRq%2Fuploads%2Fof9p4nOHr3M4Sb8Vh3X4%2Fimage.png?alt=media&amp;token=c4c959a6-03fc-47de-a0fd-c6149c007291" alt=""></div>

### 테스트 실행

준비가 다 되었다면 상단의 재생버튼(<mark style="color:green;">▶</mark>)을 누르거나 `Run` -  `Start` 또는 단축키 `CTRL+R` 을 눌러 실행한다.

### 테스트 종료  &#x20;

테스트는 생성한 작업이 모두 진행되면 자동으로 종료한다. 강제로 중지하고 싶다면 실행중에 STOP 메뉴를 선택하여 중지할 수 있다.

### 테스트 저장

작성한 테스트를 나중에 불러올 수 있도록 저장한다. 저장할 경우 `.jmx`파일 형태로 저장된다.&#x20;
