Jmeter는 순수 Java로 만들어진 아파치의 오픈 소스 소프트웨어로, 기능의 동작을 로드하고 성능을 측정할 수 있는 테스트 도구이다.
공식 사이트에서 Jmeter의 Binary 파일을 다운 받을 수 있다. Jmeter를 사용하기 위해서는 Java8 버전 이상이 설치되어 있어야 한다.
파일을 다운 받아 압축을 해제하고 bin 폴더에서 .\jmeter
커맨드를 실행하면 손 쉽게 시작이 가능하다.
위와 같은 화면이 뜬다면 성공적으로 실행이 된 것이다.
Jmeter를 사용하기 위해 간단하게 테스트에 사용하는 용어를 알아보자.
Thread 별로 하나의 요청을 보내게 되는데 결국 테스트 가상 유저, 테스트 시나리오를 세팅하는 부분인 셈이다.
위와 같이 설정을 했다면, 총 10명의 유저가 테스트에 참가를 할 것인데 20초 동안 10명의 유저를 생성할 것이다. 그리고 한 유저 당 10번의 반복을 수행하게 된다.
그러면 총 1명의 유저가 2초동안 10번의 요청을 보내게 되고, 다음 유저가 또 2초 동안 10번의 요청을 보내는 방식으로 테스트가 이뤄지는 것이다.
만약 Number of Thread 값을 100, Ramp-up period를 50, Loop Count를 100으로 지정했다면, 50초 동안 100개의 쓰레드를 생성해야 하니 1초에 2개의 쓰레드가 생성될 것이고, 이 2개의 쓰레드는 각각 100번의 요청을 보내게 될 것이다.
사용자의 액션을 지정하는 Sampler를 정의하자. HTTP Request를 보내서 테스트를 할 것이기 때문에 이를 선택한다.
요청을 보낼 서버의 IP, Port를 명시하고 어떤 메서드와 URI로 HTTP Request를 보낼 지 설정한다. 역시 쿼리 스트링이나 메시지 바디, 파일 등을 설정할 수가 있다.
실제 테스트 진행 시 응답 결과를 Listener를 통해 확인할 수 있다.
간단하게 View Result Tree, Summary Report, Aggregate Report, View Result in Table 리스너를 추가해서 테스트를 해보자. VUser 30, Ramp-up 30초, 10번 반복으로 테스트를 진행해 보았다.
각 요청마다 결과를 보여준다.
요청 결과를 요약해서 보여준다.
Average는 평균적으로 응답에 3ms가 소요됨을 나타낸다.
Throughput은 초당 몇 개의 요청을 처리했는지를 보여준다.
이외 나머지는 충분히 추론 가능하기에 어떤 값인지 따로 설명은 하지 않겠다.
요청 결과를 집계해서 보여준다.
Median은 소요 시간의 중앙값을 의미한다.
90% Line은 총 요청의 90%가 5ms 안에 처리되었음을 의미한다. 즉, 300개의 요청을 보냈을 때 270개의 요청은 5ms 안에 모두 응답이 왔다는 소리이다. 평균적으로 95%, 99%의 수치를 참조한다고 한다.
이외 나머지는 충분히 추론 가능하기에 어떤 값인지 따로 설명은 하지 않겠다.
Table 형식으로 각각의 결과를 표시해준다.
응답 데이터를 검증하기 위해 Assertion을 추가할 수 있다.
Test Response, Response Code, Response Message, Response Headers 등등.. 여러 값들을 조건을 넣어 검증할 수 있다. 한번 응답 텍스트를 검증해보자.
Assertion Results 리스너를 추가해서 확인할 수 있고, 기존의 리스너에도 테스트 실패를 표시해준다.
Assertion Result에는 Assertion에 실패한 원인을 분석할 수 있다.
View Resilts Tree를 보면 테스트에 통과하지 못했음을 알 수 있다. 다른 리스너에도 Error의 %가 올라간다던지 등으로 표시된다.