프로젝트/뉴스피드

[성능 테스트] Artillery를 이용한 부하 테스트 -1 (테스트 설정, 결과 보기)

writtenbyrla 2024. 2. 27. 15:29

테스트 도구 선택 - Artillery


Artillery는 Node.js 기반의 성능 및 부하 테스트를 위한 오픈 소스 도구로 HTTP, WebSocket 및 TCP 등 다양한 프로토콜을 사용하여 테스트가 가능하며 YAML을 사용하여 시나리오를 정의하므로 테스트 시나리오를 쉽게 작성할 수 있다는 장점이 있다. 또한 분산 테스트를 지원하여 여러 호스트에서 동시에 테스트를 실행하고 결과를 집계할 수 있으며 이를 통해 대규모 시스템의 성능을 테스트할 수 있다고 한다.

 

Apach의 JMeter도 많이 사용하는 것 같았으나 Artillery가 좀 더 초심자가 사용하기에 쉬운 편이기도 하고 사용법에 대한 리소스도 많이 있어 Artillery를 이용하였다. 처음 해보는 부하 테스 트인 만큼 테스트 도구를 사용하는 데 있어서 힘 빼지 말고 성능 개선하는데 시간과 에너지를 더 쏟기 위해서!

 

 

 

Artillery 설치


공식 사이트에서 설치방법, config 설정 방법 확인 가능하고, Node.js 기반으므로 Node.js도 설치해주어야 한다.

 

Welcome – Artillery Docs

Learn how to get up and running with Artillery with reference docs, guides, tutorials and other resources

www.artillery.io

 

가장 최신 버전으로 설치

 

버전확인

 

 

 

 

IntelliJ - config 작성


 

target 요청 URL

duration 몇 초동안 테스트할 지

arrivalRate 초당 몇 회의 요청

scenarios 시나리오 구성

 

 

 

테스트 실행


서버를 실행시킨 후 Terminal을 열어 아래와 같이 테스트 실행 명령어를 입력한다.

report.json은 테스트 결과를 파일 형태로 저장하겠다는 뜻이다. 

 

artillery run --output report.json test-config.yaml

 

 

우선 테스트가 잘 되는지 확인하기 위해 10초 동안 테스트를 진행하였고,

테스트 실행 명령어를 입력하면 10초마다 한번씩 아래와 같이 진행 경과를 보여준다.

 

테스트중

 

 

테스트가 끝나면 가장 하단에 실행 결과가 뜨고,

프로젝트 폴더를 보면 config 파일 위쪽에 report.json 파일이 생겨난 걸 확인할 수 있다.

 

테스트 완료 시 Terminal창

 

report.json 파일 생성

 

 

 

 

하지만 json 형식으로 보면 직관적으로 결과를 해석하기 어려우므로 html 파일로 변환하여 시각적으로 확인이 가능하도록 해보자.

아래와 같이 이미 생성된 report.json을 report.html로 만들겠다는 명령어를 입력하고 나면 프로젝트 내에 report.html 파일이 생성되고 오른쪽 마우스 클릭하여 Open In Explorer을 클릭하면 시각화한 자료로 결과를 볼 수 있다.

artillery report report.json --output report.html

 

report.html 파일 생성

 

 

 

테스트 결과 해석


Summary

created: 생성된 시나리오 개수(요청 개수)

completed: 응답 완료된 개수

 

min: 최소 응답 시간

max: 최대 응답 시간

median: 중간값

p95: 가장 빠른 것 부터 95% 까지

p99: 가장 빠른 것부터 99%