공부/기타

[Python] 부하테스트 라이브러리 locust

감자 바보 2022. 12. 30. 11:03
반응형

[Python] 부하테스트 라이브러리 locust

 이번 게시글에서는 파이썬의 부하테스트 라이브러리인 locust에 대한 간략한 소개와 사용 방법을 소개한다.

 

부하테스트란?

 특수한 상황에서 시스템이 정상적으로 동작하는 지를 확인하기 위해 수행하는 테스트를 의미함.

 

부하테스트의 목적

 - 목표 부하 도달 여부 확인

 - 한계 부하 측정

 - 부하가 주어지는 중에 기능 정상 수행 여부 체크

 

테스트 절차

1. 테스트 목적 확인

2. 테스트 대상 결정

3. 테스트 환경 구축 및 수행

 

사용 라이브러리 : locust

공식 사이트 : https://locust.io/

 

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

접속 유저 수 늘려가며 기능 수행 여부 및 응답 속도 등 테스트를 수행해주는 파이썬 라이브러리.

 

사전 준비

python 라이브러리이기 때문에 파이썬을 먼저 설치 해 주어야 함.

 

Locust 설치

 

pip를 이용하여 간편하게 설치 가능하다. 

powershell을 관리자 권한으로 실행하고 아래 코드를 실행해준다. 사람에 따라 pip를 업데이트 진행해야 할 수도 있다. 코드 실행 후 뜨는 메시지를 따라 수행하면 될 것이다.

pip install locust

 

설치 완료 후 아래 코드를 실행하여 설치 여부를 확인할 수 있다.

locust -V
python -m locust -V

 

스크립트 작성 및 테스트 화면 접속

이제 부하테스트를 위한 스크립트가 필요하다. 아래 코드는 메인 화면에 대한 간단한 기본 스크립트이다.

스크립트에 대한 설명은  아래 두 블로그를 참고하면 도움이 될 것이다.

https://wookkl.tistory.com/67, https://blog.leedoing.com/135

 

from locust import HttpUser, task, between, TaskSet


class UserBehavior(TaskSet):
    @task
    def home(self):
        self.client.get('/')


class LocustUser(HttpUser):
    host = "http://localhost:9999/"
    tasks = [UserBehavior]
    wait_time = between(1, 4)

 간단하게 설명하자면 host에 테스트 하고자 하는 사이트를 main 주소를 적어주면 된다.

 

이 코드를 locustfile.py라는 이름의 파일로 생성한 뒤, powershell로 이 파일이 존재하는 폴더에 접속하고 아래 코드를 수행한다.

locust

실행 결과

 

위와 같은 실행결과를 얻는다면 localhost:8089를 통해 Locust 테스트 화면을 접속할 수 있을 것이다.

 

 

테스트 실행

 이제 테스트 환경을 설정한 후 부하테스트를 실행할 수 있다.

 

위의 Number of users는 접속하게 할 최대 유저 수, Spawn rate는 초당 유저 증가량을 의미하며 이를 자기 목적에 맞춰 변경시켜 사용하면 된다. 또 Host는 테스트하고자 하는 url을 지정하면 된다.

 

설정 완료 후 Start swarming을 눌렀다면 부하테스트 화면이 확인 할 수 있을 것이며, 카테고리 중 Charts를 선택한다면 테스트 관련 데이터를 차트로 확인할 수 있다.

 

마무리

 부하테스트의 개념과 이를 간편하게 수행할 수 있는 Python 라이브러리 Locust의 사용방법에 대해 간략하게 알아보았다.

 

 부하테스트란 특수한 상황에서 정상 동작을 하는지 검증하기 위한 테스트이며, 접속 유저 수에 따른 서비스 정상 동작 여부를 확인할 수 있었다. 

 

 

참고

1. Loucst 공식 홈페이지, https://locust.io/

 

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

2.우키의 개발 블로그, https://wookkl.tistory.com/67

 

부하테스트 - Locust (설치 및 스크립트 작성)

들어가며 파이썬으로 작성된 Locust라는 툴을 설치해서 사용하는 방법을 알아보고 웹 애플리케이션에 부하 테스트를 적용해본다. 참고 사항: locust는 영어로 메뚜기라는 뜻인데, 이 툴에서 부하를

wookkl.tistory.com

3. 이두잉의 AWS 세상, https://blog.leedoing.com/135

 

Python locust load test tool

보통 벤치마크는 간단히 ApacheBenchmark를 통해 Req 임계치, Latency 정도를 확인하거나, (ab -n 100 -c 5 -C "somecookie=rawr" http://google.com/) Jmeter, nGrinder(Java)와 같은 프로그램을 통해 더 많은 정보를 확인하거

blog.leedoing.com