Test de charge Gatling - Le guide complet. Partie 1

Cet article est un guide complet, détaillé et complet pour utiliser efficacement Gatling pour les tests de charge. Vous pouvez également consulter mes didacticiels vidéo YouTube Gatling où je vais plus en détail sur ce sujet.





Aperçu du manuel

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





Télécharger Gatling
Download Gatling

. bin. :





  • gatling.bat - Windows





  • gatling.sh - Mac Unix





Gatling :





Choisissez Gatling Simulation pour exécuter
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. , , , .





Capture d'écran 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. :





Choisissez la version 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.





Importer le projet 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:





Importer le SDK Scala dans IntelliJ
Import Scala SDK in IntelliJ

, Scala :





Versions de Scala dans IntelliJ
Scala versions in IntelliJ

, , Create, 2.12 download:





: Scala 2.12 IntelliJ - 2.13, , Gatling





Télécharger Scala dans Intelli
Download Scala in Intelli

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





Télécharger les binaires Scala depuis Scala-lang
Download Scala binaries from Scala-lang

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





Ajouter les binaires Scala à IntelliJ
Add the Scala binaries to IntelliJ

, , lib:





Sélectionnez le dossier Lib pour importer des binaires Scala
Select the Lib folder to import Scala Binaries

Add Scala Support Scala, :





Ajouter le support Scala
Add Scala Support

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





Marquer les sources de test comme racine dans IntelliJ
Mark Test Sources as Root in IntelliJ

src source root:





Marquer la racine des sources
Mark Sources Root

, Engine



Run:





Exécutez l'objet moteur dans 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