TIL | [부하테스트] 아틸러리 스크립트 설정 및 보고서 생성

bubblegum·2024년 4월 10일
0

Today I learn(TIL)

목록 보기
61/84
post-thumbnail

아틸러리 설정하기

아틸러리 공식 사이트 환경 설정: https://www.artillery.io/docs/get-started/first-test

# asciiart-load-test.yaml
config:
  target: http://localhost:3000
  phases:
    - duration: 60
      arrivalRate: 1
      rampTo: 5
      name: Warm up phase
    - duration: 60
      arrivalRate: 5
      rampTo: 10
      name: Ramp up load
    - duration: 30
      arrivalRate: 10
      rampTo: 30
      name: Spike phase
  plugins:
    ensure: {}
    apdex: {}
    metrics-by-endpoint: {}
  apdex:
    threshold: 100
  ensure:
    thresholds:
      - http.response_time.p99: 100
      - http.response_time.p95: 75

config 섹션에서는 테스트의 기본 설정을 지정합니다.
1. target: 테스트할 웹 서버의 주소입니다. 이 예제에서는 http://localhost:3000으로 설정되어 있으며 로컬에서 실행 중인 서버를 대상으로 합니다.
2. phases: 테스트를 실행하는 동안의 다양한 단계를 정의합니다.
예제에서는 부하를 점진적으로 증가시키는 세 단계의 테스트를 정의합니다.

  • Warm up phase: 60초 동안 초당 1명의 사용자로 시작하여 5명의 사용자까지 점차 증가시킵니다.
  • Ramp up load: 다음 60초 동안 사용자 수를 초당 5명에서 시작하여 10명까지 증가시킵니다.
  • Spike phase: 마지막 30초 동안 사용자 수를 초당 10명에서 시작하여 30명까지 급격히 증가시킵니다.
  • 지속 시간(duration): 60초 동안 테스트가 진행
  • 도착률(arrivalRate): 1초에 1개의 요청이 서버로 전송
  • rampTo: 지속 시간 동안 arrivalRate를 1에서 5까지 선형적으로 증가
  1. plugins: 테스트에 사용될 Artillery 플러그인을 로드하고 구성
    이 예제에서는 ensure, apdex, metrics-by-endpoint 플러그인을 사용합니다.
  2. apdex: 테스트에서 사용되는 Apdex(Aplication Performance Index) 임계값을 설정합니다. 여기서는 응답 시간이 100밀리초보다 작으면 "만족"으로 간주합니다.
  3. ensure: 테스트의 성공을 보장하는 데 사용되는 임계값을 설정합니다.
  • http.response_time.p99: 100: 99%의 요청이 100밀리초 이내에 응답해야 합니다.
  • http.response_time.p95: 75: 이 임계값은 95 백분위 응답 시간이 75밀리초를 초과하지 않도록 보장합니다. 즉, 95%의 요청이 75밀리초 이내에 응답해야 합니다.

Environment

Artillery 스크립트 내에서 config 섹션에 environments를 정의하고, 각 환경에 맞는 설정을 지정할 수 있습니다. 이렇게 정의된 환경 설정은 Artillery를 실행할 때 -e 또는 --environment 옵션을 통해 선택적으로 적용할 수 있습니다.

예시

아래는 environments를 사용하여 개발 환경과 프로덕션 환경을 구분하여 설정하는 예시입니다:

config:
  target: "http://localhost:3000" # 기본 타겟 URL
  phases:
    - duration: 60
      arrivalRate: 10
  environments:
    development:
      target: "http://dev.example.com"
      phases:
        - duration: 60
          arrivalRate: 5
    production:
      target: "http://example.com"
      phases:
        - duration: 120
          arrivalRate: 20

이 스크립트는 기본 설정으로 localhost에서 테스트하며, development 환경은 http://dev.example.com을 타겟으로 하고, production 환경은 http://example.com을 타겟으로 합니다. 또한 각 환경별로 부하 테스트의 강도를 다르게 설정할 수 있습니다.

실행 방법

개발 환경에서 테스트를 실행하려면 다음 명령어를 사용합니다:

artillery run -e development my-script.yml

프로덕션 환경에서 테스트를 실행하려면 다음 명령어를 사용합니다:

artillery run -e production my-script.yml

HTML 보고서 생성

1단계: Artillery로 JSON 결과 생성

먼저, Artillery 테스트를 실행하고 결과를 JSON 파일로 저장합니다.
https://jiwondev.tistory.com/215

artillery run -o results.json your-test-script.yml

이 명령은 your-test-script.yml 테스트 스크립트를 실행하고, 결과를 results.json 파일에 저장합니다.

2단계: JSON을 HTML로 변환

artillery report report.json
profile
황세민

0개의 댓글

관련 채용 정보