설치(mac)
brew install k6
기본 테스트 스크립트 샘플
# filename: script.js
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('https://test.k6.io');
sleep(1);
}
기본 실행 방법
k6 run script.js
VU (Virtual User) 추가 실행
k6 run --vus 10 --duration 30s script.js
--vus : 동시접속자를 10명으로 유지
--duration : 30초 동안 vus 수를 유지 호출
옵션 vu, duration을 소스에 추가해서 실행
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
vus: 10,
duration: '30s',
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
vu를 원하는 시간만큼 조절해서 사용 가능
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 20 },
{ duration: '1m30s', target: 10 },
{ duration: '20s', target: 0 },
],
};
export default function () {
const res = http.get('https://httpbin.org/');
check(res, { 'status was 200': (r) => r.status == 200 });
sleep(1);
}
테스트 결과 설명
k6 run stages.js
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: stages.js
output: -
scenarios: (100.00%) 1 scenario, 20 max VUs, 2m50s max duration (incl. graceful stop):
* default: Up to 20 looping VUs for 2m20s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
running (2m20.2s), 00/20 VUs, 1473 complete and 0 interrupted iterations
default ✓ [======================================] 00/20 VUs 2m20s
✓ status was 200
checks.........................: 100.00% ✓ 1473 ✗ 0
data_received..................: 15 MB 104 kB/s
data_sent......................: 137 kB 974 B/s
http_req_blocked...............: avg=8.56ms min=0s med=1µs max=763.5ms p(90)=2µs p(95)=4µs
http_req_connecting............: avg=2.78ms min=0s med=0s max=232.77ms p(90)=0s p(95)=0s
http_req_duration..............: avg=224.38ms min=190.95ms med=201.72ms max=961.94ms p(90)=236.09ms p(95)=351.89ms
{ expected_response:true }...: avg=224.38ms min=190.95ms med=201.72ms max=961.94ms p(90)=236.09ms p(95)=351.89ms
http_req_failed................: 0.00% ✓ 0 ✗ 1473
http_req_receiving.............: avg=165.03µs min=43µs med=162µs max=1.75ms p(90)=222µs p(95)=236.39µs
http_req_sending...............: avg=145.88µs min=31µs med=140µs max=1.39ms p(90)=218µs p(95)=241µs
http_req_tls_handshaking.......: avg=5.72ms min=0s med=0s max=510.91ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=224.06ms min=190.72ms med=201.37ms max=961.59ms p(90)=235.76ms p(95)=351.55ms
http_reqs......................: 1473 10.504156/s
iteration_duration.............: avg=1.23s min=1.19s med=1.2s max=1.96s p(90)=1.24s p(95)=1.39s
iterations.....................: 1473 10.504156/s
vus............................: 1 min=1 max=20
vus_max........................: 20 min=20 max=20