-
Jmeter 로 테스트를 해보자공부/Spring 2024. 10. 31. 00:35
Jmeter 란?
GPT :
JMeter는 Apache Software Foundation에서 개발한 오픈 소스 성능 테스트 도구입니다. 웹 애플리케이션, API, 데이터베이스, FTP 서버 등 다양한 서비스의 성능과 부하 테스트를 수행할 수 있습니다. 주로 HTTP/HTTPS 요청을 통해 웹 애플리케이션의 응답 속도, 처리량, 안정성 등을 측정하는 데 사용되지만, 다른 여러 프로토콜을 지원하여 다양한 네트워크 환경에서 테스트할 수 있습니다.
JMeter의 주요 특징은 다음과 같습니다:
1. 부하 테스트: 많은 사용자들이 동시에 접근할 때 시스템이 어떻게 반응하는지 테스트합니다. 이는 시스템의 최대 수용 능력을 파악하고 성능 한계를 확인하는 데 유용합니다.
2. 성능 테스트: 애플리케이션의 처리 속도와 안정성을 측정하여 병목 현상이나 지연을 발견하고, 최적화할 수 있는 부분을 확인할 수 있습니다.
3. 분산 테스트 지원: 여러 컴퓨터에서 테스트를 실행하여 대규모 부하 테스트를 쉽게 설정할 수 있습니다.
4. 확장성: 플러그인을 통해 기능을 추가하거나 테스트를 커스터마이징할 수 있습니다.
5. 결과 분석 및 보고: 테스트 결과를 그래프, 표 등 다양한 형식으로 시각화하여 성능을 쉽게 분석할 수 있습니다. JMeter는 주로 Java로 구현되어 있으며, GUI 환경에서 테스트 스크립트를 작성할 수 있어 비교적 사용이 쉽습니다.스레드 여러개로 반복해서 여러번 어떤 요청을 보내서 테스트할 수 있다.
Http 요청도 보낼 수 있고 Websocket 요청도 보낼 수 있는데 웹소켓 요청은 추가적인 라이브러리 설치가 필요하다고 한다.
설치하기
https://jmeter.apache.org/download_jmeter.cgi#binaries
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
Java 가 깔려있어야한다. Java 없다면 다른 블로그를 참고..난 이미 깔려있다
위 사이트에 접속해서 깔면 된다
개발자라면 이정돈 알아서 하겠지?Window 기준 설명 :
나는 zip 파일 다운받아서 압축 풀었다.
그리고 powershell 로 하위의 bin 에서
./jmeter
이렇게 하면 GUI 로 Jmeter 가 실행되는 걸 볼 수 있다! 파워쉘을 끄면 gui 도 꺼진다 주의
설정하기
나는 이미 다 설정 한 화면이다. 왼쪽에 여러가지 요소들이 보인다.
기본적으로 내가 써본 것들의 설정을 소개한다.
일단 구조가
Test Plan - Thread Group - HTTP Request - (Assertion, Listener, Processor)
- HTTP Header ManagerTest Plan 하위에 Thread Group, HTTP Header Manager 가 있고
Thread Group 밑에 HTTP Request 가 있고 그밑에 Assertion...
이런식으로 트리 구조이다
설정하는 방법은 Test Plan 부터 만들고
Test Plan 에서 add 해서 Thread Group 과 HTTP Header Manager 를 추가하고 이렇게 하위에 계속 추가하면 된다
Test Plan 의 이름 정도는 스스로 설정하자
나는 shop-api 프로젝트의 api 를 테스트 하려고 shop-api test 라고 지었다.
설정 후 저장하면 sho-api test.jmx 파일로 나중에 불러오기도 된다.
Thread Group 설정
부하를 얼마나 줄 것인지 설정하면 된다. 아래의 설정은 1초에 50번 요청을 2번 반복 한 설정이다.
읽어보면 무한반복, 에러났을때 계속 할건지 멈출건지 등등의 설정이 보인다.
HTTP Header Manager 설정
Http 요청을 보낼 때 Header 에 들어가는 값을 설정하면 된다. 나는 Content-Type 을 application/json 으로 설정했다.
쿠키 설정, 토큰 설정 등등 스스로 추가하면 되겠다.
HTTP Request 설정
포로토콜 (http, https, ws 등) 설정할 수 있고
IP, Port 번호 설정, Path 설정
그리고 BodyHTTP 요청을 보내봤으면 다 알거라고 생각
View Results Tree
결과를 확인할 수 있는 부분, 가장 중요할듯
여기서 추가할 수 있다
HTTP Request 우클릭 - Add - Listener - View Results Tree
초록색 세모 ▷ 이걸 누르면 요청 보낼 수 있다.
아까 설정한대로 요청이 보내진다.
그리고 밑의 View Results Tree, Summary Reposrt, View Results in Table 에 로그가 쌓인다
오른쪽 톱니바퀴와 빗자루가 합쳐진 이미지를 누르면 로그 삭제 가능
요청 엄청 보냈더니 이렇게 에러가 난다. 어떻게 해결하지??
그리고 Response data 를 확인해봤을 때 동시성 문제가 발생
이건 Lock 으로 추후에 해결할 예정이다.
Response Assertion 으로 response 에 대한 검증도 할 수 있고 json 에서 변수를 가져와서 두 번째 요청을 보낼 때 쓸 수도 있다.
json 에서 price 변수를 가져옴 두 번째 요청을 할 때 price 변수의 값에 + 1 을 해서 요청을 보내도록 설정
동시성 문제로 100번 +1 요청을 보내도 +100 이 되지않는다.
'공부 > Spring' 카테고리의 다른 글
Facade 패턴과 Factory 패턴 (1) 2024.11.10