Jmeter는 Apache에서 재공하는 웹사이트 성능 측정을 할 수 있는 오픈소스 라이브러리다.
[다운로드 링크]
만약 자바가 설치되어 있지 않다면, JDK 설치도 해줘야 한다.
Jmeter 실행은 다운로드 받은 폴더 압축을 풀고, bin 안에서 cmd창을 열어 jmeter.bat을 실행하면 된다.
Jemeter로 사용할 수 있는 여러 플러그인들이 있으며, 이는 ext 폴더 안에 jar 파일을 추가해주면된다.
- Jmeter Plugins Manager : [링크]
- Transactions Per Second Plugin : [링크]
부하 테스트 진행
1. Use Defined Variables 설정
Test Plan 오른쪽 마우스 클릭 → Add → Config Element → User Defined Variables
아래 'Add'를 통해 변수들을 등록할 수 있다.
웹사이트 접속에 필요한 ip, port를 입력하고, 추후 사용할 접속 유저 수, 실행 시간, 인코딩, 반복 횟수 등을 등록해둔다.
(server_ip와 server_port Value에는 본인이 테스트 할 실제 ip와 port를 직접 입력해주면 된다)
2. Thread Group 설정
우리가 실제로 테스트 해 볼 스레드를 만드는 곳이다.
Test Plan 오른쪽 마우스 클릭 → Add → Listener → jp@gc - Transactions per Second
아까 등록해 둔 접속 유저 수, 실행 시간, 반복 횟수 값을 '${}'로 적용시킬 수 있다.
해당 스레드를 실행 시킬 때 유저와 시간 및 횟수를 설정해두는 곳이다.
3. Http Request 설정
스레드 상에서 Http Request를 테스트 해보기 위함이다.
Thread Group 오른쪽 마우스 클릭 → Add → Sampler → HTTP Request
Basic에는 기본 정보를 입력한다. 프로토콜 정보와 유저 정의로 입력한 ip와 port 번호를 불러와 저장한다.
이제 HTTP Request(GET, POST, PUT, DELETE 등)과 함께 내가 확인하고 싶은 Path와 필요한 Parameters를 채워준다.
Advanced에서는 Implementation을 HttpClient4로 맞춰주자
Transaction Per Second 실행
왼쪽 Test Plan 탭에서 'jp@gc'를 누르고, 위에 녹색 재생 표시를 누르면 부하 테스트가 진행된다.
해당 요청에 대해 Fail, Success 여부와 함께 요청 시 걸리는 시간 정보 등이 차트를 통해 제공된다.
아래 결과는, 회원 정보를 조회했을 때 걸리는 부하를 확인해본 것이다.
- 0~5초 : 10명의 유저가 동시에 5번 반복하여 5초 간 회원 정보 확인
- 44~54초 : 100명의 유저가 동시에 5번 반복하여 10초 간 회원 정보 확인
확실히 많은 유저가 접속을 시도할 때 더 부하가 많이 걸리는 것을 알 수 있다.
현재 테스트에서는 회원 정보를 알기 위해서는 Access_Token 정보를 Head에 담아서 확인하기 때문에 Header를 추가로 설정해줘야 했다.
이는 Http Request에서 Add를 통해 HTTP Header Manager를 만들 수 있으며, 필요한 값들을 양식에 맞춰 넣어주면 된다.
현재 테스트로는 하나의 기능으로만 진행했지만, 회원가입, 로그인, 정보 조회 등 여러 요청을 나누어 생성해보고 성능을 체크해 볼 수 있으며, 어떤 기능에서 필요 이상의 부하가 걸리고 있는지도 서비스를 운영하기 전에 확인해볼 수 있을 것이다.
기존에 진행하는 프로젝트 내에서 단위 테스트, 통합 테스트와 함께 서버의 부하가 어느정도 유저를 커버할 수 있을 지 고민하는 습관을 가지는 것도 중요할 것 같다.
'정보' 카테고리의 다른 글
[IntelliJ] JUnit Test 메소드 명 한글 깨짐 해결 (0) | 2021.09.17 |
---|---|
[Git] .gitignore이 제대로 작동하지 않는 경우 (0) | 2021.09.16 |
[Git] default 브랜치는 master에서 main으로 변경되었음 (4) | 2021.03.24 |
[Git] Logon failed, use ctrl+c to cancel basic credential prompt (1) | 2021.02.15 |
[VSCODE PowerShell] Execution_Policies 문제 해결 (0) | 2021.02.14 |