Wace hanya ce mafi kyau don tsarawa da tsara aikin Gatling don gwajin gwaji?
Lokacin zayyana tsari, ya kamata muyi tunani game da dorewa da fadadawa, saboda haka yadda muke tsara abubuwan yana da mahimmanci.
A cikin wannan darasin, za mu nuna yadda za a ƙirƙiri tsarin gwajin aiki daga farawa ta amfani da Gatling da maven.
Abubuwan da ake buƙata:
Don wannan karatun kuna buƙatar shigar da waɗannan masu zuwa:
Da farko, muna ƙirƙirar tushe ta hanyar gudanar da maƙalar Gatling archetype:
mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype
Lokacin da kuka aiwatar da umarnin da ke sama, zai fara sauke abubuwan dogaro.
Lokacin da aka sa ka, samar da kimomi don 'groupId', 'artifactId', da 'version'.
Saituna yana kama da mai zuwa:
Lokacin da kuka buɗe aikin, zaku lura akwai wasu tsoffin fayiloli da manyan fayiloli.
A karkashin albarkatun, muna da
jikin wannan kunshin yana ɗaukar nauyin biyan kuɗi. Misali, zaku iya samun samfuran buƙatun don buƙatu daban-daban.
bayanai wannan kunshin yana riƙe da bayanan da kuke buƙatar ciyarwa don gwajin ku, kamar su CSVs.
Baya ga manyan fayilolin guda biyu da ke sama, akwai fayilolin Gatling.conf, logback.xml da rikodin.conf. Ba za mu tattauna waɗannan a cikin wannan koyawa ba.
Gatling maven archetype shima yana ƙirƙirar abu uku na Scala, amma ba zamuyi amfani dasu ba, don haka ci gaba da share abubuwan.
Bugu da kari, za mu kirkiro fakiti hudu, daidaitawa , buƙatun , al'amuran , da kwaikwayo :
A cikin fakitin saitin, ƙirƙirar abu na Scala da ake kira Config. Wannan zai riƙe abubuwa daban-daban don aikinmu kamar URLs na aikace-aikace, masu amfani da tsoho, da sauransu…
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 }
Kunshin buƙatun yana riƙe buƙatun aiki daban. Misali, muna iya samun buƙatun da ke samun alamar izini. Wani buƙatun na iya amfani da alamar daga buƙata ta baya don ƙirƙirar mai amfani da sauransu.
Waɗannan buƙatun mutum ne da keɓaɓɓu waɗanda aka aika zuwa ƙarshen ƙarshen ra'ayi.
Takaddama
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)) }
Kunshin yanayin yana riƙe da yanayin kasuwanci. Misali, don ƙirƙirar mai amfani, da farko dole ne mu sami alamar auth sannan kuma aika alamar a matsayin taken kai tsaye tare da sifofin tsari don ƙirƙirar mai amfani. watau muna amfani da amsar buƙata ta farko don ciyarwa zuwa buƙata ta biyu. Wannan “sarƙar buƙatun” ya zama gama gari a gwajin API.
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 ƙarshe, muna da Abubuwan kwaikwayo a cikin fakitin kwaikwayon. Kuna iya tunanin kwaikwaiyo azaman bayanan martaba daban-daban. Misali, zamu iya samun kwatancen kayan aiki na yau da kullun ko karuwar karu.
Abubuwan kwaikwayo suna buƙatar zama azuzuwan Scala kuma dole ne su faɗaɗa ajin Samarwa 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) }
Ya kamata aikinku yayi kama da masu zuwa:
Har ila yau, muna buƙatar gyara fayil ɗinmu na pom.xml don samun damar wuce sigogi, kamar masu amfani da ƙididdigar gwajin gwajinmu a lokacin aiki.
Fayil ɗin pom.xml yakamata yayi kama:
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 ƙarshe, don aiwatar da rukunin kwaikwaiyo, muna gudanar da wannan umarnin
mvn clean gatling:execute -Dusers=1
Umurnin da ke sama zai gudana theirƙirarSimulation tare da mai amfani 1.