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, .
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-.