Prueba de carga de Gatling: la guía completa. Parte 1

Este artículo es una guía completa, detallada y completa para usar Gatling de manera efectiva para las pruebas de carga. También puede consultar mis tutoriales en video de YouTube Gatling, donde entro en más detalles sobre este tema.





Resumen del 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-:





Descarga Gatling
Download Gatling

. bin. :





  • gatling.bat - Windows





  • gatling.sh - Mac Unix





Gatling :





Elija Gatling Simulation para ejecutar
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 pantalla de 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. :





Elija la versión de 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 proyecto 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 en IntelliJ
Import Scala SDK in IntelliJ

, Scala :





Versiones de Scala en IntelliJ
Scala versions in IntelliJ

, , Create, 2.12 download:





: Scala 2.12 IntelliJ - 2.13, , Gatling





Descarga Scala en Intelli
Download Scala in Intelli

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





Descargar archivos binarios de Scala desde Scala-lang
Download Scala binaries from Scala-lang

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





Agregue los binarios de Scala a IntelliJ
Add the Scala binaries to IntelliJ

, , lib:





Seleccione la carpeta Lib para importar Scala Binaries
Select the Lib folder to import Scala Binaries

Add Scala Support Scala, :





Agregar soporte de Scala
Add Scala Support

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





Marcar fuentes de prueba como raíz en IntelliJ
Mark Test Sources as Root in IntelliJ

src source root:





Marcar la raíz de las fuentes
Mark Sources Root

, Engine



Run:





Ejecute el objeto del motor en 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