반응형
설치(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
- vus — 활성 가상 사용자 수
- vus_max — 테스트에 할당 된 최대 가상 사용자
- iterations— default함수가 호출 된 총 횟수
- iteration_duration— default함수 를 실행하는 데 걸린 총 시간
- dropped_iterations— iterations시작할 수없는 수
- data_received — 수신 된 데이터의 양
- data_sent — 전송 된 데이터 양
- checks — 성공적인 검사 비율 (나중에 설명)
- http_reqs — k6에 의해 생성 된 총 요청
- http_req_blocked — 요청을 시작하기 전에 사용 가능한 TCP 연결을 기다리는 데 소요 된 시간
- http_req_connecting — TCP 연결 설정에 소요 된 시간
- http_req_tls_handshaking — TLS 핸드 쉐이킹에 소요 된 시간
- http_req_sending — 데이터 전송에 소요 된 시간
- http_req_waiting — 원격 호스트의 응답을 기다리는 데 소요 된 시간
- http_req_receiving — 데이터 수신에 소요 된 시간
- http_req_duration— 요청에 대한 총 시간. http_req_sending+ http_req_waiting+를 기준으로 계산됩니다.http_req_receiving.
반응형