본문 바로가기
프로그래밍

Python 코드로 테스트 가능한 로커스트(Locust)

by bantomak 2025. 4. 3.
반응형

로커스트(Locust)란?

로커스트(Locust)는 웹 애플리케이션, API, 웹소켓 등의 부하 테스트(Load Testing)성능 테스트(Performance Testing)를 위해 많이 사용되는 오픈소스 툴이다. Python으로 작성되어 있으며, 테스트 시나리오도 Python 코드로 작성할 수 있어서 유연성과 확장성이 뛰어나다. 오픈소스이기 때문에 깃허브에서 코드를 확인할 수 있다.

 

GitHub - locustio/locust: Write scalable load tests in plain Python 🚗💨

Write scalable load tests in plain Python 🚗💨. Contribute to locustio/locust development by creating an account on GitHub.

github.com

📌 Locust의 주요 특징

  • Python 기반 : 테스트 시나리오를 Python 코드로 작성. 테스트 작성이 매우 직관적임
  • 웹 기반 UI : 테스트 실행 및 모니터링을 위한 웹 UI를 제공. 실시간으로 결과 모니터링 가능
  • 분산 로드 생성 가능 : 여러 머신에 로더(Worker)를 설치해서 대규모 분산 테스트 가능
  • 비동기 처리 : 많은 요청을 동시에 처리할 수 있어 고성능 테스트 가능
  • 확장성과 유연성 : HTTP 외에도 WebSocket, gRPC, GraphQL 등 다양한 프로토콜에 맞게 커스터마이징 가능

Locust 설치 방법

파이썬 실행환경에서 아래의 커맨드를 작성

pip3 install locust

설치 이후에 설치 및 버전 확인

locust -V

Locust 기본 구조

Locust는 사용자 시뮬레이션을 위해 User 클래스를 상속받은 클래스를 정의하고, 그 안에 테스트할 task(업무 시나리오)들을 정의한다.

from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(1, 3)  # 요청 사이의 대기시간 (1~3초)

    @task
    def load_main_page(self):
        self.client.get("/")  # 루트 페이지 호출

    @task(3)
    def load_profile(self):
        self.client.get("/profile")  # /profile 호출 (가중치 3배)

test.py 파일을 생성해서 위에 코드를 작성했다.

locust -f test.py

그리고 해당 코드로 locust를 실행하자.

 

이제 브라우저에서 http://localhost:8089 접속

다음 정보를 입력하고 테스트 시작:

  • Number of users to simulate (사용자의 수)
  • Spawn rate (초당 몇 명씩 투입할지)
  • Host (테스트 대상이 되는 서버 주소)

 

간단하게 작성하고 테스트 시작해서 웹UI에서 바로 그래프까지 확인이 가능하다. 😎

Locust를 사용하는 이유

  • Python 코드 기반으로 유연하게 테스트 작성 가능
  • 실제 사용자처럼 행동하도록 시뮬레이션 가능
  • 웹 UI로 실시간 모니터링 가능
  • 분산 테스트를 통한 고부하 시뮬레이션 가능

Locust의 아쉬운 점

  • Python을 모른다면 생기는 초기 진입장벽
  • 웹 UI의 부족한 기능

다른 성능 툴들과 비교

  • 개발자 친화적인 코드 기반 테스트 원한다면 → Locust, k6
  • GUI와 다양한 프로토콜 지원이 중요하다면 → JMeter
  • 고성능 트래픽 테스트가 필요하다면 → wrk
  • 간단한 테스트를 빠르게 하려면 → Siege, Artillery

관련 사이트

 

Locust.io

An open source load testing tool. Define user behaviour with Python code, and swarm your system with millions of simultaneous users.

locust.io

댓글