이 글을 로컬에서 Locust사용하는 방법입니다!
(Locust를 설치안하고 Docker로 사용하는 방법도 있다고 하니깐 참고해주시면 될 것 같습니다.)
1. Python 설치
우선 Python 공식 홈페이지에서 Python을 다운로드해준다.
- locust를 사용하려면 파이선의 버전 3.7이상이여야 됩니다!
cf ) 설치를 안하고 진행하고 싶다고 하시는 분은 "구글 코랩"을 이용하셔도 좋을 것 같습니다!
파이선 공식 홈페이지 : https://www.python.org/downloads/
다운로드한 설치 파일 실행
- 다운로드한 파일을 실행하면 Python 설치 창이 열리는데 "Add Python to PATH" 체크박스를 꼭 체크해준 다음에 Install Now 클릭하여 설치해 주세요!!
cf) "Add Python to PATH" : 이 옵션을 선택해야 나중에 명령어를 사용해서 Python과 Locust를 실행시킬 수 있습니다.)
설치 완료 확인
- 밑의 명령어를 입력해서 설치가 됐는지 터미널로 확인해준다.
python --version
2. Locust 설치
터미널이나 PowerShell, 인텔리제이 터미널에서 밑의 명령어를 입력해 Locust를 설치해준다.
pip install locust
윈도우일 경우 발생할 수 있는 오류
- 터미널로 설치하다가 밑의 저 같은 오류가 생기시는 분들은 "Microsoft C++ Build Tools"을 설치해줘야 한다.
(Mac에서는 일반적을 Locust 설치 시 특별한 추가 설치 없이 진행되는 경우가 많다고 합니다..!!부럽,,)
- Microsoft C++ Build Tools 다운로드 링크 : https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/
- 위의 왼쪽 이미지 빨간색 네모친 부분만 체크하고 바로 설치해주면 됩니다!!
- 오른쪽 이미지 처럼 빌드 툴의 설치가 완료되면 터미널에서 다시 설치하는 명령어를 입력해주고 설치를 해줍니다.
Locust 설치 완료 확인
밑의 명령어를 입력해서 설치가 됐는지 터미널로 확인해준다.
locust --version
3. 테스트 스크립트 작성
Locust에서 테스트 스크립트를 사용해야되는 이유
- 사용자 시나리오 정의
: Locust는 성능 테스트 도구로, 시스템에 다양한 사용자 행동을 시뮬레이션하여 부하 테스트를 수행할 수 있습니다. 테스트 스크립트는 특정한 사용자 동작이나 시나리오 (예: 특정 URL에 대한 요청, 로그인 시나리오 등)를 코드로 정의하여 현실적인 사용자 패턴을 시뮬레이션할 수 있도록 해 줍니다.
- 동적인 시나리오 생성
: 테스트 스크립트를 사용하면 정적인 요청만 수행하는 것이 아니라, 조건문이나 반복문 등을 활용하여 복잡하고 동적인 사용자 행동을 모델링할 수 있습니다. 예를 들어, 사용자가 로그인한 후 데이터를 가져오고 특정 페이지를 이동하는 복잡한 경로를 테스트할 수 있습니다.
- 확장성과 유연성
: Python 코드로 작성되기 때문에, 다양한 로직과 커스텀 동작을 추가할 수 있습니다. 이를 통해 사용자의 다양한 시나리오를 자유롭게 정의하고, 필요에 따라 테스트 전략을 쉽게 확장할 수 있습니다.
기본 예제 스크립트
- 본인의 테스트 유형에 따라 작성되는 구조는 다르다!
(챗GPT한테 이런 테스트 할 껀데 스크립트 작성해달라고 하면 작성해주니 참고..!)
from locust import HttpUser, task, between
class MyLoadTestUser(HttpUser):
wait_time = between(1, 5) # 각 요청 사이의 대기 시간 (초 단위)
@task
def load_home_page(self):
self.client.get("/") # 예제: 메인 페이지 요청
@task
def submit_data(self):
self.client.post("/api/data", json={"key": "value"}) # 예제: 데이터 제출 요청
cf ) 스크립트 작성 시 알아두면 좋은 것들
- 작업 가중치(@task(n)) : 각 작업의 실행 빈도를 조절할 수 있다.
- on_start/on_stop 메서드 : 사용자 시뮬레이션 시작/종료 시 초기 설정이나 정리 작업을 수행할 수 있습니다.
- 작업 순서: 기본은 무작위 실행, TaskSet 클래스를 사용하면 순차적 실행이 가능합니다.
- wait_time : between() 함수로 요청 간 랜덤 대기 시간을 설정하여 현실적인 사용 패턴을 시뮬레이션할 수 있습니다.
- 테스트 데이터 : csv, json 파일을 읽어와 다양한 데이터셋으로 테스트할 수 있습니다.
- 에러 핸들링 : catch_response=True 옵션으로 응답을 수동으로 평가해 테스트 실패 여부를 제어할 수 있습니다.
스크립트 파일을 완성했는데 밑에 같은 Python Plugin 설치할 꺼냐고 안내창이 뜬다.
그럼 Install을 누르지 말고 밑에 설정하는 방법을 따라해보자!
(나는 Install 눌렀다가 더 복잡해졌었다,,)
테스트를 위한 설정
- File → Project Structure로 이동한 후에 "Module SDK"를 Python으로 설정해준다.
- 테스트가 끝난 후에는 SDK를 다시 원래 설정으로 바꿔준다.
4. Locust에서 원하는 테스트 진행
테스트할 서버 실행
locustfile.py를 준비가 완료된 후에 터미널에서 밑의 명령어를 입력해 Locust 서버를 실행시켜준다.
(테스트 하기 전에 당연히 테스트할 서버도 실행시켜야 합니다!!)
- -f locustfile.py : 테스트할 Locust 파일을 지정
- --host : 테스트할 API 서버의 호스트 URL입니다!!
locust -f locustfile.py --host=http://localhost:8080
웹 인터페이스 접속
브라우저에서 http://localhost:8089로 접속하면 Locust 웹 인터페이스가 열리고 테스트 환경 설정을 해준다.
- Locust는 기본적으로 웹 인터페이스를 8089 포트에서 제공하도록 설정되있기 때문에 8089!!!
- Number of users to simulate: 동시에 시뮬레이션할 가상의 사용자 수.
- Spawn rate: 초당 사용자 생성 속도.
- Start swarming 버튼을 눌러 테스트를 시작해준다.
밑의 이미지는 테스트를 시도해본 모습이다!
(일단 돌아가게 해보는게 목적이였어서 테스트는 실패했지만..! 확실히 JMeter보다 더 쉽다.)
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 마이페이지 성능 최적화 : 로컬 캐시(Ehcache) 적용 (0) | 2024.11.01 |
---|---|
[Spring] 프로젝트에서 OAuth 소셜 로그인 적용하기: 카카오, 네이버, 구글, 깃허브 사례 (0) | 2024.10.29 |
[Spring] 스프링에서 알아두면 좋은 어노테이션(Annotation) 모음 (0) | 2024.10.26 |
[Spring Boot] 포스트맨으로 테스트하기 쉽게 환경변수 설정과 'Barere 접두사'를 제거한 순수한 토큰 헤더로 받기 (0) | 2024.10.25 |
[Spring] QueryDSL 관련 코드 정리 (2) | 2024.10.10 |