Yeyiphi indlela ebalaseleyo yokuququzelela kunye nokwakha iprojekthi yeGatling yovavanyo lwentsebenzo?
Xa kuyilwa isakhelo, kuya kufuneka sicinge malunga nokugcinwa kunye nokwandiswa, yiyo loo nto indlela esizicwangcisa ngayo izinto zibaluleke kakhulu.
Kule tutorial, siya kubonisa indlela yokwenza isakhelo sokuvavanya ukusebenza ukususela ekuqaleni usebenzisa iGatling kunye ne-maven.
Izinto ezifuneka kuqala:
Kule khokelo kuya kufuneka ufake oku kulandelayo:
Kuqala, senza iprojekthi esisiseko ngokuqhuba i-maven Gatling archetype:
mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype
Xa usenza lo myalelo ungasentla, uya kuqala ukukhuphela ukuxhomekeka.
Xa ukhuthazwa, bonelela ngamaxabiso 'eqelaId', 'artifactId', kunye 'nohlobo'.
Ukuseta kwam kujongeka njengoku kulandelayo:
Xa uvula iprojekthi, uya kuqaphela ukuba kukho ezinye iifayile kunye neefolda ezingagqibekanga.
Ngaphantsi kwezixhobo, sinazo
imizimba le phakheji ibambe isicelo sokulayisha umthwalo. Umzekelo, unokufumana izicelo zetemplate zezicelo ezahlukeneyo.
idatha le phakheji ibambe idatha oyifunayo ukondla kwiimvavanyo zakho, ezinje ngee-CSV.
Ukongeza kwezi folda zimbini zingasentla, kukho iGatling.conf, logback.xml kunye nerekhoda.conf iifayile. Asizukuxoxa ngale nto kwesi sifundo.
I-Gatling maven archetype ikwadala izinto ezintathu ezisisiseko zeScala, kodwa asizukuzisebenzisa, ke qhubeka ucime izinto.
Ukongeza, siza kudala iiphakheji ezine, qwalasela , izicelo , iimeko , kunye ukulinganisa :
Kwiphakheji yokumisela, yenza into yeScala ebizwa ngokuba yiConfig. Oku kuyakubamba uqwalaselo olwahlukeneyo lweprojekthi yethu njengee-URLs zesicelo, abasebenzisi abangagqibekanga, njl.
package io.devqa.config object Config {
val app_url = 'http://example-app.com'
val users = Integer.getInteger('users', 10).toInt
val rampUp = Integer.getInteger('rampup', 1).toInt
val throughput = Integer.getInteger('throughput', 100).toInt }
Iphakheji yezicelo inezicelo ezahlukeneyo zokusebenza. Umzekelo, sinokuba nesicelo esifumana ithokheni yokugunyazisa. Esinye isicelo sinokusebenzisa ithokheni kwisicelo sangaphambili ukwenza umsebenzisi njalo njalo.
Ezi zizicelo ezizodwa nezizimeleyo ezithunyelwe kwiindawo ezahlukeneyo zokuphela.
GetTokenRequest
package io.devqa.requests import io.gatling.core.Predef._ import io.gatling.http.Predef._ import io.devqa.config.Config.app_url object GetTokenRequest {
val get_token = http('RequestName').get(app_url + '/token')
.check(status is 200)
.check(jsonPath('$..token').saveAs('token')) }
YenzaUserRequest
package io.devqa.requests import io.devqa.config.Config.app_url import io.gatling.core.Predef._ import io.gatling.http.Predef._ object CreateUserRequest {
val sentHeaders = Map('Authorization' -> 'bearer ${token}')
val create_user = exec(http('Create User Request')
.post(app_url + '/users')
.headers(sentHeaders)
.formParam('name', 'John')
.formParam('password', 'John5P4ss')
.check(status is 201)
.check(regex('Created').exists)) }
Iphakheji yemeko ibambe imeko zeshishini. Umzekelo, ukudala umsebenzisi, kufuneka kuqala sifumane ithokheni ye-auth emva koko sithumele ithokheni njengesihloko kunye neefomathi zokwenza umsebenzisi. i.e. sisebenzisa impendulo yesicelo sokuqala ukondla isicelo sesibini. Oku 'kudityaniswa kwezicelo' kuqhelekile kuvavanyo lwe-API.
YakhaUserScenario
package io.devqa.scenarios import io.devqa.requests.{CreateUserRequest, GetTokenRequest} import io.gatling.core.Predef.scenario object CreateUserScenario {
val createUserScenario = scenario('Create User Scenario')
.exec(GetTokenRequest.get_token)
.exec(CreateUserRequest.create_user) }
Okokugqibela, sineeSimulations kwiphakheji yokulinganisa. Unokucinga ngokulinganisa njengeeprofayili ezahlukeneyo zomthwalo. Umzekelo, sinokuba nokulinganisa umthwalo oqhelekileyo okanye ukulinganisa kwespike.
Ukulinganisa kufuneka kube ziiklasi zeScala kwaye kufuneka bandise udidi lokulinganisa.
package io.devqa.simulations import io.devqa.scenarios.CreateUserScenario import io.gatling.core.Predef.Simulation import io.gatling.core.Predef._ import io.devqa.config.Config._ class CreateUserSimulation extends Simulation {
private val createUserExec = CreateUserScenario.createUserScenario
.inject(atOnceUsers(users))
setUp(createUserExec) }
Iprojekthi yakho kufuneka ijongeke ngolu hlobo lulandelayo:
Sifuna ukuguqula ifayile yethu ye-pom.xml ukuze sikwazi ukudlulisa iiparameter, ezinje ngabasebenzisi kunye nokufikelela kwiimvavanyo zethu zokusebenza ngexesha lokusebenza.
Ifayile ye-pom.xml kufuneka ijongeke:
4.0.0
testing-excellence
gatling-framework
1.0-SNAPSHOT
1.8
1.8
UTF-8
2.3.0
2.2.4
1.3.2
CreateUserSimulation
io.gatling.highcharts
gatling-charts-highcharts
${gatling.version}
test
com.typesafe
config
${typesafe-config.version}
io.gatling
gatling-maven-plugin
${gatling-plugin.version}
io.devqa.simulations.${simulation}
-Denv=${env}
-Dusers=${users}
-Drampup=${rampup}
-Dduration=${duration}
-Dthroughput=${throughput}
true
Okokugqibela, ukwenza iklasi yokulinganisa, siqhuba lo myalelo ulandelayo
mvn clean gatling:execute -Dusers=1
Lo myalelo ungasentla uza kuqhuba i-CreateUserSimulation ngomsebenzisi omnye.