본문 바로가기

부하테스트/Locust

Locust 부하 테스트 시나리오

728x90
반응형

# 부하테스트 시나리오

1. 사용자 수 선정 및 부하 옵션 설정

- 사용자는 전체 사용자의 약 20% 정도로 정했다.

전체 사용자를 100명정도로 보고 20%인 20명을 최대 사용자로 설정 하였다.

계산식이 따로 있으니, 계산식은 다음에 알아보자.

그리고 나머지 옵션들은 따로 정리하자.

- 추가적인 부하 옵션은 추후에 하나씩 정하자.

2. Flow는 아래와 같다.

제공된 Python 스크립트의 코드 흐름은 다음과 같이 설명할 수 있습니다:
1. 스크립트는 필요한 모듈을 가져오고 일부 전역 변수를 설정하여 시작한다. sessionIds 리스트는 세션 ID를 저장하기 위해 전역 변수로 초기화된다.
2. WebsiteUser 클래스가 정의되며, 이는 Locust 라이브러리에서 제공하는 HttpUser 클래스를 상속한다.

이 클래스는 HTTP 요청을 하는 사용자를 나타낸다.
3. WebsiteUser의 __init__ 메소드에서 전역 sessionIds 리스트가 인스턴스 변수에 할당된다.
4. on_start 메소드가 정의되어 있다. 이는 시뮬레이션 사용자가 시작할 때 호출되는 Locust의 특별한 메소드이다. 이 메소드에서는 emails 리스트의 각 이메일에 대해 post_session 메소드가 호출된다.
5. post_session 메소드는 "/api/v1/session" 엔드포인트에 gen 함수로 생성된 JSON 페이로드와 함께 POST 요청을 보낸다.

응답에 sessionId가 포함되어 있다면, 이는 sessionIds 리스트에 추가된다.
6. get_users 메소드는 "/api/v1/admin/users" 엔드포인트에 GET 요청을 보낸다.

이는 sessionIds 리스트에서 무작위로 선택한 sessionId를 요청의 헤더로 사용한다. 그런 다음 응답의 첫 세 줄이 출력된다.  
이 스크립트는 특정 엔드포인트에 HTTP 요청을 하는 사용자 행동을 시뮬레이션하기 위해 설계되었으며, 이를 위해 Locust 라이브러리를 사용한다. 스크립트의 흐름은 WebsiteUser 클래스에 정의된 작업에 의해 제어되며, 이러한 작업이 호출되는 순서는 @task 데코레이터와 wait_time 속성에 따라 Locust에 의해 결정된다.

3. 예제 소스코드 및 결과

- 예제 코드

https://github.com/Nanninggu/Stress-Test-Locust

 

GitHub - Nanninggu/Stress-Test-Locust: About Stress-Test-Locust

About Stress-Test-Locust. Contribute to Nanninggu/Stress-Test-Locust development by creating an account on GitHub.

github.com

- 결과

 

- 끝 -

728x90
반응형