gatling tutorial getting started with gatling load testing
이 Gatling 비디오 자습서는 기능, 설치 단계 및 Gatling 시뮬레이션 레코더 사용 예제를 포함하여 Gatling에 대한 포괄적 인 검토를 제공합니다.
Gatling은 Scala를 기반으로하는 오픈 소스 테스트 프레임 워크입니다. 최근 3 년 동안 300 만 건 이상의 다운로드를 기록하며 많은 인기를 얻고 있습니다.
오픈 소스로 사용할 수있을뿐만 아니라 개틀링 전선 Gatling 팀의 더 많은 통합 및 지원으로. 그러나 모든 실제 사용 사례는 무료이며 오픈 소스 인 Gatling 커뮤니티 에디션을 사용하여 작업 할 수 있습니다.
학습 내용 :
개틀링 비디오 튜토리얼
Gatling을 시작하는 데 필요한 단계를 살펴 보겠습니다. 또한이 튜토리얼의 일부로 Gatling의 몇 가지 중요한 기능을 다룰 것입니다.
다음은 Gatling 소개에 대한 비디오 자습서입니다.
설치
Gatling은 두 가지 방법으로 설치할 수 있습니다. 이것은 다음과 같이 설명 할 수 있습니다.
#1) Gatling을 독립형 도구로 사용하면 공식 Gatling을 사용하여 설치 프로그램 / 응용 프로그램을 간단히 설치할 수 있습니다. 웹 사이트 설치 지침을 따르십시오.
설치된 zip 폴더에는 Windows, MacOS, Linux / Unix 등과 같은 다양한 운영 체제에서 Gatling을 사용하기에 적합한 셸 및 배치 파일이 모두 포함되어 있습니다.
설치 프로그램은 도구의 브라우저를 통해 사용자 작업을 기록한 다음로드 및 테스트해야하는 스크립트 또는 시나리오로 변환 할 수있는 Java 기반 Gatling 스크립트 레코더 일뿐입니다. 다음 섹션에서 자세히 살펴 보겠습니다.
#두) Gatling을 설치 / 사용하는 또 다른 방법은 Maven / Gradle 또는 Scala 빌드 도구를 통해 패키지로 사용하는 것입니다.
여기서 주목해야 할 중요한 점은 Gatling 스크립트는 모두 Scala 기반이므로 Scala 기반 프로젝트를 생성하면 Maven / Gradle 또는 SBT와 같은 빌드 도구에서 가져올 수있는 Gatling 라이브러리를 사용할 수 있습니다.
개틀링의 특징
다음과 같습니다.
# 1) 비동기 아키텍처 및 경량 스레드
Gatling은 Akka 툴킷을 기반으로하는 고급 아키텍처를 가지고 있으며 완전히 비동기식입니다. 이것은 각 스레드가 단일 사용자에 해당하는 JMeter와 같은 다른 성능 테스트 도구와 비교할 때 유리합니다.
여기서 단일 스레드는 Actor 모델을 통해 메시징 아키텍처를 가지고 있으므로 여러 사용자를 시뮬레이션 할 수 있습니다.
간단히 말해서, Gatling 테스트는 Jmeter와 같은 다른 도구와 비교하여 시스템 당 동시 사용자 수를 처리 할 수 있으므로 CPU와 RAM을 상당히 절약 할 수 있습니다.
추천 자료 => Gatling의 액터 모델 및 비동기 아키텍처
# 2) 도메인 특정 언어로 테스트를 읽을 수 있음
Gatling 스크립트는 Scala로 작성되었으며 친숙한 DSL을 사용하여 스크립트를 읽기 쉽고 오류가 덜 발생합니다. Gatling DSL에 대한 자세한 내용은 여기 .
# 3) 프로토콜에 구애받지 않는 지원
Gatling은 HTTP, HTTPS 및 웹 소켓을 포함한 다양한 프로토콜을 지원합니다. 또한 SQL 쿼리 / 스크립트 부하 테스트를위한 확장 기능도 있습니다.
# 4)보고 및 주장
Gatling은 실행되는 시나리오에 대한 자세한 HTML 보고서를 생성하기위한 기본 지원을 제공하며 시나리오의 개별 요청에 대해 어설 션을 적용하는 기능도 있습니다. 예를 들면 응답 시간, JSON 콘텐츠 유효성 검사 등
# 5) 친숙한 GUI 기반 테스트 레코더
Gatling은 웹 브라우저에서 사용자 활동 또는 사용자 작업을 기록하여 시뮬레이션 스크립트를 생성 할 수있는 사용하기 쉬운 그래픽 테스트 레코더와 함께 제공됩니다. 생성 된 스크립트는 나중에 실행될 수 있고 요구 사항에 따라 수정할 수있는 Scala 기반 스크립트입니다.
테스트중인 애플리케이션 및 샘플 스크립트 기록
샘플 시뮬레이션을 만들기 위해 Gatling의 공식적으로 제공되는 호스팅 애플리케이션
Gatling의 시뮬레이션 레코더를 사용하여로드 생성 및 성능 테스트를 시작합니다. 계속 진행하기 전에 부하 테스트를 원하는 시나리오에 대해 논의 해 보겠습니다.
시나리오는 부하 테스트를 시도하는 사용 사례입니다. 이것은 본질적으로 우리가 테스트해야 할 시나리오 또는 일련의 단계에 사용자 행동을 모방하고 싶다는 것을 의미합니다.
예를 들면 사용자가 Amazon.com과 같은 전자 상거래 웹 사이트에 액세스하여 제품을 검색하고 장바구니에 추가하고 마지막으로 결제 정보로 결제한다고 가정합니다.
이 전체 사용자 작업은 다음과 같은 개별 단계를 포함하는 단일 시나리오입니다.
- Amazon.com 웹 사이트로 이동합니다.
- 페이지가로드되기를 기다리고 있습니다.
- 제품 검색 창을 통해 제품을 검색합니다.
- 장바구니에 제품을 추가합니다.
- 장바구니로 이동하여 제품을 결제합니다.
- 지불하기.
이 전체 시나리오를 시스템 또는 서버 관점에서로드 테스트하려면 백엔드 서버에 대해 수행되는 일련의 API 호출 또는 모음에 불과하며 성능 테스트에서 원하는 것임을 이해해야합니다.
이 예에서는 Gatling 호스팅 애플리케이션에서 아래 시나리오를 사용합니다.
#1) 로 이동 Gatling 호스팅 애플리케이션 .
#두) '새 컴퓨터 추가'를 클릭합니다.
#삼) 아래 이미지와 같이 드롭 다운에서 컴퓨터 이름을 Apple로 선택하고 회사 이름을 'Apple Inc'로 선택합니다.
# 4) 세부 정보를 입력 한 후 '이 컴퓨터 만들기'를 클릭하십시오.
Gatling 레코더를 설정하고 첫 번째 스크립트를 기록합니다.
이 섹션에서는 이전 섹션에서 논의한 시나리오에 대한 시뮬레이션을 생성하기 위해 Gatling 테스트 레코더를 설정하는 방법에 대해 설명합니다.
우리는 매우 간단한 형태 인 HTTP 프록시 인 Gatling 시뮬레이션 레코더를 사용할 것입니다. Fiddler 또는 chrome Http 프록시 등과 같은 다른 HTTP 레코딩 도구에 익숙해야합니다. 따라서 Gatling 레코더는 변환의 추가 기능과 유사합니다. 테스트 시뮬레이션 스크립트에 기록.
그럼 먼저 Gatling 레코더를 설정하는 방법을 살펴 보겠습니다.
#1) Gatling zip 폴더가 설치되면 Gatling을 설치할 위치에 폴더의 압축을 풉니 다.
angularjs의 단일 페이지 응용 프로그램은 무엇입니까
#두) 이 단계 후에 우리는 2 개의 환경 변수를 설정해야합니다 – GATLING_HOME (Gatling 홈 디렉토리의 경우) 및 GATLING_CONF (Gatling의 구성 폴더 위치).
OS 유형 (예 : Windows 또는 Mac 또는 Linux)에 따라 아래 값으로 이러한 환경 변수를 설정하십시오.
GATLING_HOME = {gatling-install-directory}
예:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {gatling-install-directory} / conf
예:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
변수가 유효성 검사로 설정되면 터미널에서 다음 명령을 누르기 만하면됩니다. 수출 | 'GATLING'그립 출력에는 방금 설정 한 2 개의 환경 변수가 표시되어야합니다.
#삼) 이러한 환경 변수가 설정되면 Gatling 스크립트 레코더를 시작해야합니다. Windows 기반 OS의 경우 Gatling 설치시 제공되는 배치 파일이 있으며 Linux / MacOS 기반 OS의 경우 제공되는 셸 파일이 있습니다.
다음은 bin 폴더의 파일 구조입니다.
# 4) 따라서 OS 유형에 따라 실행중인 레코더에 대해 실행할 파일 유형을 선택할 수 있습니다. 여기에 우리가 사용할 파일이 2 개 있습니다.
- Gatling.sh / Gatling.bat 파일 – 시뮬레이션 스크립트를 실행합니다.
- Recorder.sh / recorder.bat 파일 – Gatling 시뮬레이션 레코더를 실행 / 열기.
# 5) 레코더 스크립트를 실행하여 Gatling 레코더를 열 수 있습니다. Mac / Linux 터미널을 사용하여 쉘 스크립트를 실행하십시오 (또는 Windows 배치 파일을 직접 실행하십시오).
. /$GATLING_HOME/bin/recorder.sh
# 6) 환경 변수가 올바르게 설정되어 있으면 위의 명령으로 Gatling 스크립트 레코더를 열어야합니다.
# 7) 레코더의 Http / https 포트 (기본 선택은 8000 또는 8080)에 주목하십시오. 이것은 Gatling의 Http 트래픽 프록시 리스너가 구성된 포트입니다. 편의에 따라이 포트 번호를 변경할 수 있습니다 (또는 기본값으로 계속할 수 있음).
자바 배열을 메소드에 전달
# 8) 이제이 포트를 수신하도록 크롬 프록시를 구성 해 보겠습니다. 즉, 기본적으로이 프록시 리스너 또는 레코더를 통해 브라우저에서 Http 트래픽을 라우팅하려고합니다.
이것을 따르십시오 링크 다른 OS에 대해 크롬에 프록시를 설정합니다.
# 9) 포트가 구성되면 다음에서 시나리오를 실행합니다. Gatling 호스팅 애플리케이션.
# 10) 시나리오 실행을 시작하기 전에 먼저 결과 테스트 스크립트에 대한 패키지 이름과 클래스 이름을 구성한 다음 스크립트 레코더에서 '시작'버튼을 클릭하여 프록시 리스너를 시작해야합니다.
#열한) 프록시 레코더가 시작 되 자마자 새 창이 나타나고 기본적으로 시나리오가 브라우저에서 실행될 때 실행되는 모든 요청을 캡처합니다.
# 12) 로 이동 Gatling 호스팅 애플리케이션 브라우저에서.
레코더 창에 요청이 기록 된 것을 볼 수 있다면 브라우저에 대한 프록시 설정이 올 바르고 Gatling 레코더가 실행중인 테스트 시나리오에 따라 요청을 기록 할 수 있음을 의미합니다 (# 단계로 돌아 가지 않은 경우). 7 브라우저 / 시스템의 프록시 구성 수정).
# 13) 이제 설정이 제대로 작동하는지 확인한 후 '지우기'를 클릭하여 레코더에서 모든 항목을 제거하고 아래에 언급 된대로 시나리오 실행을 시작합니다.
- 로 이동 Gatling 호스팅 애플리케이션
- '새 컴퓨터 추가 버튼'을 클릭합니다. 브라우저 URL이 다음과 같은 새 컴퓨터 양식이 있는지 확인하십시오. http://computer-database.gatling.io/computers/new
- 이제 드롭 다운에서 컴퓨터 이름은 Apple로, 회사는 'Apple inc'로 양식에 값을 입력합니다.
- '이 컴퓨터 만들기'를 클릭하면 다음으로 리디렉션됩니다. 홈페이지
- 이것은 Gatling 스크립트 레코더를 사용하여 자동화 스크립트를 실행하고 생성하려는 전체 시나리오입니다. 위의 단계가 실행되면 레코더는 수행되는 모든 HTTP 호출을 캡처해야하며 아래와 같이 표시되어야합니다.
- 기록 된 스크립트에도 몇 가지 'PAUSE'명령이 있습니다. 이는 레코더가 사용자 작업을 모방하기 위해 캡처하는 '생각 시간'에 지나지 않습니다. 즉, 요청 사이에 걸리는 시간입니다. 이러한 값은 실제 유형에 따라 스크립트가 실행되면 구성 / 변경할 수 있습니다.
# 14) 스크립트 생성을 완료하려면 레코더 창에서 '중지 및 저장'을 클릭하십시오.
#열 다섯) 시뮬레이션 스크립트는 Gatling 레코더 구성 화면에 표시된 디렉토리 또는 시뮬레이션 폴더에 생성되어야합니다.
시뮬레이션 스크립트 이해
실행 된 시나리오에 대한 스크립트가 생성되면 시뮬레이션 폴더로 이동하여 스크립트를 엽니 다.
스크립트는 레코더를 시작하기 전에 지정된 동일한 패키지 구조로 생성됩니다. 우리의 경우에는 com.learn.gatling 클래스 이름은 “AddProduct”.
AddProduct.scala 파일을 열고 스크립트의 다른 섹션을 살펴 보겠습니다.
이것은 다음과 같이 설명 할 수 있습니다.
# 1) 설정 구성 :즉 httpProtocol 및 헤더 –이 섹션에서는 다음과 같은 스크립트 데이터의 전체 구성이 완료됩니다.
- 프로토콜 유형 – Http 또는 https,
- 후속 요청에서 사용되는 baseUrl과 같은 다른 것.
- 헤더 정보 – 공통 헤더 정보 및 개별 요청과 함께 전송되는 헤더. 아래 코드 스 니펫에서 header_0 및 headers_2를 참조하세요.
val httpProtocol = http .baseUrl('http://computer-database.gatling.io') .inferHtmlResources(BlackList('''.*.js''', '''.*.css''', '''.*.gif''', '''.*.jpeg''', '''.*.jpg''', '''.*.ico''', '''.*.woff''', '''.*.woff2''', '''.*.(t|o)tf''', '''.*.png''', '''.*detectportal.firefox.com.*'''), WhiteList()) .acceptHeader ('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3') .acceptEncodingHeader('gzip, deflate') .acceptLanguageHeader('en-GB,en-US;q=0.9,en;q=0.8') .upgradeInsecureRequestsHeader('1') .userAgentHeader('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36') val headers_0 = Map('Proxy-Connection' -> 'keep-alive') val headers_2 = Map( 'Origin' -> 'http://computer-database.gatling.io', 'Proxy-Connection' -> 'keep-alive')
# 2) 시나리오 정의 : 여기에는 실제 시나리오와 브라우저 창에서 실행중인 시나리오를 다시 생성하기 위해 실행해야하는 요청 순서가 포함됩니다.
또한 여기서 주목해야 할 중요한 점은 여기에서 전체 URL 대신 요청에 대한 상대 URL을 언급했습니다. 이것은 우리가 사용할 것이기 때문입니다 httpProtocol 구성 시나리오 구성 데이터가 정의 된 지점 # 1에서 논의했습니다.
val scn = scenario('AddProduct') .exec(http('request_0') .get('/computers') .headers(headers_0) .resources(http('request_1') .get('/computers/new') .headers(headers_0))) .pause(4) .exec(http('request_2') .post('/computers') .headers(headers_2) .formParam('name', 'apple') .formParam('introduced', '') .formParam('discontinued', '') .formParam('company', '1'))
# 3) 시나리오 실행 : 이 섹션은 시나리오 설정 단계를 포함하는 가장 중요한 섹션입니다.
여기서 주입 구성은 사용자 / 스레드의 수 또는 즉,이 시나리오를 테스트하려는 부하입니다.
여러 사용자의 기본값은 항상 1이며 시나리오를 실행하기 전에 변경할 수 있습니다.
또한 실행할 시나리오에 대한 모든 기본 구성을 포함하는 포인트 # 1에서 논의한 httpProtocol 정의를 사용하고 있습니다.
setUp (scn.inject (atOnceUsers (1))). protocols (httpProtocol)
다음 튜토리얼에서 주입 및로드 구성에 대한 자세한 내용을 살펴볼 것입니다.
시뮬레이션 스크립트를 사용하여 테스트 실행
이제 레코더를 사용하여 만든이 시뮬레이션 스크립트를 사용하여 시나리오를 실행하는 방법을 살펴 보겠습니다. 생성되는 결과 스크립트는 실제로 브라우저를 통해 실행 된 시나리오에 대한 세부 정보를 포함하는 Scala 기반 클래스입니다.
다음은 Gatling 스크립트 실행에 대한 비디오 자습서입니다.
Gatling 설치에는이 시뮬레이션을 실행하는 데 사용할 수있는 쉘 스크립트 (Windows 사용자의 경우 배치 스크립트)가 함께 제공됩니다.
생성 된 시뮬레이션을 실행하려면 아래 단계를 따르십시오.
#1) Gatling 설치의 bin 폴더로 이동하거나 다음으로 이동하십시오. $ GATLING_HOME / bin
#두) Linux / Mac OS 용 Gatling.sh 파일 (또는 Windows 사용자 용 Gatling.bat 파일)을 실행합니다.
#삼) 시뮬레이션 폴더에 여러 스크립트 파일이있는 경우 스크립트는 사용자가 실행하려는 시뮬레이션을 선택하라는 메시지를 표시합니다 (이를 시뮬레이션하려면 다른 패키지에 동일한 시나리오를 생성하고 Gatling 스크립트가 실행될 때 2 개의 다른 스크립트가 표시되는지 확인하십시오.)
# 4) 시뮬레이션이 선택되어 있습니다 (또는 사용 가능한 시뮬레이션 스크립트가 하나만있는 경우 폴더에있는 시뮬레이션이 기본값으로 설정됩니다).
# 5) 이제 스크립트는 선택적 실행 설명을 추가하라는 메시지를 표시합니다. 이를 무시하고 Enter 키를 눌러 시뮬레이션 실행을 시작할 수 있습니다.
# 6) 시뮬레이션이 실행되는 동안 터미널에 실행 보고서가 인쇄되는 것을 볼 수 있으며 시나리오 실행이 완료되면 응답 시간, 총 요청, 성공 / 실패 등 요약보기와 같은 매개 변수가 표시됩니다.
# 7) Gatling은 또한 시나리오 실행 완료시 실행 된 시나리오와 관련하여 다양한 데이터 포인트를 포함하는 자세한 HTML 기반 보고서를 생성합니다.
다음 자습서에서 생성 된 보고서의 세부 사항을 살펴 보겠습니다.
Gatling 사용의 장점
Gatling은 광범위한 Gatling DSL을 활용하는 우수한 성능 자동화 테스트 스위트를 구축하고 지원을위한 커뮤니티 지원을 늘리고 쿼리에 대한 답변을 얻기 위해 다양한 기능이 풍부한 기능을 제공합니다.
JMeter와 같은 다른 도구와 달리 Gatling은 가파른 학습 곡선을 포함하지만 그 대신 강력하고 완전한 기능의 성능 및 부하 테스트 시뮬레이션 스크립트 세트를 생성하는 많은 프로그래밍 기능을 제공합니다.
이러한 장점 중 일부는 다음과 같습니다.
- 스레드가 사용자와 동일한 대부분의 다른 성능 도구와 달리 가볍고 하나 이상의 요청에 단일 스레드를 사용할 수 있습니다.
- 여러 요청에 단일 스레드를 사용하면 Gatling이 단일 머신을 통해서도 더 많이 확장하고 더 큰로드를 생성 할 수 있습니다.
- Gatling은 시뮬레이션해야하는 막대한 부하가있을 때 분산 모드에서 실행할 수있는 기능을 제공합니다.
- HTTP 이외의 많은 다른 프로토콜에 대한 지원을 제공합니다.예를 들면, Websockets, MQTT, JDBC 등은 모두 Gatling을 사용하여 성능을 테스트 할 수 있습니다.
- Gatling은 기능이 풍부한 DSL (Domain Specific Language)을 제공합니다.이 언어는 쉬운 구문을 가지고 있으며 결합하여 시뮬레이션 스크립트를 생성 할 때 강력한 기능을 제공합니다.
- 또한 루프 구조, 생각 시간 시뮬레이션, 원하는 RPS를 초과하는 요청 제한 등과 같은 복잡한 시뮬레이션 제어 기능을 많이 제공합니다.
- 즉시 사용할 수있는 풍부한보고 기능이 있으며 요구 사항에 따라 사용자 지정할 수도 있습니다.
결론
이 튜토리얼에서는 부하 테스트 도구로 Gatling을 사용하는 기본 사항을 다루었습니다. 표현력이 풍부한 DSL과 HTTP 프로토콜에 대한 탁월한 지원을 통해 Gatling은 많은 사람들이 선택한 도구로 사용되는 인기를 빠르게 얻고 있습니다.
또한 Gatling 스크립트 실행기를 사용하여 나중에 실행할 수있는 시뮬레이션 스크립트 기록의 기본 개념을 이해하는 데 도움이되는 샘플 시뮬레이션 스크립트를 사용하여 Gatling 레코더 및 Gatling 스크립트 실행기에 대해 배웠습니다.
다음 튜토리얼에서는 Gatling 스크립트를 Scala 프로젝트로 작성하는 방법을 다룰 것입니다. 즉, 레코더를 사용하지 않고 Gatling이 시뮬레이션 실행을 완료 할 때 생성되는 보고서 템플릿을 이해합니다.