Gatling Yekukurumidza Refer - Yakajairika Gatling Mabasa

Iyi posvo inoshanda seinokurumidza rejista gwara reGatling chishandiso chekuyedza kuita

Pakutanga, takaona maitiro ronga yako Gatling chirongwa mune zvine musoro uye zviri nyore kunzwisisa chimiro.

Mune ino posvo, isu tinotarisa mimwe mienzaniso uye mashandisirwo ezvimwe zvakajairika mabasa eGatling paunenge uchigadzira kuita bvunzo zvinyorwa

Gatling mienzaniso yakafukidzwa mune ino posvo ndeiyi:

Kuenzanisa kuri nyore

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

Uchishandisa HTTP Proxy

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

Mumuenzaniso uri pamusoro, proxy.company.net ndiyo proxy URL uye 8080 ndiyo proxy port.

Zvikumbiro zveHTTP

GET Chikumbiro

Chiri nyore GET chikumbiro nemubvunzo parameter

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

POST Chikumbiro

Muenzaniso POST chikumbiro nemafomu mafomu, i.e. kuendesa fomu:

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

Muenzaniso POST chikumbiro ine faira yekubhadhara iyo inofanirwa kunge iri mu src/test/resources/bodies

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

Muenzaniso

Kumbomira

Ongorora: Kuti ushandise kumbomira, iwe unofanirwa kuwedzera iyi yekuisa
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

Zvishwe

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

Jekiseni revashandisi chaivo

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

Ramp kumusoro

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)

Kamwe chete

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

Cheki uye Assertions

MuGatling, macheki anowanzo shandiswa kutarisa mamodhi emakodhi ekupindura miviri, nepo zvirevo zvinowanzo shandiswa kutaura nezvenguva dzemhinduro.

Macheki

Kuongorora chinzvimbo uye data reJSON:

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

Kuchengetedza mhinduro dzemhinduro kuGatling chikamu

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

Assertions

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

Vanopa

Kushandiswa kwekutanga

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

Kushandiswa kwepamberi

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