[성능테스트] Apache - JMeter 사용법
[성능테스트] Apache - JMeter 사용법
이번 포스팅은 성능테스트를 할수있는 Apache - JMeter 사용법에 대해서 포스팅하겠습니다.
JMeter 는 url정보를 입력해주고, 상황에따라 parameter을 넣어주신 후에 테스트할 사용자 및 반복횟수를 설정하여
성능을 확인할수 있습니다. 가장 기본적인 기능이고 자세한 기능들은 아직 저도 많이 안써봐서 잘모르겠네요..
아래는 로그인부터 쿠키저장을 하고 내부에 프로세스까지 테스트하는 직접 해본 예제를 첨부하였습니다.
아파치 JMeter 홈페이지
http://jmeter.apache.org/
JMeter 다운로드 ( 최신버전 이전의 버전들 )
https://archive.apache.org/dist/jmeter/binaries/
아파치 jmeter 홈페이지에서는 참고하실수있는 기본적인 매뉴얼 등을 제공하며 jmeter을 다운로드 받으실수 있습니다.
현재 최신버전은 Apache JMeter 3.3 버전 ( Java 8 필요 ) 이며, JMeter 3.3은 아직 Java 9를 지원하지 않습니다.
저는 기존 프로젝트가 java7 버전을 사용해서, JMeter 2.13버전을 다운로드 받아 사용했습니다.
Apache-jmeter-2.13.zip 을 다운로드하였으며, 압축을 풀어줍시다.
압축을 풀어서 폴더로 들어가시면
위와같이 폴더와 파일들이 있는데요.
apache-jmeter-2.13 / bin 폴더로 들어가셔서 jmeter.bat 를 실행하시면 됩니다.
실행하시면 cmd창과 함께 JMeter이 실행됩니다. ( cmd창 종료시 JMeter도 같이 종료됩니다. )
처음 화면에서 Test Plan 오른쪽 버튼을 클릭해서
Test Plan > Threads (Users) > Throad Gruop 를 클릭하여 생성해줍니다.
Throad Gruop 에서 설정해주셔야할게 있는데요.
성능테스트에서 가장 중요한 부분입니다.
표시를 못했는데 빨간박스 위에 부분에
Action to be taken after a Sampler error 이부분은 실행 중에 에러가 발생하면 처리할 방법을 선택해주시면 되구요.
빨간박스 Thread Properties 부분을 설정해주셔야되는데
Number of Threads ( users ) : 쓰레드의 갯수를 선택합니다. 쉽게말해서 유저라고 생각하시면 되고 몇명의 유저로 테스트를 할건지? 정해주시면 됩니다.
Ramp-Up Period ( in seconds ) : 쓰레드가 여러개면 여러개의 실행시간을 users로 계산해서 실행시키는것 같습니다.
Loop Count : user가 테스트할 반복할 횟수를 넣어주시면 됩니다.
생성된 Throad Gruop 에서 우클릭하셔서
Add > Config Element > HTTP Cookis Manager 클릭해주세요.
Throad Gruop 에서 또 우클릭하셔서
Add > Logic Conrtoller > Once Only Controller 클릭해주세요.
생성된 Once Only Controller 에서 우클릭하셔서
Add > Sample > HTTP Request 클릭해주세요.
생성된 HTTP Request 에서 설정을 해줘야됩니다.
위에 빨간색으로 표시해준 부분을 설정해줘야되는데요.
HTTP Request
Name : doLogin ( 나중에 Request 가 많아져 헷갈릴수 있으니 Name을 설정해줍니다. )
Server Name or IP : localhost ( http:// 를 제외한 주소를 적어줍니다. )
Port Number : 80 ( 사용하시는 포트를 입력해주시면 되구요, )
Method : POST ( 저는 POST방식으로 로그인을 해서 POST를 설정했는데 GET방식이시면 GET으로 하시면 됩니다. )
Path : /common/doLogin.do ( 주소뒤에 해당 mapping 주소를 입력해줍니다. )
Parameters : ( 실제 로그인 하실 계정정보를 입력해주시면됩니다. )
- id : admin ( 저는 id라고 적었는데 해당 input의 id값을 적어주시면 됩니다. ex) id="user_id" 이시면 user_id )
- pw : admin ( input의 pw의 id값을 적어주시구요.)
Login을 하고 다음페이지를 확인하기 위해서
Thread Group 에서 우클릭하셔서
Add > Sample > HTTP Request 클릭해주세요.
이번에도 HTTP Request 에서 설정을 해줘야됩니다.
위에 빨간색으로 표시해준 부분을 설정해줘야되는데요.
위에서 설정을 많이해줘서 Name을 포함해서 4가지만 적어주시면 됩니다.
HTTP Request
Name : main
Server Name or IP : localhost ( http:// 를 제외한 주소를 적어줍니다. )
Port Number : 80 ( 사용하시는 포트를 입력해주시면 되구요, )
Path : /common/doLogin.do ( 주소뒤에 해당 mapping 주소를 입력해줍니다. )
*제목이나 내용과 키워드를 가지고 조회기능이 있는 리스트에는 위에 처럼 Parameters 를 넣어주면 되는데요.
제목이나 내용의 selectBox 가있으면 그값의 id와 해당값
키워드면 해당 input text 창의 id와 해당값을 적어주시고
Method 도 post or get을 설정해서 테스트를 하시면 결과 HTML값에 해당 리스트만 나오는 것을 확인할 수 있습니다.
이제 생성하는 것은 실행후 확인할수있는 Listener를 등록해주겠습니다.
위와 같이 Thread Group 우클릭을 해서
Add > Listener > View Results Tree / Summary Report / Graph Results 를 클릭해 주세요.
보통 View Results Tree / Summary Report / Graph Results 등을 많이 사용합니다.
그외에 추가로 그래프 같은것을 사용하시려면 라이브러리를 추가해주면 됩니다.
다음 아래 화면들은 Listener 등을 이용한 결과값 확인입니다.
Graph Results 리스너입니다.
전체적인 결과를 그래프로 보여줍니다.
위에사진은 다른 결과의 값을 임의로 가져왔는데요.
위에서 The Group의 값이 1씩이라 그래프가 안나와서 값을 50씩 넣어줘서 돌린 결과입니다.
The Group 데이터의 값이 크면 클수록 데이터가 잘 나옵니다.
Summary Report 리스너입니다.
결과 값이 이렇게 나오는데 순차적으로 보시면
Label : HTTP Request 의 NAME
# Samples : 서버에 요청한 횟수
Average : 평균 응답시간 (ms)
Min : 최소 응답시간 (ms)
Max : 최대 응답시간 (ms)
Error : 에러율
등 을 의미합니다.
마지막으로 View Results Tree 입니다.
다른 리스너보다는 한번에 결과를 볼수 있어서 바로 보기는 좋습니다.
빨간박스 왼편에 초록색으로 들어와있는 부분이 정상적으로 접속이 됬으면 초록색으로 표출되구요.
404에러 ip주소나 port 또는 url이 잘못됬을 경우는 빨간색 ! 표시가 나오게 됩니다.
로그인이나 그런부분에서 잘처리가 되었다면. Response data에서
화면에 해당하는 JS 및 HTML이 표출되서 확인해보시면 빠르게 파악하실수 있습니다.
그밖에 post방식으로 전송했는지 get방식인지 Prameter는 어떤걸 보냈는지 다 확인할수 있으며,
오류발생시 이것을보고 값 셋팅을 다시해주면 되겠습니다.
*만약 Reponse data가 빈화면으로 나오면 ( JMeter response data empty )
jmeter.porperties 파일을 에디터로 켜서 아래부분이 false로 되있다면 true로 변경해주세요.
jmeter.save.saveservice.response_data = true
jmeter.save.saveservice.samplerData = true
* 그 밖에 인터넷으로는 접속이 되는데 JMater으로는 404에러가 뜬다 하시면
해당 url로 접속해서 크롬 개발자모드로 header부분을 확인해주시고
JMeter에서는 The Group 하위에 add > Config Element > HTTP Header Manager 추가하신후 해당하는 Header를 넣어주시고 테스트해보시면 될수도있습니다.
The Group 을 여러개 생성해서 서비스 분야별로 정리하거나 홈페이지별로 정리해서 사용하시면 더욱 편리합니다.