본문 바로가기
성능과 튜닝/부하 테스트 도구 - 애플리케이션 (Locust)

Locust 클래스 살펴보기 - User class

by 안드레날린 2024. 10. 14.

User class

User class는 시스템의 사용자/시나리오를 나타낸다.

 

User class 에 포함된 속성

wait_time 속성

wait_time 메서드는 각 task의 실행 지연을 쉽게 도와 준다.

constant : 고정된 시간
between : random time between a min and max value
constant_throughput : 초당 최대 X회 작업이 실행되도록 보장
constant_pacing : 작업이 X초마다 한 번씩 실행되도록 보장
from locust import User, task, between

class MyUser(User):
    @task
    def my_task(self):
        print("executing my_task")

    wait_time = between(0.5, 10)

위 예제는 각 사용자가 모든 작업 실행에 있어 0.5 ~ 10초 동안 기다리도록 설정 한다.

 

클래스에서 wait_time 메서드를 직접 선언하는 것도 가능하다.

class MyUser(User):
    last_wait_time = 0

    def wait_time(self):
        self.last_wait_time += 1
        return self.last_wait_time

    ...

 

weight 와 fixed_count 속성

파일에 두 개 이상의 사용자 클래스가 존재 하고 명령줄에 사용자 클래스가 지정되지 않으면 Locust는 각 사용자 클래스를 동일한 수로 생성한다. 명령줄에서 사용자 클래스를 지정할 수도 있다.

locust -f locustfile.py WebUser MobileUser

 

특정 사용자 클래스를 더 많이 시뮬레이션 하고자 할 때 사용자 클래스에 가중치를 설정할 수 있다.

아래는 WebUsers가 MobileUsers보다 3배 더 많이 생성된다.

class WebUser(User):
    weight = 3
    ...

class MobileUser(User):
    weight = 1
    ...

 

만약 fixed_count 속성을 설정하면, 가중치 속성은 무시되고 정확히 지정한 수의 사용자만 생성된다.

아래 코드에서는 AdminUser의 경우 하나만 생성된다.

class AdminUser(User):
    wait_time = constant(600)
    fixed_count = 1

    @task
    def restart_app(self):
        ...

class WebUser(User):
    ...

 

host 속성

테스트 하려고 하는 호스트에 대한 URL 접두사를 자동으로 추가 한다.

명령줄 --host 옵션이나 웹 UI에서 이 값을 덮어쓸 수 있다.

 

on_start와 on_stop 메서드

on_start : 사용자 시뮬레이션 시작할 때
on_stop : 사용자 시뮬레이션 종료할 때