Fitsapana enta-mavesatra API miaraka amin'ny valala

Fitsapana enta-mavesatra API miaraka amin'ny valala

Fitsapana enta-mavesatra API miaraka amin'ny valala: Intro

Mety efa teo amin'io toe-javatra io ianao taloha: manoratra code izay manao zavatra ianao, teboka farany ohatra. Mitsapa ny tanjonao ianao amin'ny fampiasana Postman na Insomnia, ary mandeha tsara ny zava-drehetra. Mampita ny teboka farany amin'ny mpandrindra amin'ny lafiny mpanjifa ianao, izay mandany ny API ary mametraka ny fampiharana. Saingy avy eo, tsy mahomby ny API rehefa mampiasa ny fampiharana ny mpampiasa.

Ity dia mety ho toe-javatra mahasosotra indrindra, tsy lazaina intsony ny fandaniana ho an'ny orinasa. Izany no mahatonga ny mpamorona rindrambaiko hanao fitsapana isan-karazany amin'ny rafitra rindrambaiko mba hahazoana antoka fa mahavita araka ny nantenaina. Tsy misy hafa ny API. Alohan'ny hametrahana azy dia tokony hanao fitsapana fahombiazana sy fitsapana fiarovana farafaharatsiny ianao.

Ny fitsapana fampiasa dia azo atambatra ho fitsapana fampiasa sy fitsapana entana. Ny fitsapana fampiasa no matetika ampiasainao Postman na Insomnia. Izy ireo dia miantoka fa ny API-nao dia miasa araka izay antenainao. Ny fitsapana enta-mavesatra, etsy ankilany, dia miahiahy bebe kokoa amin'ny fomba fiasan'ny API-nao amin'ny fampiasana eran-tany sy ny enta-mavesatra be indrindra, ary izay no resahin'ity lahatsoratra ity. Andeha hojerentsika amin'ny antsipiriany bebe kokoa ny fitsapana entana.

Inona no atao hoe API Load Testing?

Ny fitsapana enta-mavesatra API dia karazana fitsapana ampiasain'ny mpamorona mba hanahafana ny enta-mavesatra mahazatra sy ambony indrindra amin'ny teboka farany. Ity karazana fitsapana ity dia ahafahan'ny mpamorona manombatombana ny zava-bitan'ny API iray alohan'ny hametrahana azy. Manampy azy ireo hamantatra ny fahafaha-miasa ambony indrindra amin'ny rafitra iray, ny bottleneck raha misy, ary ny fahasimban'ny asa. Ny fitsapana enta-mavesatra API dia matetika atao amin'ny famoronana mpampiasa virtoaly ary avy eo dia mampiasa azy ireo hitsapana ny fiasan'ny API miaraka. 

Ny fitsapana enta-mavesatra API dia mandrefy ny metrika toy ny fotoana famaliana, ny mpampiasa mifanandrify, ny tahan'ny fidirana, ny haavon'ny fampiasana loharano, Mean Time Between Failure(MTBF), Mean Time To Failure(MTTF), sy ny sisa. Ireo metrika rehetra ireo dia azo ampiasaina hamaritana ny fomba fiasan'ny API.

Karazana fitsapana entana

Misy karazana fitsapana entana maromaro, samy manana ny fampiasana azy. Andeha hojerentsika ny sasany amin'izy ireo.

Fitsapana entana: Ity no endrika fototra amin'ny fitsapana entana. Izy io dia ampiasaina hanombanana ny fahombiazan'ny rafitra iray (amin'ity tranga ity, API) eo ambanin'ny entana ara-dalàna sy ny enta-mavesatra andrasana.

Fitsapana adin-tsaina: Izany dia ampiasaina hanombanana ny fahombiazan'ny rafitra iray eo ambanin'ny enta-mavesatra be. Ny tanjon'ity fitsapana ity dia ny hijerena raha miverina amin'ny laoniny ny rafitra iray aorian'ny tsy fahombiazana, ary hafiriana ny fotoana hanaovana izany. Matetika ny enta-mavesatra dia miakatra tsikelikely mandra-pahatongan'izany mihoatra ny fahafahan'ny rafitra.

Fitsapana spike: Mitovitovy kely amin'ny fitiliana adin-tsaina izany, afa-tsy ny enta-mavesatra mavesatra no ampiharina tampoka, fa mifanohitra amin'ny fampiakarana tsikelikely izany. Ity karazana fitsapana ity dia maneho ny zava-mitranga rehefa misy fiakarana tampoka eo amin'ny salan'isa mpampiasa na mpitsidika anao, na rehefa misy fanafihana DDOS amin'ny rafitrao.

Fitsapana soak: Ity fitsapana ity dia tsy mitovy amin'ireo hafa etsy ambony. Mametraka ny rafitrao eo ambanin'ny 80% (na eo ho eo) amin'ny enta-mavesatra ara-dalàna izy io ary mamela azy handeha mandritra ny fotoana maharitra, lazao 12 ka hatramin'ny 14 ora. Ity karazana fitsapana ity dia mamaritra ny maha-azo antoka ny rafitra iray rehefa mandeha ny fotoana.

Alefaso ny fitsapana ny API-nao miaraka amin'ny valala

Ny mpamorona dia afaka miditra amin'ny safidy isan-karazany amin'ny fitiliana entana ny API-ny. Ny fitaovana fitiliana entana mahazatra sasany dia Gatling, JMeter, ary Locust. Hifantoka amin'ny valala isika ato amin'ity lahatsoratra ity.

Locust dia fitaovana fitiliana enta-mavesatra mivelatra miorina amin'ny python ampiasain'ny orinasa ambony toa ny Google, Microsoft, ary Riot Games mba hitsapana ny API-ny. Ato amin'ity lahatsoratra ity, hasehontsika ny fomba hampidirana fitsapana API. 

Ho an'ity lesona ity dia hamorona API tsotra miaraka amin'ny Flask aho. Azonao atao ny manaraka ahy na mamorona ny API anao amin'ny Node, na izay rafitra mety aminao.

Requirements

Python 3

Fametrahana sy fametrahana

Voalohany, mila manangana tontolo virtoaly amin'ny PC-nao ianao mba tsy hanakorontana ny tontolo Python manerantany. Mba hanaovana izany, araho ireto baiko manaraka ireto. Mariho fa mihatra amin'ny terminal Windows ireo baiko ireo.

$ mkdir tetikasa

$ cd /d lalana\to\projet

$ python -m venv venv

$ venv\Scripts\activate

 

Voalohany, namorona a tetikasa lahatahiry. Avy eo dia novanay ny lahatahiry ankehitriny ho tetikasa. Avy eo dia namorona sy navitrika tontolo virtoaly ho an'ny Python ao anatin'io lahatahiry io izahay. 

Ankehitriny, hiroso amin'ny fametrahana isika tavoara(ampiasainay hamoronana ireo teboka farany hozahana ny entana) ary valala tenany. 

 

Raha hametraka Flask, mihazakazaka. Ataovy azo antoka fa ao amin'ny tetikasa izay namoronanao tontolo virtoaly.

$ pip mametraka tavoahangy

 

Raha hametraka Locust, mihazakazaka

$ pip mametraka valala

 

Rehefa vita izany dia soraty ireto baiko manaraka ireto. Ataovy azo antoka fa ao anatinao ianao tetikasa directory rehefa manao izany ianao.

$ copy nul __init__.py

$ mkdir fampiharana

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Ity baiko ity dia mamorona rakitra sasany izay hampiasainay hamoronana ny teboka farany amin'ny fampiasana Flask. Azonao atao ihany koa ny mamorona ireo rakitra ireo amin'ny alàlan'ny fikarohana ny rakitrao. Fa inona no mahafinaritra amin'izany? Rehefa vitanao izany dia adikao ny code etsy ambany app.py

avy amin'ny flask import Flask, jsonify, fangatahana

app = Flask(__name__)

fiara_modely = [

  { 'marika': 'Tesla', 'modely': 'Modely S' }

]

 

plane_models = [

  { 'marika': 'Boeing', 'modely': '747' }

]

 

@app.route('/cars')

def get_cars():

  miverina jsonify(modely_fiara)

@app.route('/planes')

def get_planes():

  miverina jsonify(plane_models)

raha __name__ == '__main__':

    app.run(debug=True)  

 

Ny kaody etsy ambony dia misy fomba iray get_cars nampiasaina mba hahazoana lisitry ny marika fiara sy ny modely, ary get_planes nampiasaina mba hahazoana lisitry ny marika fiaramanidina sy ny modely. Raha te hampiditra fitsapana ity teboka farany ity isika dia mila mihazakazaka app.py. Mba hanaovana izany, araho ny baiko etsy ambany.

$ python path\to\app.py

Rehefa mihazakazaka izany ianao dia tokony hahita zavatra toy izao:

Fitsapana enta-mavesatra API 1

Raha mandika ny URL avy amin'ny terminal ianao ary soraty fiara or fiaramanidina aorian'ny /, tokony ho hitanao ny angon-drakitra ao. Na izany aza, ny tanjonay dia ny hizaha toetra ny teboka farany amin'ny valala, fa tsy amin'ny navigateur. Koa andao hanao izany. Alefaso amin'ny fakan'ny anao ity baiko manaraka ity tetikasa lahatahiry.

 

$ copy nul locust_test.py

 

Izany dia mamorona rakitra 'locust_test.py' ao amin'ny fototry ny anao tetikasa lahatahiry. Rehefa vita izany dia sokafy ny rakitra ary apetaho amin'ny code etsy ambany. Hazavainay ato ho ato.

 

fotoana fanafarana

avy amin'ny fanafarana valala HttpUser, asa, eo anelanelan'ny

 

Class UserBehaviour(HttpUser):

    miandry_fotoana = eo anelanelan'ny(5, 10)

 

    @asa

    def get_cars (tena):

        self.client.get('/cars')

    

    @asa

    def get_planes (tena):

        self.client.get('/planes')

 

Ity dia ohatra fototra amin'ny fampiasana Locust hampidirana fitsapana API. Voalohany, mamorona kilasy isika UserBehaviour, izay azo omena anarana mety nefa tsy maintsy miitatra HttpUser. HttpUser dia ny kilasy izay mikarakara ny instantiating mpampiasa virtoaly maro mba hanatanteraka ny asa voafaritra ao amin'ny UserBehaviour am-pianarana. 

Ny asa iray dia voafaritra amin'ny alalan'ny fandravahana fomba iray amin'ny @asa mpanao haingon-trano. Manana asa antsoina koa izahay eo anelanelan'ny () izay mamela antsika hamaritra segondra vitsivitsy hiandrasana alohan'ny hanatanterahana ny asa manaraka. Hitanao fa nanome 5 ka hatramin'ny 10 segondra izahay ho an'izany ao amin'ny code. 

Mba hampandehanana ny kaody, ataovy azo antoka fa mbola ao amin'ny tontolo virtoaly ianao. Raha ampiasain'ny mpizara manompo ny API ilay noforoninao, sokafy ny terminal vaovao, ovay ny lahatahiry ho anao tetikasa lahatahiry, ary ampio ny tontolo virtoaly noforoninao. Azonao atao ny mahita ny baiko amin'ny fampahavitrihana tontolo virtoaly etsy ambony. Ankehitriny, ampidiro ny baiko etsy ambany ao amin'ny terminal anao.

 

$ valala -f valala_test.py

 

Tokony hahita zavatra toy izao ianao:

Fitsapana enta-mavesatra API 2

Amin'ny alàlan'ny default, ny interface an'ny valala dia hita ao amin'ny http://localhost/8089. Raha mitsidika ny tranokala ianao dia tokony hahita interface toy izao:

Fitsapana enta-mavesatra API 3

Avy amin'ny interface dia azontsika atao ny mamaritra ny isan'ny mpampiasa, ny tahan'ny spawn (mpampiasa noforonina isan-tsegondra), ary ny Host. Azonao atao ny mahazo ny adiresin'ny mpampiantrano anao amin'ny alàlan'ny fanamarinana ny terminal misy ny mpizara. Aminay dia ao amin'ny port 5000 izany. Rehefa tsindrio ianao Manomboka mivondrona, dia haseho anao ny interface eto ambany.

Fitsapana enta-mavesatra API 4

Ity dia mampiseho anao metrika mahasoa isan-karazany toy ny isan'ny fangatahana tsy nahomby, ny fotoana antonony ho an'ny fangatahana iray, ny fotoana kely indrindra hanaovana fangatahana, ny fangatahana isan-tsegondra, sns. Rehefa afa-po amin'izay hitanao ianao dia azonao atao ny manindry ny bokotra fiatoana. 


Ankoatra ny Statistics tab, misy a tabilao tabilao mampiseho bebe kokoa vaovao amin'ny endrika grafika, toy ny sary etsy ambany.

Misy ny fitambaran'ny fangatahana isan-tsegondra, graph de réponse time, ary ny isan'ny mpampiasa grafika, samy nitetika hanohitra ny fotoana. Amin'ny fampiasana ireo grafika dia azonao atao ny mamaritra hoe firy ny mpampiasa azo ekena amin'ny fotoana famaliana raikitra, na azonao atao ny mijery ny tabilaonao mandritra ny fotoana famaliana tsy tapaka na dia eo aza ny fitomboan'ny mpampiasa, sy ny fomba fijery hafa tahaka izany. Raha te hizara ireto ianao by MediaWiki miaraka amin'ny olon-kafa, azonao atao ny misintona tatitra avy amin'ny Ampidiro ny angon-drakitra vakizoro.

Hamaranana...

Ny fitiliana entana ny API-nao dia hetsika tena ilaina amin'ny dingan'ny fivoaranao, koa ataovy izay hahazoana antoka fa tafiditra ao anatin'ny tsingerin'ny famolavolanao izany. Raha ny tokony ho izy, azonao atao ihany koa ny manao karazana fitsapana enta-mavesatra hafa amin'ny alàlan'ny fanovana ny sanda amin'ny isan'ny mpampiasa sy ny tahan'ny spawn. 

Raha te-hanao fitsapana spike ianao, dia manendry sanda lehibe (milaza 2000) ho an'ny isan'ny mpampiasa, ary avy eo sanda lehibe mitovy amin'ny taham-pamokaranao (500 ohatra). Midika izany fa ao anatin'ny 4 segondra dia hanana mpampiasa 2000 rehetra ianao noforonina sy hiditra amin'ny teboka farany. Ny fitsapana adin-tsaina dia hitovy, saingy amin'ny sanda ambany kokoa amin'ny tahan'ny fanatobiana. Raha te hahalala izay rehetra azonao atao dia jereo ny Locust tahirin-kevitra