DevOps, Infra

[k6] 성능테스트 도구

seulseul 2023. 1. 10. 11:53

1. K6 란?

  • k6를 이용하면 시스템의 성능테스트를 수행할 수 있다.
  • Grafana Lab에서 만든 load testing 툴이다.
  • 최대 성능을 위해 k6 툴 자체는 Go 언어로 작성돼있다.

1.1. K6 install (Linux)

sudo apt-get update
sudo apt-get install k6

https://github.com/grafana/k6/releases

 

2. 장점 / 단점

2.1. 장점

  • 친숙한 언어인 JavaScript로 테스트 시나리오를 짤 수 있기 때문에 러닝커브가 낮다.
  • 간단한 CLI 를 제공하며, 이미 사용중인 DevOps Tool 과 함께 사용하기 쉽다.

2.2. 단점

  • npm 패키지를 사용하려면 번들링 (Bundling) 및 트랜스파일링(transpiling) 이 필요하다.

3. K6 script

 

 

 

  • HTTP (GET , POST , PUT , DELETEL 등) 요청을 보낼 수 있는 기능을 제공 (import 모듈명)
  • 위와 같이 http.post 메소드를 이요하여 post 요청을 보낸다.
  • 요청시 url ,  헤더 (header) , 전송 데이터 (payload) 및 파라미터 (params) 를 매개변수로 전달할 수 있다.
  • json 데이터 전송을 위해 params 헤더에 headers: {'Content-Type': 'application/json'} 를 정의했다.
  • check 함수를 이용하여 요청의 결과값이 적절한지 확인할 수 있다.

 

k6 run --vus 1000 --duration 30s --out json=out.json k6-script-post.js

k6-script-post.js  (javascript) 파일이 있는 위치에서 위 명령어를 실행하면된다.

  • 명령어 option 설명
    • vus : 동시 작업자 수
    • duration : 부하 테스트 시간
    • out : 출력 포맷 및 파일 명
    • script.js: 실행할 스크립트
  • 실행 조건
    • vUser 1000 명 (동시 작업자 수)
    • Duration 1 초