Locust with django

Haks.·2025년 3월 30일
0

Study

목록 보기
64/65

Locust

실제 사용자가 대용량으로 접속했을 때, 서버가 잘 버티는지 테스트하기 위해

현재 내 프로젝트는 EC2 micro 서버에서 작동 중이기에 테스트 하기에 적합하지 않고 로컬에서만 실험해 보려한다.

Locust의 역할 = 부하 테스트(Load Testing)

  • 수천 명의 사용자가 동시에 요청을 보낼때
  • 서버의 응답속도, 실패율, 에러발생 여부, 병목 지점을 추측할 수 있다.

장고에 적용시키기
pip install locust

  • locustfile.py 생성
# locustfile.py
from locust import HttpUser, between, task


class UserBehavior(HttpUser):
    host = "http://127.0.0.1:8000"
    wait_time = between(1, 3)  # 요청 간 간격 (초)

    def on_start(self):
        response = self.client.post(
            "/api/user/login/",
            json={"email": "test@example.com", "password": "!!test1234"},
        )

        data = response.json()
        self.access_token = data.get("access_token")
        self.headers = {"Authorization": f"Bearer {self.access_token}"}

    @task
    def get_profile(self):
        self.client.get("/api/user/profile/", headers=self.headers)

    @task
    def update_profile(self):
        self.client.patch(
            "/api/user/profile/",
            headers=self.headers,
            json={"nickname": "updated_nick"},
        )

    @task
    def logout(self):
        self.client.post("/api/user/logout/", headers=self.headers)
  • 실행
    locust -f locustfile.py

Locust로 테스트하면 좋은 API 유형

유형설명예시
트래픽이 몰리는 대표 API사용자 요청이 집중되는 핵심 기능로그인, 메인 페이지, 피드 조회 등
자원 소모가 큰 API처리 시간/메모리/CPU 부하가 큰 작업AI 응답 생성, 파일 업로드/변환 등
DB에 쓰기 많은 API동시에 많은 사용자가 데이터를 생성/수정댓글 작성, 게시글 등록 등
외부 연동이 포함된 API외부 API 호출로 지연이나 실패 가능결제, AI API 호출, 이메일 전송 등
비동기 처리 확인용 API비동기 작업 완료 시간이나 큐 처리 확인Celery 작업, AI 응답 대기 등

Django 테스트 코드 vs Locust 테스트 비교표

항목Django 테스트 코드 (TestCase)Locust 테스트
목적기능 정확성 테스트 (유닛/통합)성능, 부하 테스트
언제 실행?CI/CD, PR 머지 시 자동 실행서버 성능 검증 시 수동/자동 실행
중점기능이 정상적으로 동작하는가?얼마나 많은 요청을 견디는가?
요청 수적음 (1~수십 건)많음 (수백~수천 건 이상)
실패 시 의미코드 로직 오류시스템 병목, 성능 한계 노출
도구/프레임워크unittest, pytest, APIClientlocust, gevent

출력 예시

0개의 댓글

관련 채용 정보