본문 바로가기
카테고리 없음

스트레스 테스트를 위한 Artillery

by 새싹개발자1호 2024. 8. 9.

이번 파이널프로젝트 의 MVP를 구현하면서, 지금까지 만든 API들의 성능 테스트를 위해 여러 라이브러리를 찾아봤다

그중, Artillery 와 JMeter 라는 라이브러리를 사이에두고 어떤 걸 사용하지에 대해 의논을 하다보니
Artillery가 우리의 개발환경인 Javascript 생태계와 호환이 잘된다는걸 알았고 
특히, 처음으로 스트레스 테스트를 해보는 우리에겐 "간편한 설정과사용"의 이점이 매력적으로 다가왔다.

우리가 적용한 방법에 대해서 간단하게 기록해둘려고한다.

npm install -g artillery

명령어 를 통해 라이브러리를 설치해준후

//스크린샷은 다른티스토리에서 퍼왔습니다.

 위 보이는 것처럼 test.yaml 파일 을 생성해준다

  • target : 요청 baseURL
  • duration : n초동안 테스트
  • arrivalRate : 초당 n회의 요청
  • scenarios : 하나 이상의 테스트가 포함될 수 있는 시나리오 구성

 

artillery run test.yaml -o ./results/test.json

작성을 완료하면 위 명령어를 통해 테스트를 실행해준다
(위 사진에 duration이 10 으로 되있으므로 10초동안 테스트가 진행된다)

 

테스트가 완료되면 터미널에는 이런 결과창이 뜨는걸 확인할수 있는데, 터미널이라그런지 가독성이 조금 떨어지는거같다

결과 목록에 대한 내용은 아래 접은 글로 적어두었습니다*

더보기
  • http.codes.200: 상태 코드가 200(OK)인 HTTP 응답 수
  • http.request_rate: 초당 HTTP 요청 수
  • http.requests: 총 HTTP 요청 수
  • http.response_time: 최소, 최대, 중앙값95번째 백분위수 및 99번째 백분위수 응답 시간을 포함한 HTTP 요청의 응답 시간에 대한 통계
  • http.responses: 수신된 총 HTTP 응답 수
  • vusers.completed: 테스트를 완료한 총 가상 사용자 수
  • vusers.created: 테스트 중에 생성된 총 가상 사용자 수
  • vusers.created_by_name: test.yaml 파일에 정의된 각 시나리오에 대해 생성된 가상 사용자 수
  • vusers.failed: 테스트 중 실패한 총 가상 사용자 수
  • vusers.session_length: 최소, 최대, 중앙값, 95번째 백분위수 및 99번째 백분위수 세션 길이를 포함하여 가상 사용자의 세션 길이에 대한 통계

 

 

artillery report test.json

위에서 언급했듯이  터미널에서 는 하나하나 읽기 불편하기 때문에 위의 명령을 실행하면 실제 테스트 결과를 페이지에서 그래프화 시켜서 보여주게 됩니다.

 

 

실제 MVP 발표를 위해 사용했던 자료이기도 하다