성능 테스트란?
- 성능 테스트(Performance Testing)는 애플리케이션이 특정 조건에서 얼마나 잘 작동하는지를 평가하기 위한 테스트 방식입니다. 이는 주로 애플리케이션의 속도, 안정성, 확장성, 그리고 자원을 얼마나 효율적으로 사용하는지에 초점을 맞춥니다. 성능 테스트는 다양한 형태로 나뉩니다
- 부하 테스트(Load Testing): 시스템이 예상되는 최대 사용자 수에서 어떻게 작동하는지 확인합니다.
- 스트레스 테스트(Stress Testing): 시스템이 용량 한계를 초과할 때 어떻게 작동하는지 확인합니다.
- 스파이크 테스트(Spike Testing): 갑작스러운 트래픽 급증에 시스템이 어떻게 반응하는지 평가합니다.
- 내구성 테스트(Soak Testing): 장시간 동안 일정 부하를 주고 안정성을 점검합니다.
Artillery란?
Artillery는 성능 테스트와 부하 테스트를 수행하기 위한 강력하고 사용하기 쉬운 오픈 소스 툴입니다. Node.js 기반으로 만들어졌으며, 다음과 같은 특징이 있습니다
- JSON/YAML 파일로 간단하게 시나리오 정의 가능
- HTTP, WebSocket, Socket.io 등 다양한 프로토콜 지원
- 클라우드 환경 및 CI/CD 파이프라인에 쉽게 통합 가능
Artillery 설치
Artillery를 사용하려면 Node.js가 설치되어 있어야 합니다.
npm install -g artillery
설치 후, 다음 명령어로 설치가 완료되었는지 확인하세요
artillery --version
Artillery 기본 사용법
Artillery는 설정 파일을 기반으로 시나리오를 정의합니다. 기본 설정 파일은 다음과 같은 구조를 가집니다:
config:
target: "<http://your-api-endpoint.com>"
phases:
- duration: 60 # 테스트 실행 시간(초)
arrivalRate: 10 # 초당 사용자 수
scenarios:
- flow:
- get:
url: "/api/resource"
주요 요소 설명
- config: 테스트 환경 설정
- target: 테스트 대상 URL
- phases: 테스트 단계 설정 (시간, 사용자 수 등)
- scenarios: 사용자가 수행할 시나리오 정의
- flow: 사용자가 따를 작업의 순서
간단한 HTTP 테스트 시나리오
설정 파일 생성
test.yml 파일을 생성합니다:
config:
target: "<https://jsonplaceholder.typicode.com>"
phases:
- duration: 10
arrivalRate: 5
scenarios:
- flow:
- get:
url: "/posts"
테스트 실행
다음 명령어로 테스트를 실행합니다:
artillery run test.yml
결과 확인
결과는 실행 후 콘솔에 출력됩니다. 결과 요약에는 다음과 같은 정보가 포함됩니다:
- 요청 성공/실패 수
- 응답 시간 통계 (평균, 95th 퍼센타일 등)
- 초당 처리량(*RPS)
용어 정리
RPS (Requests Per Second)
- 초당 서버로 보내지는 요청(Request)의 수를 의미합니다.
- HTTP 요청 단위로 측정되며, GET, POST, PUT 등 모든 요청이 포함됩니다.
- Artillery는 HTTP 요청 단위를 기준으로 결과를 계산하므로, 결과로 나온 초당 처리량은 RPS입니다.
TPS (Transactions Per Second)
- 초당 처리되는 트랜잭션(Transaction)의 수를 의미합니다.
- 트랜잭션은 하나의 사용자 작업 단위로, 여러 요청(Request)을 포함할 수 있습니다.
- 예를 들어, "사용자가 로그인하고 데이터를 조회하는 과정"을 하나의 트랜잭션으로 본다면, 이는 여러 RPS로 구성될 수 있습니다.
Artillery 공식 문서: https://www.artillery.io/docs/
'성능테스트 > Artillery' 카테고리의 다른 글
Artillery 이용한 테스트 저장 및 결과 분석 (3) | 2024.12.14 |
---|---|
Artillery 이용한 다양한 테스트 방법 (0) | 2024.12.13 |