Teste de carga Gatling - o guia completo. Parte 1

Este artigo é um guia completo, detalhado e abrangente para o uso eficaz do Gatling para testes de carga. Você também pode verificar meus tutoriais em vídeo do YouTube Gatling, onde entro em mais detalhes sobre este tópico.





Visão geral do manual

HTTP-, Gatling - ! Gatling. Gatling, .





Gatling? Gatling. :





  • Gatling - , Scala.





  • DSL, Gatling, .





  • (, JMeter), .





  • , .





  • Gatling CI-.





?

, , (performance testing).





- , , , .





, . , . (, , ) .





, :





  • (Load Testing) - ( );





  • - (Stress Testing) - , « » (breakpoint).





  • (Soak Testing) - .





Gatling .





, :





  • (Transaction Response Times) - , .





  • (Throughput) - , .





  • (Errors) - , (, -).





Gatling, . Gatling, .





Github.






1. Gatling

- , , JDK8 ( ). , JDK.





Gatling - Gatling Gatling.io. «Download Now», ZIP-:





Baixar Gatling
Download Gatling

. bin. :





  • gatling.bat - Windows





  • gatling.sh - Mac Unix





Gatling :





Escolha Gatling Simulation para executar
Choose Gatling Simulation to run

0, computerdatabase.BasicSimulation



. (run description), , .





Gatling , Gatling .






2. Gatling Recorder

, , , Gatling, , , .





Gatling ( !), IDE .





, Gatling Recorder (user journey).





2.1 HAR- 

Gatling Recorder, , HAR- (Http-) Google Chrome.





Gatling Recorder HTTPS.





HAR-, :





  1. Gatling - , .





  2. Chrome Developer Tools Network.





  3. Clear, , , .





  4. , - , - , . . , Network .





  5. Network «Save all as HAR with content»



    . - .





  1. bin Gatling ( Gatling ) recorder.sh



    Mac/Unix recorder.bat



    Windows. Gatling Recorder.





  2. Recorder Mode HAR Converter



    .





  3. HAR File HAR-, 5.





  4. , Class Name , , MyComputerTest



    .





  5. Start!





  6. , , , .





Captura de tela do Gatling Recorder
Gatling Recorder screenshot
  1. , bin Gatling gatling.sh



    gatling.bat



    .   , Gatling , .





, user-files/simulations Gatling. MyComputerTest



, , . - :





import scala.concurrent.duration._

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class MyComputerTest extends Simulation {

	val httpProtocol = http
		.baseUrl("http://computer-database.gatling.io")
		.inferHtmlResources()
		.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36")

	val headers_0 = Map(
		"Accept" -> "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
		"Accept-Encoding" -> "gzip, deflate",
		"Accept-Language" -> "en-GB,en-US;q=0.9,en;q=0.8",
		"Upgrade-Insecure-Requests" -> "1")



	val scn = scenario("MyComputerTest")
		.exec(http("request_0")
			.get("/computers")
			.headers(headers_0))
		.pause(9)
		.exec(http("request_1")
			.get("/computers?f=amstrad")
			.headers(headers_0))
		.pause(4)
		.exec(http("request_2")
			.get("/assets/stylesheets/bootstrap.min.css")
			.resources(http("request_3")
			.get("/assets/stylesheets/main.css")))

	setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

      
      



Gatling. - , , , .






3. Gatling

, , , Gatling ( ), . , , IDE:





3.1 IDE Gatling

Gatling , ( ) IDE. , Scala. Scala JVM, IDE, JVM, .





:





  • Eclipse, Java IDE. Eclipse , Gatling Eclipse, .





  • , () , - Visual Studio Code VS Code. IDE . Gatling VS Code .





  • , , - IntelliJ IDEA. Scala. Gatling.





, IDE, , :





3.2 Gatling

, Gatling zip- ( ). , - Gatling. . , :





  • - Scala Build Tool, SBT. Gatling SBT. SBT Gatling, , .





  • , , - Maven. Java, , - Maven. Maven Gatling, Maven Gatling, .





IntelliJ Idea Maven .





3.3 Gatling Maven

:





mvn archetype:generate
      
      



, :





Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):
      
      



gatling



.





:





1: remote -> io.gatling.highcharts:gatling-highcharts-maven-archetype (gatling-highcharts-maven-archetype)
      
      



1



Gatling. :





Escolha a versão Gatling
Choose Gatling Version

35



, 3.3.1 .





groupId com.gatlingTest



.





artifactId myGatlingTest



.





version ENTER, 1.0-SNAPSHOT



.





package ENTER , com.gatlingTest



.





Y



, , Maven .





, , - IDE. IntelliJ.





IntelliJ Import Project.





Importar projeto IntelliJ Gatling
Import IntelliJ Gatling project

, , pom.xml



. open, Intellij IDE .





, , Project Directory src>test>scala. Engine.scala. No Scala SDK in module



. , Setup Scala SDK:





Importar Scala SDK no IntelliJ
Import Scala SDK in IntelliJ

, Scala :





Versões Scala no IntelliJ
Scala versions in IntelliJ

, , Create, 2.12 download:





: Scala 2.12 IntelliJ - 2.13, , Gatling





Baixe Scala no Intelli
Download Scala in Intelli

, Scala IntelliJ, Scala Scala-lang. Download the Scala binaries, :





Baixe os binários do Scala em Scala-lang
Download Scala binaries from Scala-lang

- ZIP-. IntelliJ, Setup Scala SDK, Configure. Add :





Adicione os binários do Scala ao IntelliJ
Add the Scala binaries to IntelliJ

, , lib:





Selecione a pasta Lib para importar os binários do Scala
Select the Lib folder to import Scala Binaries

Add Scala Support Scala, :





Adicionar suporte Scala
Add Scala Support

, scala source root IntelliJ. scala Mark Directory As -> Test Sources Root:





Marcar fontes de teste como raiz no IntelliJ
Mark Test Sources as Root in IntelliJ

src source root:





Marcar a raiz das fontes
Mark Sources Root

, Engine



Run:





Execute o objeto Engine no IntelliJ
Run the Engine Object in IntelliJ

There is no simulation script. Please check that your scripts are in user-files/simulations



. , Gatling.





3.4 Gatling

, Gatling. Gatling.





: Gatling- , ... Gatling, , .





scala New > Scala Package - computerdatabase



. New > Scala Class - BasicSimulation



. :





package computerdatabase

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class BasicSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("http://computer-database.gatling.io") //       URL

    .acceptHeader(
      "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    ) //   
    .acceptEncodingHeader("gzip, deflate")
    .acceptLanguageHeader("en-US,en;q=0.5")
    .userAgentHeader(
      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0"
    )

  val scn =
    scenario("Scenario Name") //        
      .exec(
        http("request_1")
          .get("/")
      )
      .pause(7) //  ,  Gatling     

  setUp(scn.inject(atOnceUsers(1)).protocols(httpProtocol))
}

      
      



. Engine Run Engine. Gatling , computerdatabase.BasicSimulation is the only simulation, executing it



. Enter, .





Gatling Maven . mvn gatling:test



. Gatling Maven Gatling.





Gatling ! , . Gatling, API- - !






" " - LoadRunner Virtual User Generator, web-, . web-.





-








All Articles