Hver er besta leiðin til að skipuleggja og byggja upp Gatling verkefni fyrir árangurspróf?
Við hönnun ramma ættum við að hugsa um viðhald og framlengingu og því er mjög mikilvægt hvernig við skipuleggjum íhlutina.
Í þessari kennslu munum við sýna hvernig á að búa til umgjörðarprófunarramma frá grunni með því að nota Gatling og maven.
Forsendur:
Fyrir þessa kennslu þarftu að hafa eftirfarandi uppsett:
Í fyrsta lagi búum við til grunnverkefni með því að keyra maven Gatling fornminja:
mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype
Þegar þú framkvæmir ofangreinda skipun mun það byrja að hlaða niður ósjálfstæði.
Þegar beðið er um það skaltu leggja fram gildi fyrir „groupId“, „artifactId“ og „version“.
Uppsetning mín lítur út fyrir eftirfarandi:
Þegar þú opnar verkefnið muntu taka eftir því að það eru nokkrar sjálfgefnar skrár og möppur.
Undir auðlindunum höfum við
líkama þessi pakki geymir beiðnin álag. Til dæmis getur þú haft beiðni sniðmát fyrir ýmsar beiðnir.
gögn þessi pakki geymir gögnin sem þú þarft að færa til prófana þinna, svo sem CSV.
Til viðbótar við ofangreindar tvær möppur eru Gatling.conf, logback.xml og recorder.conf skrár. Við munum ekki ræða þetta í þessari kennslu.
Gatling maven archetype býr einnig til þriggja grunn Scala hlut, en við munum ekki nota þá, svo þú skalt halda áfram og eyða hlutunum.
Að auki munum við búa til fjóra pakka, config , beiðnir , atburðarás , og eftirlíkingar :
Í config pakkanum, búðu til Scala hlut sem kallast Config. Þetta mun geyma ýmsar stillingar fyrir verkefnið okkar, svo sem forritaslóðir, sjálfgefnir notendur osfrv.
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 }
Beiðnapakkinn hefur mismunandi aðgerðabeiðnir. Til dæmis gætum við haft beiðni sem fær heimildartákn. Önnur beiðni getur notað táknið frá fyrri beiðni til að búa til notanda og svo framvegis.
Þetta eru einstakar og einangraðar beiðnir sem sendar eru á mismunandi endapunkta.
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')) }
CreateUserRequest
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)) }
Atburðarásarpakkinn geymir sviðsmyndir fyrirtækja. Til dæmis, til að búa til notanda verðum við fyrst að fá auðkenni og síðan senda auðkenni sem haus ásamt formbreytum til að búa til notanda. þ.e.a.s. við notum svar fyrri beiðninnar til að fæða seinni beiðnina. Þessi „keðja beiðna“ er nokkuð algeng í API prófunum.
CreateUserScenario
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) }
Að lokum höfum við Eftirlíkingarnar í eftirlíkingarpakkanum. Þú getur hugsað um eftirlíkingar sem mismunandi álagssnið. Við getum til dæmis haft venjulega álagshermingu eða topphermi.
Uppgerð þarf að vera Scala námskeið og þeir verða að lengja Gatling Simulation bekkinn.
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) }
Verkefnið þitt ætti að líta út eins og eftirfarandi:
Við þurfum einnig að breyta pom.xml skránni okkar til að geta framkvæmt breytur, svo sem notendur og afköst í afköstaprófanir okkar á keyrslutíma.
Pom.xml skráin ætti að líta út eins og:
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
Að lokum, til að framkvæma eftirlíkingarflokkinn, keyrum við eftirfarandi skipun
mvn clean gatling:execute -Dusers=1
Ofangreind skipun mun keyra CreateUserSimulation með 1 notanda.