
Artillery란?
Artillery는 node.js기반의 애플리케이션 부하 테스트 도구이며, HTTP,HTTPS, Websocket등의 다양한 프로토콜을 지원한다.
또한, 테스트 시나리오를 JSON 또는 YAML파일로 작성하여 테스트 하는 점이 특징이다.
기존에 사용하던 JMeter와 비교했을때 설치가 쉽지만 테스트 케이스를 YAML/JSON로 직접 작성해야 된다는 단점이 있다고 느꼈다.
하지만 이 부분은 어느정도 사용해보면 적응할 수 있을 것 같다.
Artillery 설치 방법
Set up Artillery CLI · Artillery
Learn how to get up and running with Artillery with reference docs, guides, tutorials and other resources.
www.artillery.io
Node.js가 미리 설치 되어있는 환경에서 위 홈페이지로 들어가면 나오는 명령어를 터미널에 입력해주면 다운로드가 진행된다.
npm install -g artillery@latest
테스트 시나리오 작성
테스트 시나리오를 작성할때는 가상 사용자 수, 요청횟수, 초당 요청 수, 테스트 URL, HTTP Method 등을 선택할 수 있다.
이번 테스트에서 작성한 YAML파일은 다음과 같다.
config:
target: "서버 주소" # 테스트를 보낼 서버 주소
phases:
- duration: 100 # 테스트 실행 시간(초)
arrivalRate: 10 # 시작 시 초당 요청 수
rampTo: 100 # 점진적으로 증가할 최대 초당 요청 수
payload:
path: "urls.csv" # 사용할 CSV 파일
fields:
- "url" # CSV의 컬럼명 → {{ url }} 변수로 사용
scenarios:
- name: "create shortenUrl" # 시나리오 이름
flow:
- post:
url: "/shortenUrl" # 호출할 API 경로
json:
originalUrl: "{{ url }}" # CSV에서 읽은 url 값을 요청 body에 삽입
테스트 방법
테스트 시나리오를 작성하면 테스트 수행 후 결과를 확인해볼 수 있다.
터미널에서 바로 결과를 확인할 수도 있고, 테스트 결과를 파일로 저장할 수도 있지만, Artillery에 회원가입 후 API 키값을 이용하면 테스트 결과를 Artillery 홈페이지에서 테스트 결과를 다양한 시각화 자료와 함께 확인 가능하다.
artillery run read-load-test.yaml --record --key <API_KEY>
# read-load-test.yaml 파일을 실행하고 실행 결과를 Artillery Cloud 대시보드에 기록(업로드)함
artillery run read-load-test.yaml -o read-load-report.json
# read-load-test.yaml 테스트 실행 후 결과를 read-load-report.json 파일로 로컬에 저장
artillery report --output read-load-report.html read-load-report.json
# read-load-report.json 파일을 html 리포트로 변환
테스트를 수행하면 터미널에서 다음과 같은 결과를 얻을 수 있다.

- min : 가장 빠른 응답 시간
- max : 가장 느린 응답 시간
- mean : 평균 응답시간
- median : 응답시간을 빠른 순으로 정렬했을 때 정확히 중간값
- p95 : 상위 95%가 이 시간 이하로 응답(5%는 이 시간보다 느렸다.)
- p99 : 상위 99%가 이 시간 이하로 응답(1%는 이 시간보다 느렸다.)
- vusers.failed : 실패한 가상 사용자
Artillery 대시보드
Artillery에서 발급해주는 API Key값을 이용해 Artillery 대시보드에서 테스트 결과를 확인해볼 수 있다.
- Artillery 로그인
- Settings -> API Key 확인
- 터미널에서 artillery run read-load-test.yaml --record --key <API_KEY> 실행

'BackEnd' 카테고리의 다른 글
| XSS 방어 (0) | 2025.10.01 |
|---|---|
| Thread Pool과 DB Connection Pool의 상관 관계 (0) | 2025.09.30 |