k6을 사용한 성능 테스트 - 01 - 시작하기
웹 앱에 액세스합니다. 이렇게 급증하는 트래픽은 웹 서버를 압도하여 의도하지 않은 분산 서비스 거부(DDOS) 공격을 유발할 수 있습니다. 사람들이 웹 앱에 액세스할 수 없는 악몽 같은 시나리오입니다.
이제 백엔드 인프라가 처리할 수 있는 사용자 수를 어떻게 결정합니까?
이를 비롯한 성능 관련 질문에 답하기 위해 사용할 수 있는 몇 가지 훌륭한 성능 테스트 도구가 있습니다. 그 중 하나는 k6
k6란?
k6은 Go 프로그래밍 언어로 작성된 무료 오픈 소스 부하 테스트 도구입니다. 그러나 k6을 사용하여 테스트를 작성하기 위해 알 필요는 없습니다
Go
.ES2015/ES6의 기본 사항에 익숙하다면 k6 테스트를 작성하는 데 어려움이 없을 것입니다.
설치
로컬 시스템에 k6을 설치하려면 여기에 제공된 지침을 따르십시오https://k6.io/docs/getting-started/installation/.
나는 우분투
18.04
를 사용하고 있지만 다른 운영 체제를 사용하는 경우에도 따라할 수 있습니다.첫 번째 테스트:
k6은
virtual users
(VUs)의 개념을 기반으로 실시간 트래픽을 시뮬레이션한 다음 스크립트를 병렬로 실행합니다.일반적으로 Scenarios 을(를) 사용하지 않는 한 각 k6 스크립트에는 적어도 내보낸
default
함수가 포함되어야 합니다.이
default
함수는 Java 및 기타 프로그래밍 언어의 main()
함수와 유사한 VU의 진입점입니다.테스트 웹사이트에
GET
요청을 하는 간단한 k6 스크립트를 작성해 보겠습니다.Disclaimer: Make sure load testing is allowed by your web host so that you don't violate their terms of service. In our example, we will be testing a test website https://test.loadimpact.com/
파일
test.js
을 만들고 다음 콘텐츠를 추가합니다.import { check } from "k6";
import http from "k6/http";
export default function() {
let response = http.get("https://test.loadimpact.com/");
check(response, {
"is status 200": (r) => r.status === 200
});
};
다른 많은 JavaScript 런타임과 달리 k6의 대부분의 작업은 동기식입니다. 즉, 콜백과 약속을 사용할 필요가 없습니다.
예를 들어;
http.get(...).then(res =>....)
또는
let response = await http.get(....)
필요하지 않으며 예제의
test.js
에 언급된 동기 코드를 사용할 수 있습니다.테스트 실행
그런 다음 다음 명령을 사용하여 k6 스크립트를 실행합니다.
k6 run test.js
기본적으로 아무 것도 지정되지 않은 경우(위의 명령에서와 같이) k6은 1 VU와 1 반복에 대해서만 스크립트를 실행합니다. 디버깅에는 유용하지만 부하 테스트는 아닙니다.
여기서 가상 사용자는
get
요청을 https://test.loadimpact.com/
에 보내고 응답 상태 코드를 확인합니다.이제 10명 이상의 가상 사용자와 5초 동안 k6 테스트를 실행합니다.
k6 run --vus 10 --duration 5s test.js
위의 스크린샷에서:
checks = 100%
: 모든 테스트 실행 통과vus = 10
: 가상 사용자 10명(run 명령에 제공된 대로)iterations = 126
: 테스트가 실행된 총 반복 횟수입니다. 반복을 직접 지정하지 않았기 때문에 실행마다 다를 수 있습니다이제
--vus ... --durations .... --iterations....
를 수행하는 대신 export
개체를 사용하여 원하는 옵션을 설정할 수도 있습니다. 예를 들어:export let options = {
vus: 10,
duration: 5s
};
export default function() { .... }
무엇 향후 계획?
그 모든 것이 좋고 쉬웠지만 그다지 현실적이지는 않았습니다. 웹 프런트엔드를 테스트하든 API를 테스트하든 상관없습니다. GET 요청을 보내는 것만으로는 사용자의 동작을 시뮬레이션할 수 없습니다. 이 시리즈의 다음 부분에서는 k6에 대해 보다 현실적인 방법으로 자세히 알아봅니다.
Reference
이 문제에 관하여(k6을 사용한 성능 테스트 - 01 - 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jankaritech/performance-testing-with-k6-01-getting-started-107j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)