የጋቲንግ ፈጣን ማጣቀሻ - የተለመዱ የመሰብሰብ ተግባራት

ይህ ልጥፍ ለአፈፃፀም ሙከራ ለጋቲንግ መሣሪያ እንደ ፈጣን የማጣቀሻ መመሪያ ሆኖ ያገለግላል ፡፡

ከዚህ በፊት ፣ እንዴት እንደነበረ አይተናል የጋቲንግ ፕሮጀክትዎን ያደራጁ በአመክንዮ እና ለመረዳት ቀላል በሆነ አወቃቀር።

በዚህ ልኡክ ጽሁፍ የአፈፃፀም ሙከራ ስክሪፕቶችን ሲፈጥሩ አንዳንድ የተለመዱ የጋትንግንግ ተግባራት አንዳንድ ምሳሌዎችን እና አጠቃቀሞችን እንመለከታለን ፡፡


በዚህ ልጥፍ ውስጥ የተካተቱት የመሰብሰብ ምሳሌዎች-



ቀላል ማስመሰል

import io.gatling.core.Predef._ import io.gatling.http.Predef._ class SimplestSimulation extends Simulation {
setUp(scenario('Homepage')
.exec(http('Home').get('https://devqa.io'))
.inject(atOnceUsers(1))) }


የኤችቲቲፒ ፕሮክሲን በመጠቀም

setUp(scenario('Proxy on')
.exec(http('World').get('https://devqa.io'))
.inject(atOnceUsers(1)))
.protocols(http.proxy(Proxy('proxy.company.net', 8080))) }

ከላይ በተጠቀሰው ምሳሌ ውስጥ proxy.company.net ተኪ ዩአርኤል እና 8080 ነው ተኪ ወደብ ነው




የኤችቲቲፒ ጥያቄዎች

ጥያቄ ያግኙ

ከጥያቄ መለኪያዎች ጋር ቀላል የ GET ጥያቄ



http('Get Gatling posts')
.get('https://devqa.io')
.queryParam('post', 'gatling')
.queryParam('category', 'performance testing')
.header('Accept-Language', 'en')

የፖስታ ጥያቄ

ከቅጽ ፓራማዎች ጋር ናሙና የ POST ጥያቄ ፣ ለምሳሌ። ቅጽ ማስገባት

http('POST with params')
.post('https://www.example.com/login')
.formParam('firstname', 'David')
.formParam('lastname', 'Brown')
.header('Accept-Language', 'en')

src/test/resources/bodies ውስጥ መሆን ያለበት ከፋይ ፋይል ክፍያ ጋር የናሙና ፖስት ጥያቄ

http('Post with file payload')
.post('https://example.com/users')
.body(RawFileBody('bodyFileName.json')).asJSON
.header('Content-type','application/json')


ሁኔታ

ለአፍታ ማቆም

ማስታወሻ: ለአፍታ ቆም ለማለት ይህንን ማስመጣት ማከል ያስፈልግዎታል
import scala.concurrent.duration.DurationInt


scenario('with secode pause')
// ...
.pause(2, 3) // will make a random pause of 2-3 seconds
.pause(2) // will make a fixed pause of 2 seconds
scenario('millisecond pause')
// ...
.pause(200.milliseconds) // fixed pause of 0.2 second


ቀለበቶች

scenario('repeat')
.repeat(3)( // repeat 3 times
exec(http('google').get('https://www.example.com'))
)


ምናባዊ ተጠቃሚዎች መርፌ

val scn=scenario('Virtual users') setUp(
scn.inject(
nothingFor(4.seconds),
atOnceUsers(10),
rampUsers(10) over(5.seconds))

መወጣጫ

rampUsers(10) over(5.seconds)
// linear rampup
// 10 users added over 5 seconds (1 extra user every 500 ms)
constantUsersPerSec(10) during(5.seconds)
// adds 10 users every second
// (so a total of 50 users after 5 seconds)

አንድ ጊዜ

nothingFor(4.seconds) // no new users added during 4 seconds atOnceUsers(10) // 10 users added immediately // not really recommended since it can hammer down the tested server heavisideUsers(10) over(2.seconds) // better approximation of a peak of users

ቼኮች እና ማረጋገጫዎች

በጋትሊንግ ውስጥ ቼኮች አብዛኛውን ጊዜ የሁኔታ ኮዶች ምላሽ ሰጪ አካላት ለመፈተሽ ያገለግላሉ ፣ ግን ማረጋገጫዎች በመደበኛነት የምላሽ ጊዜዎችን ለማሳየት ያገለግላሉ ፡፡

ቼኮች

ሁኔታን እና የ JSON መረጃን ማረጋገጥ-

http('name').get('/path')
.check(status.is(200))
.check(jsonPath('$.name').is('some name'))

የምላሽ ውሂብን ወደ ጋቲንግ ክፍለ ጊዜ በማስቀመጥ ላይ

http('name').get('/path')
.check(header('location').saveAs('newLocation'))
.check(jsonPath('$.name').saveAs('name'))
// You can now use $newLocation and $name in your requests :
http('get home').get('/users/${name}')

ማረጋገጫዎች

setUp(scn).assertions(
global.responseTime.mean.lt(50), // mean resp time < 50 ms
forAll.failedRequests.percent.gt(5) // for each request, < 5% failure )


መጋቢዎች

መሠረታዊ አጠቃቀም

val feeder1 = Array(
Map('foo' -> 'foo1', 'bar' -> 'bar1'),
Map('foo' -> 'foo2', 'bar' -> 'bar2'),
Map('foo' -> 'foo3', 'bar' -> 'bar3') ) // repeating the values val feeder1a = feeder1.circular val feeder1b = feeder1.random // infinite entries with keys 'value1', 'value2' val feeder2 = Iterator.continually(Map('value1' -> 100, 'value2' -> 'toto')) // infinite random entries val feeder3 = Iterator.continually(Map(
'value1' -> Random.nextInt(100),
'value2' -> Random.alphanumeric.take(4)) ) // using the feeder to build the URLs scenario('scenario name')
.feed(feeder)
.exec(http('request name')
.get('/path/${value1}') )

የላቀ አጠቃቀም

// reading a csv file to build a feeder val feeder = csv('data.csv') // the csv file must have a header row which defines the keys and be comma (,) separated // filling a template file with the content of a feeder scn.feed(feeder).exec(
http('request name')
.post('https://www.example.com')
.body(ElFileBody('filename.xml')).asXML))