Ilana Idanwo Iṣẹ pẹlu Gatling ati Maven

Kini ọna ti o dara julọ lati ṣeto ati ṣeto iṣẹ akanṣe Gatling kan fun idanwo iṣe?

Nigbati o ba ṣe agbekalẹ ilana kan, o yẹ ki a ronu nipa iduroṣinṣin ati ifaagun, nitorinaa bawo ni a ṣe ṣeto awọn paati jẹ pataki pupọ.

Ninu ẹkọ yii, a yoo fihan bi a ṣe le ṣẹda ilana idanwo iṣẹ lati ori lilo Gatling ati maven.




Ilana Idanwo Maven Gatling

Awọn ibeere-tẹlẹ:

Fun ẹkọ yii o nilo lati fi sori ẹrọ atẹle:


  • Java 1.8
  • Maven 3.5
  • IntelliJ pẹlu Ohun itanna Scala ti fi sii

Ni akọkọ, a ṣẹda iṣẹ ipilẹ nipasẹ ṣiṣe maven Gatling archetype:

mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype

Nigbati o ba ṣe aṣẹ ti o wa loke, yoo bẹrẹ gbigba awọn igbẹkẹle lati ayelujara.

Nigbati o ba ṣetan, pese awọn iye fun 'groupId', 'artifactId', ati 'version'.

Eto mi dabi awọn atẹle:


Nigbati o ṣii iṣẹ naa, iwọ yoo ṣe akiyesi pe diẹ ninu awọn faili aiyipada ati awọn folda wa.

Labẹ awọn orisun, a ni


awọn ara package yii ni awọn isanwo ibeere. Fun apẹẹrẹ, o le ni awọn awoṣe ibeere fun ọpọlọpọ awọn ibeere.

data package yii ni data ti o nilo lati jẹun si awọn idanwo rẹ, bii CSVs.

Ni afikun si awọn folda meji ti o wa loke, awọn faili Gatling.conf, logback.xml ati awọn faili recorder.conf wa. A kii yoo jiroro iwọnyi ninu ẹkọ yii.

Gatling maven archetype tun ṣẹda ohun ipilẹ Scala mẹta, ṣugbọn a kii yoo lo wọn, nitorinaa lọ siwaju ki o paarẹ awọn nkan naa.


Ni afikun, a yoo ṣẹda awọn idii mẹrin, atunto , awọn ibeere , awọn oju iṣẹlẹ , ati iṣeṣiro :

Ṣe atunto Package

Ninu package atunto, ṣẹda nkan Scala ti a pe ni Config. Eyi yoo mu ọpọlọpọ awọn atunto fun iṣẹ wa bii Awọn URL ohun elo, awọn olumulo aiyipada, ati bẹbẹ lọ…

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 }

Awọn ibeere Package

Apakan awọn ibeere ni awọn ibeere iṣẹ oriṣiriṣi. Fun apẹẹrẹ, a le ni ibeere ti o gba ami aṣẹ aṣẹ. Ibeere miiran le lo àmi lati ibeere ti tẹlẹ lati ṣẹda olumulo kan ati bẹbẹ lọ.


Iwọnyi jẹ awọn ibeere kọọkan ati ti ya sọtọ ti a firanṣẹ si awọn opin opin oriṣiriṣi.

GbaTokenRequest

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

ṢẹdaUserRequest

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

Package Awọn iṣẹlẹ

Apakan iṣẹlẹ naa mu awọn oju iṣẹlẹ iṣowo. Fun apẹẹrẹ, lati ṣẹda olumulo kan, a ni akọkọ lati ni ami auth ati lẹhinna fi ami naa sii bi akọsori pẹlu awọn ipilẹ fọọmu lati ṣẹda olumulo kan. ie a lo idahun ti ibere akọkọ lati jẹun si ibeere keji. Eyi “ẹwọn awọn ibeere” jẹ ohun wọpọ ni idanwo API.

ṢẹdaUserScenario

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

Iṣeṣiro Package

Lakotan, a ni Awọn iṣeṣiro ninu apopọ awọn iṣeṣiro. O le ronu ti awọn iṣeṣiro bi awọn profaili fifuye oriṣiriṣi. Fun apẹẹrẹ, a le ni iṣeṣiro fifuye deede tabi iṣeṣiro iwasoke.

Awọn iṣeṣiro nilo lati jẹ awọn kilasi Scala ati pe wọn gbọdọ fa kilasi Iṣiro Gatling.

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

Ise agbese rẹ yẹ ki o dabi awọn atẹle:

A tun nilo lati yipada faili pom.xml wa lati ni anfani lati kọja awọn ipele, gẹgẹbi awọn olumulo ati ṣiṣe nipasẹ awọn idanwo iṣẹ wa ni asiko asiko.

faili pom.xml

Faili pom.xml yẹ ki o dabi:


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





Lakotan, lati ṣiṣẹ kilasi kikopa, a nṣiṣẹ aṣẹ wọnyi

mvn clean gatling:execute -Dusers=1

Aṣẹ ti o wa loke yoo ṣiṣe ṢẹdaUUSerSimulation pẹlu olumulo 1.