임계치의 한계에 도달할 때까지 부하를 꾸준히 증가시키며 진행하는 테스트. 즉, 서버가 얼마만큼의 요청을 견딜 수 있는지 테스트하는 것이다.
npm i -D artillery
artillery dino
command 귀엽다.
1) npx artillery quick --count 100 -n 50 http://localhost:3000
주의!!!
실제 실제 DB가 연결되있는 서비스에 부하 테스트를 하는 경우 실제 서비스가 중단될 수도 있고, AWS나 GCP의 종량제 요금을 선택하면 요금이 많이 청구될 수 있다.
따라서, staging 서버, 즉 테스트용으로 실제 서버와 같은 사양의 서버를 사용하는 것이 좋다. (실제 DB가 아닌, 테스트 DB를 사용한다)
부하테스트를 할 때 우리가 원하는 API에 대해서, 혹은 실제 사용자의 행동을 모방하는 시나리오를 작성하여 부하 테스트를 할 수 있다.
{
config:
target: http://localhost:3000
tls:
rejectUnauthorized: false
phases:
- duration: 10
arrivalRate: 100
scenarios:
- name: "전체 worldcup 조회"
flow:
- get:
url: "/api/worldcup"
}
1) json 파일에 우리의 테스트 결과를 저장한다.
npx artillery run 부하테스트결과.json
2) html 파일로 테스트 결과를 시각화할 수 있다.
npx artillery run -o [리포트이름] 부하테스트결과.json