본문 바로가기

Tips

JMeter 설치 & 사용 법

JMeter ?

Apache에서 만든 자바로 만들어진 웹 애플리케이션 성능 테스트 오픈 소스.
JMeter를 활용하면 아래와 같은 테스트를 할 수 있다.

-웹 : HTTP, HTTPS, (Java, NodeJS, PHP, ASP.NET .. )
- SOAP / REST 웹 서비스
- FTP
- JDBC
- LDAP
- JMS - Message-oriented middleware (MOM)
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Object

 

 

#1. 설치

https://jmeter.apache.org/download_jmeter.cgi 

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

입장 후 zip 파일 클릭.

설치한 이후 압축 해제 폴더 안에서 bin 폴더 내의 jmeter.bat 파일 실행

해당 파일을 실행하면 CMD 창과 아래의 이미지가 실행되며 별도의 GUI가 실행된다.

https://jmeter-plugins.org/get/

위의 url을 통해 jmeter-plugins-manager-1.7.jar 파일이 다운받아지는데, 이 파일을 사진의 경로로 이동.

실행중인 JMeter를 재실행 후 Optionㄴ - Plugins Manager 를 클릭.

이후 Available Plugins 탭 > 검색창에 jpgc-graphs-basic 입력 > 3 Basic Graphs 체크 > Apply 클릭.

재실행 후 아래 사진과 같이 플러그인이 설치되었는지 확인.

 

[JMeter 용어]

1. Thread Group : 테스트에 사용될 Thread 개수, Thread 1개당 사용자 1명.
2. Sampler : 사용자의 액션 (ex. 로그인, 게시물 작성, 게시물 조회)
3. Listener : 응답을 받아 리포팅, 검증, 그래프 등 다양한 처리
4. Configuration : Sampler 또는 Listener가 사용할 설정 값 설정.
5. Assertion : 응답 확인 방법

 

 

#2. 테스트

1. Test Plan 우클릭 -> Add -> Config Element -> User Defined Variables
2. 테스트할 정보 입력
- address : 테스트할 서버 주소 (ex. localhost)
- port : 테스트할 서버 포트 (ex.443, 8080, 80)
- userCnt : 테스트 사용자 수 (1000명)

- timeSec : 실행시간_초 (50초)
- loopCnt : 반복횟수 (2회 반복)
- encoding : 인코딩 (UTF-8)


3. Test Plan 우클릭 -> Add -> Listner -> jp@gc-Transections per Second 클릭

 

#A. Thread Group

테스트할 유저 수를 설정한다.

 


4. Test Plan 우클릭 -> Add -> Threads > Thread Group


5. Thread Group 클릭 > Thread Properties 입력

- Number of Threads (테스트 사용 수) : 쓰레드 개수
=> 1000명의 사용 수 

- Ramp-up period(seconds) : 설정한 쓰레드 개수만큼 작동하기까지 소요되는 시간.
=> 50초 동안

- Loop Count (반복 수) : 각 각의 쓰레드가 테스트를 반복하는 횟수
=> 2회

>> JMeter가 50초 동안 1000개의 쓰레드를 시작하고 각 쓰레드는 테스트를 2번 반복한다.

 

#B. Sampler 

A에서 사용자를 만들었으니, 사용자가 해야할 행동을 정의한다.

 


6. Thread Group 우클릭 > Add > Sampler > HTTP Request 클릭


7. Thread Group > Http Reqeust > Basic 탭

- Protocol : http 또는 https 입력
=> http

- Server Name or IP : 테스트하려는 도메인 또는 IP
=> localhost

- Port Number : 테스트하려는 서버의 포트
=> 8080

- Path : 테스트하려는 서버의 Path (endpoint path)
=> /books/1/77/SpringDataJPA

- HTTP Request : 테스트하고자 하는 요청.(CRUD)
=> GET

- Content encoding : UTF-8

8. Thread Group > Http Request > Advanced 탭 > Implementation : HttpClient4 선택

- Java : JVM에서 제공하는 HTTP 구현을 사용.
- HTTPClient4 : Apache HttpComponents HttpClient 4.x 사용.

 

#C. Listener

사용자의 행동인 Sampler가 받아오는 리턴 값을 바탕으로, 그래프 or 레포팅을 만들어주는 역할.


9. Http Request 우클릭 > Add > Listener > Summary Report 

 

10. Http Request 우클릭 > Add > Listener > View Result Tree 


11. Http Request 우클릭 > Add > Listener > View Results in Table


12. Http Request 우클릭 > Add > Listener > Aggregate Report

 

#D. Assertion

응답 값이 제대로 왔는지 검증하기 위해 Assertion 추가.

 

12. HTTP Reqeust 우클릭 > Add > Assertions > Response Assertion


13. Response Assertion -> Patters to Test 더블 클릭 > 테스트하는 메서드의 응답에 포함되는 필드 적음.


14. 현재 작업 결과 모습


15. 설정 적용 후 실행.

 


16. 결과 (Listener)


A. View Results Tree

하나의 리퀘스트의 테스트 시작 시간, 응답 속도 등의 정보가 포함되어 있음.

Response Data를 눌리면 응답에 담긴 내용 확인 가능.

 

B. View Results in Table

View Result Tree를 테이블 형식으로 보여주며 데이터는 동일 )

 

C. Summary Report 

View Results 에 대한 통계를 나타낸다.

- Label : Sampler 이름
- # Samples : 샘플 수  ( Number of Threads * Ramp-up period )
- Average : 평균 응답 시간
- Min : 응답 최소 시간
- Max : 응답 최대 시간
- Std. Dev. : 표준 편차
- Error % : 에러 율
- Throughput : 분당 처리량
- Received KB/sec : 초당 받은 데이터 량
- sent KB/sec : 초당 보낸 데이터량
- Avg. Bytes : 서버로부터 받은 데이터 평균


D. Aggregate Report 

Summary Report에 비해 90%, 95%, 99% 의 컬럼이 추가되어 좀 더 정확하게 걸리는 시간을 알 수 있다.

- Label : Sampler 이름
- # Samples : 샘플 수  ( Number of Threads * Ramp-up period )
- Average : 평균 응답 시간
- Median : 응답 시간 중앙값
- 90% Line : 90%의 샘플은 해당 값보다 적은 시간 내에 끝나고 10%는 더 걸린다.
- 95% Line : 95%의 샘플은 해당 값보다 적은 시간 내에 끝나고 5%는 더 걸린다.
- 99% Line : 99%의 샘플은 해당 값보다 적은 시간 내에 끝나고 1%는 더 걸린다.
- Min : 응답 최소 시간
- Maximum : 응답 최대 시간
- Std. Dev. : 표준 편차
- Error % : 에러 율
- Throughput : 분당 처리량
- Received KB/sec : 초당 받은 데이터 량
- sent KB/sec : 초당 보낸 데이터량

'Tips' 카테고리의 다른 글

QueryDsl 메서드 모음  (0) 2023.05.23
JUnit Test 코드 TIP  (0) 2023.05.16
Spring Data JPA VS JPQL and QueryDsl  (0) 2023.05.15
Mapstruct @Mapping(target = , source = )  (0) 2023.05.13
Spring Data JPA - 자동 완성 메서드 규칙  (0) 2023.05.12