Search
Duplicate

성능 테스트

목차

JMeter 소개

성능 측정 및 부하테스트 기능을 제공하는 오픈소스 자바 애플리케이션
Apache 재단의 오픈소스 라이브러리인 JMeter는 다음과 같은 테스트 방식을 지원한다.
웹 - http, https
SOAP, REST 웹 서비스
FTP
LDAP
Mail(SMTP, POP3, IMAP)
데이터 베이스(JDBC 사용)
그리고, Multi-Threading으로 부하테스트도 가능하고, 시나리오대로 트래픽을 발생시켜서 시나리오 테스트도 가능하다. 그리고 JMeter는 CLI도 지원하기 때문에 CI/CD를 연동하기도 편리하고 UI를 사용하는 것보다 메모리나 시스템 리소스를 적게 사용한다.

주요 개념

Thread Group: 한 쓰레드에 유저 한명 즉, 유저의 그룹으로 동시에 여러 유저가 요청을 보내는 경우를 세팅할 수 있다.
Sampler: 임의의 유저가 어떤 액션을 해야하는가에 대해서 나타낸다.
Listener: 요청에 대한 응답을 보고 응답 하나하나의 시간을 계산하거나 응답들을 조합해 그래프를 그린다.
Configuration: Sampler나 Listener가 사용할 설정 값(쿠키, JDBC 커넥션 등)
Assertion: 응답을 받았을때 해당 응답이 성공적인지 확인하는 방법을 제공한다.(응답 코드, 본문 내용등)

참고: Gatling

JMeter를 대체할 수 있는 오픈소스 라이브러리

JMeter 설치

Windows 기준

2. 압축해제 된 폴더/bin/jmeter 실행

Mac 기준

1.
brew를 이용해 jmeter 설치
$ brew install jmeter
Bash
복사
2.
설치한 jmeter 실행
$ open /usr/local/bin/jmeter
Bash
복사

실행 결과

JMeter 사용

설치까지 끝났다면 이제 지금까지 만든 프로젝트와 Jmeter를 이용해서 실제로 사용을 해보자.
Mac 기준으로 설명을하며, 테스트를위해 사전에 준비해야할 작업들도 설명한다.
여기서는 다음 git repository의 49204b61fe4445a1e14573b6c08f84969fa07b76 commit 을 기준으로 사용한다.

Previous

1.
테스트할 프로젝트를 실행해서 API를 응답할 수 있는 상태로 만든다.
→ 여기서는 HTTP Request테스트를 기준으로 작성하며 만약 다른 부분을 테스트해야한다면 Sampler부터 변경해서 만들어주면 된다.
2.
JMeter를 실행하는데, 여기서는 맥OS 기준이기에 brew로 설치했다는걸 가정한다.
$ open /usr/local/bin/jmeter
3. 미리 테스트할 사전 데이터 준비
여기서는 기본적으로 GET 테스트를 할 예정이기에 미리 조회할 데이터를 POST로 하나 생성해준다.
그 방식은 curl, postman, db에 직접 query등 다양한데, 나는 강의에서 사용한것과 동일하게 httpie라는 HTTP client 도구를 사용한다.
만약, 해당 도구를 사용한다면 다음 명령어로 Study를 하나 생성해준다.
http post localhost:8080/study limitCount=10 name=match
정상적으로 생셩되었다면 위와같이 결과가 나올 것이다.

Thread Group 만들어보기

1.
JMeter에서 Thread Group 생성
2.
테스트할 쓰레드 및 반복횟수 설정
Number of Threads: 쓰레드 개수
Ramp-up period: 쓰레드 개수를 만드는데 소요할 시간
Loop Count: 반복횟수.
⇒ infinite 항목을 체크하면 위에 선언한 쓰레드 갯수로 무한정 요청한다.
3.
Sampler 만들기
여기서는 HTTP API 테스트를 기준으로 작성하기에 HTTP Request Sampler를 만들지만 만약 다른 것을 테스트 할 예정이라면 목적에 맞는 Sampler를 선택하면 된다.
4.
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를 직접 입력하거나 파일 업로드를 할 수도 있다.
5.
Listener 만들기
다양한 테스트 결과 리스너를 만들 수 있다. 내가 보고자하는 형태의 리스너를 선택해 확인하면 된다.
리스너는 단일선택이 아니기에 여러 리스너를 추가해서 확인할 수도 있다.
6.
Listener 결과 확인
테스트를 실행시켜보면 다음과 같이 API 요청에 대해서 요청시간, 프로토콜, 응답결과등 각종 데이터들을 종합해서 Listen해주고 볼 수 있다.

CLI 사용하기

JMeter의 테스트를 최초실행시에는 xxx.jmx 파일을 저장하라고하는데, 이 파일을 이용해 CLI로 사용할 수가 있다.
이러한 jmx 파일은 다음 커맨드를 통해 바로 사용할 수 있다.
jmeter -n -t 설정 파일 -l 리포트 파일 → jmeter -n -t Study.jmx -l studyJmeter.log
terminal 에 cli command로 jmeter 실행
test output studyJmeter.log파일 확인

다음 챕터로

이전 챕터로