아틸러리 공식 사이트 환경 설정: 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
: 테스트를 실행하는 동안의 다양한 단계를 정의합니다.
예제에서는 부하를 점진적으로 증가시키는 세 단계의 테스트를 정의합니다.
plugins
: 테스트에 사용될 Artillery 플러그인을 로드하고 구성ensure
, apdex
, metrics-by-endpoint
플러그인을 사용합니다.apdex
: 테스트에서 사용되는 Apdex(Aplication Performance Index) 임계값을 설정합니다. 여기서는 응답 시간이 100밀리초보다 작으면 "만족"으로 간주합니다.ensure
: 테스트의 성공을 보장하는 데 사용되는 임계값을 설정합니다.http.response_time.p99: 100
: 99%의 요청이 100밀리초 이내에 응답해야 합니다.http.response_time.p95: 75
: 이 임계값은 95 백분위 응답 시간이 75밀리초를 초과하지 않도록 보장합니다. 즉, 95%의 요청이 75밀리초 이내에 응답해야 합니다.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
먼저, Artillery 테스트를 실행하고 결과를 JSON 파일로 저장합니다.
https://jiwondev.tistory.com/215
artillery run -o results.json your-test-script.yml
이 명령은 your-test-script.yml
테스트 스크립트를 실행하고, 결과를 results.json
파일에 저장합니다.
artillery report report.json