Framkvæmdarprófunarrammi með Gatling og Maven

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.




Gatling Maven Test Framework

Forsendur:

Fyrir þessa kennslu þarftu að hafa eftirfarandi uppsett:


  • Java 1.8
  • Maven 3.5
  • IntelliJ með Scala tappi 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 pakki

Í 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ðnir pakki

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)) }

Sviðsmyndir pakki

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) }

Simulations Package

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á

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.