본문 바로가기
회고 모음/Project

7. 부하 테스트

by e-pd 2021. 4. 3.

배포 설정을 했으니 배포된 서버의 테스트이다. 부하테스트는 여러툴이 있지만

간단하게 사용할 수있는 artillery를 사용했다.

 

NodeJS 기반으로 서버 성능 테스트를 할 수 있다.

 

artillery.io/

 

Artillery.io | Load & Smoke Testing

“We use Artillery to run weekly load tests in production. This gives us the confidence to know our online publications can handle large spikes in traffic without incident or customer impact, as well as identifying any potential problems or bottlenecks ah

artillery.io

 

artillery를 설치한다.

npm install -g artillery@1.6

npm install -g artillery@1.6

 

 

문서의 core concept를 들어가면 어떤 것을 목표로 테스트를 하는지 확인할 수 있다.

artillery.io/docs/guides/getting-started/core-concepts.html

 

Core Concepts

What you’ll learn Key high-level concepts for using Artillery Configuration and scenario sections in Artillery test scripts What load phases and virtual users are What an Artillery test definition lo

artillery.io

 

하단의 artillery.io/docs/guides/getting-started/core-concepts.html#Putting-it-all-together

 

Core Concepts

What you’ll learn Key high-level concepts for using Artillery Configuration and scenario sections in Artillery test scripts What load phases and virtual users are What an Artillery test definition lo

artillery.io

항목을 들어가서 스크립트를 복사한다.

config:
  target: "https://shopping.service.staging"
  phases:
    - duration: 60
      arrivalRate: 5
      name: Warm up
    - duration: 120
      arrivalRate: 5
      rampTo: 50
      name: Ramp up load
    - duration: 600
      arrivalRate: 50
      name: Sustained load
  payload:
    # Load search keywords from an external CSV file and make them available
    # to virtual user scenarios as variable "keywords":
    path: "keywords.csv"
    fields:
      - "keywords"
scenarios:
  # We define one scenario:
  - name: "Search and buy"
    flow:
      - post:
          url: "/search"
          body: "kw={{ keywords }}"
          # The endpoint responds with JSON, which we parse and extract a field from
          # to use in the next request:
          capture:
            json: "$.results[0].id"
            as: "id"
      # Get the details of the product:
      - get:
          url: "/product/{{ id }}/details"
      # Pause for 3 seconds:
      - think: 3
      # Add product to cart:
      - post:
          url: "/cart"
          json:
            productId: "{{ id }}"

이러한 스크립트가 있는데 여기서 내가 테스트할 항목을 선택해서 테스트를 하면된다.

target URL에 내가 테스트할 서버, duration 시간, arrivalRate는 접근하는 개체수 이다.

이 스크립트를 test.yml로 저장을 한다.

 

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

 

테스트를 완료했으면 report.json 파일이 생긴다.

 

artillery report ./report.json 

 

해당 명령을 입력하면 테스트 결과를 html 로 출력한다.

 

'회고 모음 > Project' 카테고리의 다른 글

9. Database 설정하기  (0) 2021.04.12
8. Nginx 설정  (0) 2021.04.09
6. CI, CD 설정 (젠킨스, 도커)  (0) 2021.04.01
5. 프로젝트 설정  (0) 2021.03.27
4. 일정 관리  (0) 2021.03.26