የአፈፃፀም ሙከራ ማዕቀፍ ከጋቲንግ እና ከማቨን ጋር

ለአፈፃፀም ሙከራ የጋቲንግ ፕሮጀክት ለማደራጀት እና ለማዋቀር የተሻለው መንገድ ምንድነው?

ማዕቀፍ በሚዘጋጅበት ጊዜ ስለ ዘላቂነት እና ስለ ማራዘሚያ ማሰብ አለብን ፣ ስለሆነም አካላትን እንዴት እንደምናደራጅ በጣም አስፈላጊ ነው ፡፡

በዚህ ማጠናከሪያ ትምህርት ውስጥ ጋትሊንግ እና ማውን በመጠቀም ከአፈፃፀም የሙከራ ማዕቀፍ እንዴት መፍጠር እንደሚቻል እናሳያለን ፡፡




የጋቲንግ ማቨን የሙከራ ማዕቀፍ

ቅድመ-ተፈላጊዎች

ለዚህ ማጠናከሪያ ትምህርት የሚከተሉትን መጫን አለብዎት-


  • ጃቫ 1.8
  • ማቨን 3.5
  • IntelliJ ከ Scala Plugin ጋር ተጭኗል

በመጀመሪያ ፣ የመቃኛውን የጋትሊንግ ቅሪተ አካልን በማስኬድ የመሠረት ፕሮጀክት እንፈጥራለን-



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

ከላይ ያለውን ትዕዛዝ ሲፈጽሙ ጥገኛዎችን ማውረድ ይጀምራል ፡፡

ሲጠየቁ ለ ‹groupId› ፣ ‹artifactId› እና ‹ስሪት› እሴቶችን ያቅርቡ ፡፡

የእኔ ቅንብር የሚከተሉትን ይመስላል


ፕሮጀክቱን ሲከፍቱ አንዳንድ ነባሪ ፋይሎች እና አቃፊዎች እንዳሉ ያስተውላሉ።

በሀብቶቹ ስር እኛ አለን


አካላት ይህ ፓኬጅ ጥያቄውን ይጭናል ፡፡ ለምሳሌ ለተለያዩ ጥያቄዎች የጥያቄዎች አብነቶች ሊኖሩዎት ይችላሉ ፡፡

መረጃ ይህ ጥቅል እንደ CSVs ያሉ ሙከራዎችዎን ለመመገብ የሚፈልጉትን መረጃ ይይዛል ፡፡

ከላይ ከተጠቀሱት ሁለት አቃፊዎች በተጨማሪ የ Gatling.conf ፣ logback.xml እና recorder.conf ፋይሎች አሉ ፡፡ በእነዚህ ትምህርቶች ውስጥ ስለእነዚህ አንወያይም ፡፡

የጋትሊንግ maven archetype እንዲሁ ሶስት መሰረታዊ ስካላ ነገርን ይፈጥራል ፣ ግን እኛ አንጠቀምባቸውም ፣ ስለሆነም ይቀጥሉ እና ዕቃዎቹን ይሰርዙ


በተጨማሪም ፣ አራት ጥቅሎችን እንፈጥራለን ፣ ውቅርጥያቄዎችሁኔታዎች ፣ እና ማስመሰያዎች :

ጥቅልን ያዋቅሩ

በማዋቀር ጥቅሉ ውስጥ “Config” የሚባል ስካላ ነገር ይፍጠሩ። ይህ እንደ ትግበራ ዩአርኤሎች ፣ ነባሪ ተጠቃሚዎች ፣ ወዘተ ያሉ ለፕሮጀክቶቻችን የተለያዩ ውቅሮችን ይይዛል…

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 }

የጥያቄዎች ጥቅል

የጥያቄዎች ፓኬጅ የተለያዩ የአሠራር ጥያቄዎችን ይይዛል ፡፡ ለምሳሌ ፣ የፈቃድ ማስመሰያ የሚያገኝ ጥያቄ ሊኖረን ይችላል ፡፡ ሌላ ጥያቄ ተጠቃሚን ለመፍጠር ከቀድሞው ጥያቄ ማስመሰያውን መጠቀም ይችላል እና ወዘተ ፡፡


እነዚህ ወደ ተለያዩ የመጨረሻ ነጥቦች የተላኩ የግለሰብ እና የተለዩ ጥያቄዎች ናቸው ፡፡

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

የምክንያቶች ጥቅል

ትዕይንት ጥቅል የንግድ ሁኔታዎችን ይይዛል ፡፡ ለምሳሌ ፣ ተጠቃሚን ለመፍጠር በመጀመሪያ የአውት ማስመሰያ ማግኘት አለብን ከዚያም ተጠቃሚን ለመፍጠር ከቅርጸት መለኪያዎች ጋር ማስመሰያውን እንደ ራስጌ መላክ አለብን ፡፡ ለሁለተኛው ጥያቄ ለመመገብ የመጀመሪያውን ጥያቄ ምላሽ እንጠቀማለን ፡፡ ይህ “የጥያቄዎች ሰንሰለት” በኤፒአይ ሙከራ ውስጥ በጣም የተለመደ ነው።

ፍጠርUserScenario

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

ማስመሰያዎች ጥቅል

በመጨረሻም ፣ በማስመሰል ጥቅሉ ውስጥ ማስመሰያዎች አሉን ፡፡ እንደ የተለያዩ የጭነት መገለጫዎች ማስመሰሎችን ማሰብ ይችላሉ ፡፡ ለምሳሌ ፣ መደበኛ የጭነት ማስመሰያ ወይም የሾል ማስመሰል ሊኖረን ይችላል ፡፡

ማስመሰያዎቹ የስካላ ክፍሎች መሆን አለባቸው እና የጋቲንግ ማስመሰል ክፍሉን ማራዘም አለባቸው ፡፡

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

የእርስዎ ፕሮጀክት የሚከተሉትን መምሰል አለበት

እንዲሁም እንደ ተጠቃሚዎች ያሉ መለኪያዎች ለማለፍ እና በሩጫ ሰዓት ወደ አፈፃፀማችን ሙከራዎች ማለፍ እንድንችል የእኛን የ pom.xml ፋይል መቀየር አለብን ፡፡

pom.xml ፋይል

የ pom.xml ፋይል መምሰል አለበት:


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





በመጨረሻም ፣ የማስመሰል ክፍሉን ለማስፈፀም የሚከተሉትን ትዕዛዝ እናከናውናለን

mvn clean gatling:execute -Dusers=1

ከላይ ያለው ትዕዛዝ ከ 1 ተጠቃሚ ጋር የ CreativeUserSimulation ን ያስኬዳል።