이번 블로그에서는 Artillery를 이용한 성능 테스트 결과를 JSON 파일로 저장하고, 이를 HTML로 변환하여 시각화하는 방법을 다룹니다.


1. 테스트 결과를 JSON 파일로 저장

Artillery 실행 시 --output 옵션을 사용하여 결과를 JSON 파일로 저장할 수 있습니다. 아래 명령어는 advanced-load-test.yml 설정 파일로 테스트를 실행하고, 결과를 result.json 파일에 저장합니다:

artillery run --output result.json advanced-load-test.yml

result.json 파일은 테스트 결과의 원시 데이터를 담고 있으며, 이 데이터를 활용해 다양한 방식으로 분석하거나 시각화할 수 있습니다.


2. JSON 결과를 HTML로 변환

Artillery는 JSON 결과를 HTML 파일로 변환해 주는 report 명령어를 제공합니다. 이를 사용하면 시각화된 결과를 쉽게 확인할 수 있습니다:

artillery report result.json --output result.html

위 명령어를 실행하면 result.html 파일이 생성됩니다. 이 HTML 파일에는 테스트의 주요 지표(요청 성공률, 응답 시간 통계, 처리량 등)가 포함된 시각화된 결과가 담깁니다.


3. HTML 결과 확인

생성된 result.html 파일을 브라우저에서 열면 테스트 결과를 시각적으로 확인할 수 있습니다. 예를 들어:

open result.html

결과 화면에서는 다음과 같은 정보를 확인할 수 있습니다:

  • 요청 성공률 및 실패율
  • 응답 시간 분포 (평균, 95th 퍼센타일 등)
  • 초당 처리량 (RPS)

4. HTML 결과지 주요 지표 설명

Artillery의 HTML 결과 페이지에는 성능 테스트의 다양한 메트릭이 시각화되어 있습니다. 아래는 주요 지표와 그 의미를 간략히 정리한 내용입니다:


1. Overall Latency Distribution

  • 요청의 응답 시간 분포를 보여주는 섹션입니다. 주요 지표는 다음과 같습니다:이 값들을 통해 시스템의 응답 속도가 어떤 수준으로 유지되고 있는지 파악할 수 있습니다.
    • max: 테스트 중 측정된 가장 긴 응답 시간 (최대값).
    • p95 (95th Percentile): 요청 중 상위 95%가 이 시간보다 빠르게 응답. 즉, 상위 5%의 느린 요청을 제외한 최대 응답 시간.
    • p99 (99th Percentile): 요청 중 상위 99%가 이 시간보다 빠르게 응답. 가장 느린 1% 요청을 제외한 응답 시간을 의미합니다.

2. Summary

  • Test duration: 테스트가 실행된 총 시간 (초 단위).
    • 예: 130 sec는 테스트가 130초 동안 실행되었음을 의미합니다.
  • Scenarios created: 테스트 동안 생성된 사용자 시나리오 수.
    • 예: 1320은 총 1320개의 사용자 시나리오가 생성되었음을 나타냅니다.
  • Scenarios completed: 시나리오가 정상적으로 완료된 횟수.
    • 예: 1320은 생성된 1320개의 시나리오가 모두 성공적으로 완료되었음을 의미합니다. 실패한 시나리오가 있다면 이 수는 작아질 것입니다.

3. Other Key Metrics

  • Requests Per Second (RPS): 초당 처리된 요청 수. 서버의 처리량을 측정합니다.
  • Failures: 실패한 요청 수. 서버에서 오류가 발생했거나 시간 초과된 요청을 포함합니다.
  • Response Time (ms):
    • 요청에 대한 서버의 응답 속도를 밀리초(ms) 단위로 표시.
    • 평균, 최소, 최대 응답 시간과 다양한 퍼센타일 값(예: p95, p99)을 제공합니다.

예시 설명

HTML 결과지에서 아래와 같은 정보가 나왔다면:

  • Test duration: 130초 동안 테스트가 진행됨.
  • Scenarios created: 1320개의 시나리오가 생성됨.
  • Scenarios completed: 모든 시나리오가 정상적으로 완료됨.
  • Overall Latency Distribution:
    • max: 900ms → 가장 느린 응답 시간은 900ms.
    • p95: 150ms → 95%의 요청이 150ms 이내에 응답.
    • p99: 300ms → 99%의 요청이 300ms 이내에 응답.

+ Recent posts