본문 바로가기
Programming/web

k6로 성능 테스트 하기

by 유주원 2023. 12. 29.

mac 환경에서 성능 테스트를 진행할 목적으로 k6를 써보기로 했다.

 

설치는 간단하다. 아래와 같이 설치 하자

 

$> brew install k6

 

 

k6를 실행하기 위해서는 실행 코드가 담긴 js 스크립트 파일이 있어야 한다. 

아래와 같이 작성하자.

 

import http from 'k6/http';
import { SharedArray } from 'k6/data';
import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

export function handleSummary(data) {
  return {
    "./reports/result.html": htmlReport(data),
    stdout: textSummary(data, { indent: " ", enableColors: true }),
  };
}

const testQueries = new SharedArray('another data name', function () {
  return open('./data/thumb_image.dat').split(/\r?\n/);
});

export const options = {
  stages: [
	{ duration: '480m', target: 100},
  ],
};

export default function () {
    for (const query of testQueries) {
        if (query !== "") {
            const url = "http://test.com?target=" + query
            http.get(url, {
                headers: {
                    "Content-Type": "application/json",
                    "Authorization": "인증키"
                }
            });
        }
    }
}

 

 

실행 후의 html 파일 형태의 리포트 작성과 테스트 시 입력 값을 파일로부터 읽기 위해 아래의 패키지를 선언했다.

 

import { SharedArray } from 'k6/data';
import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

 

options의 stage를 통해 단계 별 성능 테스트 시나리오를 준비할 수가 있다.

나같은 경우엔 그냥 단순하게 8시간 동안 100 user가 서서히 호출하는 방법으로 진행했다.

나같은 경우에는 초당 request를 제어하고 싶었는데, k6에서는 따로 그 방법은 제공하지 않는 것 같다.

일단 확인한 바로는 1user가 1 query / s는 아닌 것 같다. 

서버 응답에 따라 다르긴 하겠지만 나 같은 경우에는 1 user가 10 query / s 정도 나타났다.

초당 request에 맞는 적절한 user 수는 결과 report를 보면서 적절히 맞춰 나가야 할 것 같았다.

 

function 부분에 이제 실제 호출할 구현을 작성해 준다.

 

위와 같이 js 파일 작성이 완료되었다면 이제 k6를 실행해보자.

 

$> k6 run test.js

 

위의 명령을 실행하면 아래와 같은 화면이 뜨고 프로그래스 바를 통해 성능 테스트가 진행 중인 것을 확인 할 수가 있다.

 

 

reports 폴더에 result.html 파일이 생성되어 있는데 열어보면 해당 성능테스트 진행 결과를 페이지 결과로 확인해 볼 수가 있다.