Takaddun Gatling mai sauri - Ayyuka na Gatling gama gari

Wannan sakon yana matsayin jagorar jagora mai sauri don Gatling kayan aiki don gwajin gwaji.

A baya can, mun ga yadda ake shirya aikin Gatling din ku cikin tsari mai sauƙin fahimta.

A cikin wannan sakon, zamu kalli wasu misalai da amfani na wasu ayyukan Gatling gama gari lokacin ƙirƙirar rubutun gwajin gwaji.


Misalan tarawa da aka rufe a cikin wannan sakon sune:



Simple kwaikwaiyo

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


Amfani da wakili na HTTP

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

A cikin misalin da ke sama, proxy.company.net shine wakili URL da 8080 shine tashar wakili




Buƙatun HTTP

SAMU Nemi

Neman GET mai sauƙi tare da sigogin tambaya

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

Neman POST

Samfurin buƙatar POST tare da siffofin fure, misali. ƙaddamar da fom:

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

Samfurin POST samfurin tare da cajin fayil wanda dole ne ya kasance cikin src/test/resources/bodies

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


Yanayi

Dakata

Lura: Don amfani da ɗan hutu, kuna buƙatar ƙara wannan shigo da
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


Madaukai

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


Allurar masu amfani da kama-da-wane

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

Karfafa

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)

Nan take

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

Kasuwanci da Takaddun shaida

A cikin Gatling, yawanci ana amfani da cak don bincika ƙungiyoyin amsa lambobin matsayi, yayin da tabbatarwa yawanci ana amfani dasu don tabbatarwa akan lokutan martani.

Dubawa

Duba halin da JSON data:

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

Adana bayanan amsawa zuwa taron Gatling

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

Tabbatarwa

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


Masu ciyarwa

Amfani na asali

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

Na ci gaba mai amfani

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