성능 테스트는 소프트웨어 시스템이나 애플리케이션의 성능을 측정하고 평가하기 위한 활동이며, 이러한 테스트는 시스템이 특정 작업을 수행하는 데 걸리는 시간, 응답 시간, 처리량, 확장성 등과 같은 성능 측정 지표를 확인하여 시스템의 강건성, 안정성 및 사용자 경험을 평가한다. 성능 테스트는 시스템의 부하 처리 능력, 안정성, 응답 속도 등을 검증하는 데 사용한다.
응답 시간 확인
부하 처리 능력 확인
확장성 평가
안정성 및 오류 관리
자원 사용량 분석
부하 테스트 (Load Test)
스트레스 테스트 (Stress Test)
주요 실행 시점
TPS
Average
Vuser
Ramp Up
Saturation Point
계산식
TPS = 동시 사용자수 (vuser개수) / 평균 응답시간
사용자 인터렉션이 있는 경우, 평균 응답 시가에 thinking tim 을 넣기도 하나, BE 프로젝트는 대부분 미고려
중앙 집중 성능 테스트
단일 컨트롤러
중앙 집중 성능 테스트에서는 일반적으로 테스트를 제어하는 단일 컨트롤러가 존재합니다. 이 컨트롤러가 테스트 시나리오를 관리하고 가상 사용자의 동작을 제어한다.
집중된 리소스
테스트의 제어와 결과 수집이 중앙화되어 있기 때문에 테스트 실행에 필요한 모든 리소스가 중앙 서버에 집중된다.
간편한 관리
단일 컨트롤러를 통해 쉽게 테스트를 관리하고 제어할 수 있다.
분산 성능 테스트
분산된 에이전트
분산 성능 테스트에서는 테스트를 수행하는 데에 여러 에이전트가 분산되어 작업합니다. 각 에이전트는 독립적으로 작동하며, 테스트 중에 특정 부분을 책임지거나 여러 부분을 동시에 수행할 수 있다.
리소스 효율성
분산 성능 테스트는 여러 머신을 활용하여 테스트를 분담하므로, 리소스를 효율적으로 활용할 수 있다.
더 높은 확장성
대규모의 테스트를 수행할 때 분산 성능 테스트는 더 높은 확장성을 제공할 수 있다.
성능 테스트 진행 절차
1. 일단 1개의 개발 서버에서 Sanity
2. 성능 테스트 필요성 공유
3. 성능 테스트 방해 지점 파악 및 제외
4. 개발 서버에 대한 성능 테스트 실행 및 성능 확인
5. 운영 서버에 대한 성능 테스트 진행 계획 전체 공유
6. 운영 서버에 대한 성능 테스트 및 문제 해결
Locust는 성능 테스트를 수행하기 위한 오픈 소스의 부하 테스트 도구이다. Python으로 작성되어 있으며, 코드를 통해 테스트 시나리오를 정의하고 실행할 수 있다. Locust는 특히 웹 애플리케이션의 성능 테스트에 많이 사용되지만, 다양한 종류의 시스템에 대한 성능 테스트에 적용할 수 있다.
Python 기반 성능 테스트 도구
제약사항
설치 및 실행 방법
1. 사전에 python3 설치
pip3 install locust
2. mac 이면 brew 로도 설치 가능, 그러나 로컬 디버깅 불가
brew install locust
3. docker 로 실행. 단 localhost가 docker 내부로 제한 주의
docker run -p 8089:8089 -v $PWD:/mnt/locust locustio/locust \
-f/mnt/locust/locustfile.py
1. locustfile.py 스크립트 작성
from locust import HttpUser, between, task
class MyUser(HttpUser):
host="http://localhost:8080"
@task
def hello-world(self):
self.client.get("/")
if__name__=="__name__":
run_single_user(HelloWorldUser)
2.로컬 실행
python3 locustfile.py
3.locust 실행
locust