JMeter라고 하는 아주 괜찮은 툴이 있습니다.
사용법을 잘 아는것은 아니지만, 그래도 가끔 HTTP 테스트용으로 유용하기에 사용법을 간단하게 정리해둡니다.
# 전제 조건
1. http://localhost:7001/fmsclient/request.jsp 파일이 존재합니다.
2. request.jsp는 userId, name, age, addr을 parameter로 받아서 출력합니다.
# 작업 순서
1. JMeter 홈페이지에가서 JMeter를 다운로드 받습니다.
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
2. 압축을 풀면 아래 그림과 같은 파일/폴더들이 나타납니다.
3. bin 폴더에 보면, "jmeter.bat" 를 실행하면 아래 그림과 같이 JMeter 창이 나타납니다.
"Test Plan" 이라고 나옵니다. 여기에 JMeter에서 실행될 각 Test들에 대한 전체적인 세팅을 합니다.
체크박스 두개가 있는데,
Run Thread 어쩌구 하는 체크박스는 Test Plan에 생성된 Thread Group(뒤에 설명하겠지만 실제 작업 단위이다.)을
동시에 실행할 건지, 한 번에 하나씩 실행할 건지 여부를 나타내고,
Functional Test 어쩌고 한거는 실행 결과를 파일로 저장할지 여부를 나타냅니다.
4. 이제 실제 작업 단위인 Thread Group을 추가합니다.
아래그림처럼, Test Plan을 선택하고 마우스 오른쪽 버튼을 클릭해서 Add > Thread Group을 선택합니다.
5. Thread Group을 추가하면 아래 그림과 같이 나타나는데, 각 항목을 적절하게 설정합니다.
이름을 지정하고, 중간에는 에러나면 어떻게 할 건지를 나타내는 부분이 잇고,
그 아래 부분에 실제 작업을 수행하는 Thread의 개수와 시간들에 대해서 설정하도록 되어 있습니다.
Number of Threads(users) 는 실행할 Thread의 수, 즉, 몇명의 사용자가 동시에 호출을 하는지 여부를 나타냅니다.
Ramp-Up Period(in seconds)는 전체 쓰레드가 전부 실행되는데까지 걸리는 시간을 나타냅니다.
예를 들어, Number of Thread가 5개이고, Ramp-Up Period가 15초 일 경우에,
첫번째 thread가 수행된 후 다음 thread가 수행될때까지 3초를 대기한단 얘기.
즉, 전체 5개 Thread가 15초동안 실행이 되려면, 3초마다 하나씩 실행이 되어야 된다는 겁니다.
Loop Count는 각 Thread가 몇번씩 실행을 할 것인지를 나타냅니다. Forever에 체크하면 무한루프입니다.
6. Thread Group을 추가했으면, 이제 실제 Thread로서 어떤 동작을 하는지에 대한 설정을 추가합니다.
먼저, 아래 그림처럼 Add > Config Element > HTTP Request Defaults 를 선택합니다.
이 HTTP Request Defaults는 Thread가 HTTP 요청을 할 때 어떤 정보를 갖고 요청을 할것인지에 대한 전체적인 설정을 합니다.
7. HTTP Request Defaults를 추가하고, 아래 그림과 같이 설정을 합니다.
여기에서 설정한 정보들은 Thread 들이 HTTP 요청을 할 때마다 적용이 되는 내용입니다.
Name을 입력하고, Web Server 항목에 각 값을 입력합니다.
Server Name or IP : 도메인명 또는 IP를 입력(전체 URL을 입력하지 않습니다.)
Port Number : 포트 입력
Timeouts 각 항목을 설정합니다.
HTTP Request의 각 항목을 입력합니다.
Path : 호출할 전체 URL에서 IP 또는 도메인명과 Port 를 제외한 나머지 URL을 입력합니다.
Send Parameters With the Request : 호출할 URL에 넘겨줄 parameter를 설정합니다.
8. 이제, 실제 HTTP 요청을 날릴 개체를 추가합니다.
아래 그림과 같이, Add > Sampler > HTTP Request를 선택합니다.
9. 아래 그림과 같이 나타나는데, 이 HTTP Request는 위에서 추가한 HTTP Request Defaults 라는
Config Element의 설정값들을 상속받아서 사용하기 때문에, 따로 설정할 내용은 없습니다.
10. 이제 데이터 요청하는 개체를 만들었으니, HTTP 요청의 결과를 받는 개체들을 추가합니다.
아래 그림과 같이, Add > Listener > View Results Tree, Add > Listener > Graphic Results 를 추가합니다.
11. 아래 그림과 같이 Listener들이 추가됩니다.
12. 실행을 위한 준비는 끝났고, 아래 그림과 같이 Run > Start 를 클릭하여 방금 추가한 Thread Group을 실행합니다.
13. 실행이 끝나고 나면, 아래 그림과 같이 View Results Tree를 선택하면,
Thread가 실행한 각 요청(HTTP Request Sampler)마다 응답 데이터를 확인할 수 있습니다.
14. Graph Results를 선택하면 아래 그림과 같이, 각 요청마다의 처리 시간들에 대한 정보를 확인할 수 있습니다.