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, .
1. Gatling
Gatling - Gatling Gatling.io. «Download Now», ZIP-:
. bin. :
gatling.bat - Windows
gatling.sh - Mac Unix
Gatling :
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-, :
Gatling - , .
Chrome Developer Tools Network.
Clear, , , .
, - , - , . . , Network .
Network
«Save all as HAR with content»
. - .
bin Gatling ( Gatling )
recorder.sh
Mac/Unixrecorder.bat
Windows. Gatling Recorder.
Recorder Mode
HAR Converter
.
HAR File HAR-, 5.
, Class Name , ,
MyComputerTest
.
Start!
, , , .
, 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. . , :
Gradle, . , Gatling Gradle, Gradle Gatling lkishalmi. Gatling Gradle — , .
- 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. :
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.
, , pom.xml
. open, Intellij IDE .
, , Project Directory src>test>scala. Engine.scala. No Scala SDK in module
. , Setup Scala SDK:
, Scala :
, , Create, 2.12 download:
: Scala 2.12 IntelliJ - 2.13, , Gatling
, Scala IntelliJ, Scala Scala-lang. Download the Scala binaries, :
- ZIP-. IntelliJ, Setup Scala SDK, Configure. Add :
, , lib:
Add Scala Support Scala, :
, scala source root IntelliJ. scala Mark Directory As -> Test Sources Root:
src source root:
, Engine
Run:
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-.