Jaribio la Mzigo wa API na Nzige

Jaribio la Mzigo wa API na Nzige

Jaribio la Mzigo wa API na Nzige: Intro

Labda umewahi kuwa katika hali hii hapo awali: unaandika nambari ambayo hufanya kitu, mwisho kwa mfano. Unajaribu mwisho wako kwa kutumia Postman au Insomnia, na kila kitu hufanya kazi vizuri. Unapitisha sehemu ya mwisho kwa msanidi wa upande wa mteja, ambaye kisha hutumia API na kupeleka maombi. Lakini basi, API inashindwa wakati watumiaji hutumia programu.

Hii inaweza kuwa hali ya kuudhi sana kuwa nayo, bila kutaja gharama kubwa kwa biashara. Ndiyo maana wasanidi programu hufanya majaribio mbalimbali kwenye mifumo ya programu ili kuhakikisha kuwa inafanya kazi inavyotarajiwa. API sio tofauti. Kabla ya kupeleka, unapaswa kufanya angalau vipimo vya utendaji na vipimo vya usalama.

Majaribio ya utendakazi yanaweza kupangwa katika majaribio ya utendakazi na majaribio ya upakiaji. Vipimo vya utendakazi ndivyo unavyotumia kwa kawaida Postman au Insomnia. Wanahakikisha kuwa API yako inafanya kazi kama unavyotarajia. Majaribio ya mzigo, kwa upande mwingine, yanahusika zaidi na jinsi API yako inavyofanya kazi na matumizi ya ulimwengu halisi na mzigo wa kilele, na hiyo ndiyo makala hii inahusu. Hebu tuangalie vipimo vya mzigo kwa undani zaidi.

Jaribio la Upakiaji wa API ni Nini?

Jaribio la upakiaji wa API ni aina ya majaribio ambayo wasanidi programu hutumia kuiga mzigo wa kawaida na kilele kwenye sehemu za mwisho. Jaribio la aina hii huruhusu wasanidi programu kutathmini utendakazi wa ulimwengu halisi wa API kabla ya kutumwa. Huwasaidia kutambua uwezo wa juu zaidi wa uendeshaji wa mfumo, vikwazo ikiwa vipo, na uharibifu wa utendaji. Majaribio ya upakiaji wa API kawaida hufanywa kwa kuunda watumiaji pepe na kisha kuwatumia kujaribu utendakazi wa API kwa wakati mmoja. 

Majaribio ya upakiaji wa API hupima vipimo kama vile muda wa kujibu, watumiaji wanaotumia wakati mmoja, viwango vya upitishaji, viwango vya utumiaji wa rasilimali, Muda wa Maana Kati ya Kushindwa(MTBF), Muda wa Wastani wa Kushindwa(MTTF), na kadhalika. Vipimo hivi vyote vinaweza kutumika kubainisha jinsi API inavyofanya kazi vizuri.

Aina za Upimaji wa Mzigo

Kuna aina kadhaa za kupima mzigo, kila mmoja na kesi zake za matumizi. Hebu tuangalie baadhi yao.

Jaribio la Mzigo: Hii ndiyo aina ya msingi ya mtihani wa mzigo. Inatumika kutathmini utendakazi wa mfumo (katika kesi hii, API) chini ya mzigo wa kawaida na mzigo wa kilele unaotarajiwa.

Mtihani wa Stress: Hii inatumika kutathmini utendaji wa mfumo chini ya mzigo mzito sana. Madhumuni ya jaribio hili ni kuona ikiwa mfumo utapona baada ya kushindwa, na inachukua muda gani kufanya hivyo. Mzigo kawaida huwekwa juu polepole hadi kuzidi uwezo wa mfumo.

Mtihani wa Mwiba: Hii inafanana kidogo na upimaji wa dhiki, isipokuwa mzigo mzito unatumika ghafla, kinyume na kuuongeza polepole. Jaribio la aina hii linawakilisha kile kinachotokea kunapokuwa na ongezeko la ghafla katika wastani wa idadi ya watumiaji au wageni, au kunapokuwa na shambulio la DDOS kwenye mfumo wako.

Mtihani wa Loweka: Mtihani huu ni tofauti na wengine hapo juu. Inaweka mfumo wako chini ya 80% (au karibu) ya mzigo wa kawaida na kuiacha ikifanya kazi kwa muda mrefu, sema masaa 12 hadi 14. Jaribio la aina hii huamua jinsi mfumo unavyoaminika kwa wakati.

Pakia Kujaribu API Zako Ukitumia Nzige

Wasanidi programu wanaweza kufikia chaguo mbalimbali za kupima API zao. Baadhi ya zana za kawaida za kupima mzigo ni Gatling, JMeter, na Locust. Tutazingatia Nzige katika nakala hii.

Locust ni zana ya kupima upakiaji wa chanzo huria ya chatu inayotumiwa na makampuni maarufu kama vile Google, Microsoft, na Riot Games ili kujaribu API zao. Katika nakala hii, tutaonyesha jinsi ya kupakia mtihani wa API. 

Kwa mafunzo haya, nitakuwa nikiunda API rahisi na Flask. Unaweza kufuata pamoja nami au kuunda tu API yako na Node, au mfumo wowote unaofurahiya nao.

Mahitaji ya

Python 3

Sanidi & Usanidi

Kwanza, unahitaji kusanidi mazingira ya kawaida kwenye PC yako ili usiharibu mazingira yako ya kimataifa ya Python. Ili kufanya hivyo, endesha amri zifuatazo. Kumbuka kuwa amri hizi zinatumika kwa terminal ya Windows.

mradi wa $ mkdir

$ cd /d njia\to\mradi

$ python -m venv venv

$ venv\Scripts\ activate

 

Kwanza, tulitengeneza a mradi saraka. Kisha tukabadilisha saraka yetu ya sasa kuwa mradi. Kisha tukaunda na kuamilisha mazingira ya kawaida ya Python ndani ya saraka hiyo. 

Sasa, tutaendelea kwenye ufungaji Flask(tutatumia kuunda miisho ya kujaribiwa) na Locust yenyewe. 

 

Ili kufunga Flask, endesha. Hakikisha uko kwenye mradi ambapo umeunda mazingira ya mtandaoni.

$ bomba la kusakinisha chupa

 

Ili kufunga Nzige, endesha

$ pip install nzige

 

Mara baada ya hayo, chapa amri zifuatazo. Hakikisha uko ndani yako mradi saraka unapofanya hivi.

$ nakala nul __init__.py

programu ya $ mkdir

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Amri hizi huunda baadhi ya faili ambazo tutatumia kuunda miisho yetu kwa kutumia Flask. Unaweza pia kuunda faili hizi kwa kutumia kichunguzi cha faili yako kwa njia. Lakini kuna furaha gani katika hilo? Mara tu ukishafanya hivyo, nakili nambari iliyo hapa chini kwenye programu.py

kutoka kwa chupa ya kuingiza chupa, jsonify, ombi

programu = Chupa(__jina__)

gari_models = [

  {'brand': 'Tesla', 'model': 'Model S'}

]

 

plane_models = [

  {'brand': 'Boeing', 'model': '747' }

]

 

@app.route('/magari')

def get_cars():

  rudisha jsonify(car_models)

@app.route('/planes')

def get_planes():

  rudisha jsonify(plane_models)

kama __name__ == '__main__':

    app.run(debug=Kweli)  

 

Nambari iliyo hapo juu ina mbinu pata_magari kutumika kupata orodha ya bidhaa za gari na mifano yao, na pata_ndege kutumika kupata orodha ya bidhaa za ndege na mifano yao. Ili sisi kupakia jaribio la mwisho huu, tunahitaji kuendesha app.py. Ili kufanya hivyo, endesha amri ifuatayo.

$ python path\to\app.py

Mara tu unapoendesha hiyo, unapaswa kuona kitu kama hiki:

Jaribio la Upakiaji wa API 1

Ikiwa unakili URL kutoka kwa terminal na kuandika magari or ndege baada ya /, unapaswa kuona data hapo. Walakini, lengo letu ni kujaribu mwisho na nzige, sio na kivinjari. Basi tufanye hivyo. Endesha amri ifuatayo kwenye mzizi wa yako mradi saraka.

 

$ nakala nul locust_test.py

 

Hii inaunda faili ya 'locust_test.py' kwenye mzizi wako mradi saraka. Ukishafanya hivyo, fungua faili na ubandike msimbo ulio hapa chini. Tutaeleza hivi punde.

 

muda wa kuagiza

kutoka kwa kuagiza nzige HttpUser, kazi, kati

 

class UserBehaviour(HttpUser):

    wait_time = kati ya(5, 10)

 

    @kazi

    def get_cars(self):

        self.client.get('/magari')

    

    @kazi

    def get_planes(binafsi):

        self.client.get('/planes')

 

Huu ni mfano wa kimsingi wa kutumia Nzige kupakia jaribio la API. Kwanza, tunaunda darasa Tabia ya Mtumiaji, ambayo inaweza kupewa jina lolote linalofaa lakini lazima iongezeke HttpUser. HttpUser ni darasa linaloshughulikia kuasisi watumiaji wengi pepe ili kutekeleza majukumu tunayobainisha katika Tabia ya Mtumiaji darasa. 

Kazi imeainishwa kwa kupamba njia na @kazi mpambaji. Pia tunayo kipengele kinachoitwa kati () hiyo huturuhusu kubainisha safu ya sekunde kusubiri kabla ya kutekeleza jukumu linalofuata. Unaweza kuona kwamba tuligawa safu ya sekunde 5 hadi 10 kwa hiyo katika nambari yetu. 

Ili kutekeleza msimbo, hakikisha bado uko katika mazingira yako pepe. Ikiwa ile uliyounda inatumiwa na seva inayohudumia API, fungua terminal mpya, ubadilishe saraka yako kuwa yako mradi directory, na kuamilisha mazingira virtual uliyounda. Unaweza kupata amri ya kuwezesha mazingira ya mtandaoni hapo juu. Sasa, ingiza amri hapa chini kwenye terminal yako.

 

$ nzige -f locust_test.py

 

Unapaswa kuona kitu kama hiki:

Jaribio la Upakiaji wa API 2

Kwa chaguo-msingi, kiolesura cha wavuti cha nzige kiko katika http://localhost/8089. Ukitembelea tovuti, unapaswa kuona kiolesura kama hiki:

Jaribio la Upakiaji wa API 3

Kutoka kwa kiolesura, tunaweza kubainisha idadi ya watumiaji, kiwango cha kuzaa (watumiaji walioundwa kwa sekunde), na Seva. Unaweza kupata anwani ya mwenyeji wako kwa kuangalia terminal ambapo seva inafanya kazi. Kwa upande wetu, iko kwenye bandari 5000. Unapobofya Anza kutamba, utawasilishwa na kiolesura hapa chini.

Jaribio la Upakiaji wa API 4

Hii inakuonyesha vipimo mbalimbali muhimu kama vile idadi ya maombi ambayo hayajafaulu, wastani wa muda wa ombi, muda wa chini zaidi wa ombi, maombi kwa sekunde, na kadhalika. Ukisharidhika na unachokiona, unaweza kubofya kitufe cha kusitisha. 


Mbali na hilo Takwimu tab, kuna a Chati kichupo kinachoonyesha zaidi habari kwa namna ya grafu, kama picha hapa chini.

Kuna jumla ya maombi kwa kila grafu ya pili, grafu ya wakati wa majibu, na idadi ya grafu ya watumiaji, yote yalipangwa kinyume na wakati. Kwa kutumia grafu, unaweza kubainisha ni watumiaji wangapi wanaokubalika kwa muda uliowekwa wa kujibu, au unaweza kutazama chati zako kwa muda wa kujibu mara kwa mara licha ya kuongezeka kwa idadi ya watumiaji, na maarifa mengine kama hayo. Ukitaka kushiriki haya stats na mtu mwingine, unaweza kupakua ripoti kutoka kwa Pakua Data Tab.

Kuhitimisha...

Kujaribu API yako ni shughuli muhimu katika mchakato wako wa uundaji, kwa hivyo hakikisha kuwa imejumuishwa katika mzunguko wako wa muundo. Kwa njia, unaweza pia kutekeleza aina zingine za majaribio ya mzigo kwa kubadilisha maadili ya idadi ya watumiaji na kiwango cha kuzaa. 

Ikiwa unataka kufanya jaribio la mwiba, taja thamani kubwa (sema 2000) kwa idadi ya watumiaji, na kisha thamani kubwa sawa kwa kiwango chako cha kuzaa (500 kwa mfano). Hii inamaanisha kuwa katika sekunde 4, watumiaji wote 2000 wataundwa na kufikia vidokezo vyako. Jaribio la dhiki litakuwa sawa, lakini kwa thamani ya chini sana kwa kiwango cha kuzaa. Ili kujua yote unayoweza kufanya, angalia Nzige nyaraka