포병 -- 사이트 성능을 빠르게 확인

Jmeter는 훌륭한 성능 테스트 도구이지만 학습 곡선이 가파르고 설정하는 데 시간이 오래 걸릴 수 있습니다. 때로는 그럴 시간이 충분하지 않습니다. 들어와 Artillery !

간단한 정보들:


  • YAML로 작성된 스크립트: 테스트를 설정하는 데 필요한 코드 지식이 크게 줄어듭니다.
  • API 서비스, 전자 상거래 백엔드, 채팅 시스템, 게임 백엔드, 데이터베이스, 메시지 브로커 및 대기열, 네트워크를 통해 통신할 수 있는 모든 것과 같은 백엔드 시스템 테스트용으로 설계되었습니다.
  • 프런트엔드를 테스트할 수 없음
  • 두 가지 옵션: Artillery Core(무료) 및 Artillery Pro(유료)
  • 하나의 패키지에서 기능 및 부하 테스트를 수행할 수 있음
  • Artillery Pro는 클라우드(예: AWS)에서 성능 테스트를 실행하는 데 사용됩니다.

  • NPM을 사용한 간단한 설치:




    npm install -g [email protected]
    


    샘플 테스트



    이 테스트(test-artillery.yml이라고 하자):
  • 은 다음 URL에 대해 실행됩니다. https://blazedemo.com/ ,
  • 은 단계별 램프 업/램프 다운 단계를 따릅니다.

  • 워밍업 : 5초 동안 매초 1명의 가상 사용자 생성
    Ramp-up: 초당 가상 사용자 1명 생성, 1분(60초) 동안 초당 최대 5명의 가상 사용자 생성
    램프 다운: 동시 가상 사용자 수를 15초 동안 0으로 줄입니다.
  • 은 총 p95(95번째 백분위수) 대기 시간이 200ms 이하이고 최대 오류율이 1% 미만이라고 주장합니다.
  • 에는 가상 사용자 흐름을 테스트하는 데 사용되는 시나리오가 포함되어 있습니다.

  • config :
      target: "https://blazedemo.com/"
      plugins: 
        expect : {}
      phases:
        - duration: 5
          arrivalRate : 1
          name : Warm-up
        - duration: 60 
          arrivalRate: 1
          rampTo: 5
          name: Ramp up load
        - duration: 15
          arrivalRate: 1
          rampTo: 0
          name: Kill
      ensure:
        p95: 200
        maxErrorRate: 1
    scenarios:
      - name: 'test scenario'
        flow:
          - get: 
              url: "/vacation.html"
              expect: 
                - statusCode: 200
          - think: 2
    

    테스트 실행



    artillery run test-artillery.yml
    

    전체 콘솔 출력의 섹션





    콘솔 출력은 가장 이해하기 쉬운 결과 보고서가 아니므로 Artillery에는 눈에 더 쉬운 내장 html 보고 기능이 있습니다.

    먼저 보고서를 만듭니다.

    artillery run --output report.json test-artillery.yml
    


    샘플 JSON 생성됨





    다음으로 해당 JSON을 HTML로 표시합니다.

    artillery report --output report.html report.json
    


    샘플 HTML 보고서




    더 복잡한 사용자 시나리오, 대규모 로드 테스트 실행, 트래픽 급증에 대비한 안전 마진 유지를 위해 프로덕션에 합성 트래픽 추가 등 Artillery가 수행할 수 있는 다른 많은 작업이 있습니다.
    이 게시물은 Artillery Core만 훑어봤습니다. 유료 서비스인 Artillery Pro는 개발자 시스템에서 실행되는 테스트에서 조직의 AWS 계정에서 동일한 테스트 스크립트를 확장 및 실행하는 완벽한 업그레이드 경로를 제공합니다.

    포병에 대해 좋아하는 것


  • YAML로 작성된 스크립트. 배우기 쉬운
  • 설정하기 쉽고 문서화가 양호함
  • 성능 평가를 위한 좋은 출발점

  • 개선할 점



    더 많은 보고 옵션을 사용할 수 있습니다. 현재 Datadog(에이전트 또는 HTTP API를 통해), StatsD 및 InfluxDB(Telegraf + StatsD 플러그인 포함)를 지원하는 반면 Prometheus와 같은 다른 제품은 진행 중입니다.

    행복한 테스트!

    좋은 웹페이지 즐겨찾기