Apache 재단의 오픈소스 라이브러리인 JMeter
는 다음과 같은 테스트 방식을 지원한다.
JMeter
는 Multi-Threading
으로 부하 테스트도 가능하고, 시나리오대로 트래픽을 발생시켜서 시나리오 테스트도 가능하다. 또한 CLI
도 지원하기 때문에 CI/CD
를 연동하기도 편리하고 UI를 사용하는 것보다 메모리나 시스템 리소스를 적게 사용한다.
Thread Group
: 한 스레드에 유저 한 명Sampler
: 임의의 유저가 어떤 액션을 해야 하는가에 대해서 나타낸다.Listener
: 요청에 대한 응답을 보고 응답 하나하나의 시간을 계산하거나 응답들을 조합해 그래프를 그린다.Configuration
: Sampler나 Listener가 사용할 설정값(쿠키, JDBC 커넥션 등)Assertion
: 응답을 받았을 때 해당 응답이 성공적인지 확인하는 방법을 제공한다.(응답 코드, 본문 내용 등)jmeter.apache.org/download_jmeter.cgi
위 사이트에서 jmeter
다운로드 및 압축 해제
Binaries
$ brew install jmeter
$ open /usr/local/bin/jmeter
설치까지 끝났다면 이제 지금까지 만든 프로젝트와 Jmeter를 이용해서 실제로 사용을 해보자.
테스트할 프로젝트를 실행해서 API를 응답할 수 있는 상태로 만든다.
다른 부분을 테스트
해야한다면 Sampler부터 변경
해서 만들어주면 된다. Number of Threads
: 스레드 개수
Ramp-up period
: 스레드 개수를 만드는 데 소요할 시간
Loop Count
: 반복 횟수.
infinite
항목을 체크하면 위에 선언한 스레드 개수로 무한정 요청한다. ✅ 이번 포스팅은 HTTP API 테스트를 기준으로 작성하기에 HTTP Request Sampler를 만들지만 만약 다른 것을 테스트할 예정이라면 목적에 맞는 Sampler를 선택하면 된다.
Protocol
: HTTP, HTTPS 프로토콜
Server Name or IP
: 테스트할 API의 호스트명 혹은 IP 주소
Port Number
: 포트 번호
HTTP Request
GET
: HTTP 메서드 선택 GET 외에도 POST, DELETE, PUT 등 다양한 메서드 제공PATH
: 테스트할 API Path 여기서는 스터디 조회를 할 것이다.Parameters, Body Data, Files Upload
: QueryString으로 파라미터를 보내거나, MessageBody를 직접 입력하거나 파일 업로드를 할 수도 있다.
다양한 테스트 결과 리스너를 만들 수 있다. 내가 보고자 하는 형태의 리스너를 선택해 확인하면 된다.
리스너는 단일 선택이 아니기에 여러 리스너를 추가해서 확인할 수도 있다.
테스트를 실행시켜보면 다음과 같이 API 요청에 대해서 요청 시간, 프로토콜, 응답 결과 등 각종 데이터들을 종합해서 Listen 해주고 볼 수 있다.
JMeter의 테스트를 최초 실행 시에는 xxx.jmx 파일을 저장하라고 하는데, 이 파일을 이용해 CLI로 사용할 수가 있다.