Санҷиши сарбории API бо малах

Санҷиши сарбории API бо малах

Санҷиши сарбории API бо малах: Intro

Эҳтимол шумо қаблан дар ин вазъият қарор дошта бошед: шумо рамзеро менависед, ки коре мекунад, масалан нуқтаи ниҳоӣ. Шумо нуқтаи ниҳоии худро бо истифода аз Postman ё Insomnia месанҷед ва ҳама чиз хуб кор мекунад. Шумо нуқтаи ниҳоиро ба таҳиягари муштарӣ мегузоред, ки баъдан онро истеъмол мекунад API ва барномаро ҷойгир мекунад. Аммо баъд, вақте ки корбарон барномаро истифода мебаранд, API ноком мешавад.

Ин метавонад вазъияти хеле озурдаовар бошад, ки барои тиҷорат гаронарзишро қайд намекунад. Аз ин рӯ, таҳиягарони нармафзор дар системаҳои нармафзор озмоишҳои гуногун мегузаронанд, то онҳо мувофиқи интизорӣ кор кунанд. APIҳо фарқ надоранд. Пеш аз ҷойгиркунӣ, шумо бояд ҳадди аққал санҷишҳои иҷроиш ва санҷишҳои бехатариро анҷом диҳед.

Санҷишҳои иҷроишро метавон ба санҷишҳои функсионалӣ ва санҷишҳои сарборӣ гурӯҳбандӣ кард. Санҷишҳои функсионалӣ он чизест, ки шумо одатан Postman ё Insomnia-ро барои он истифода мебаред. Онҳо кафолат медиҳанд, ки API-и шумо тавре ки шумо интизор будед, кор мекунад. Аз тарафи дигар, санҷишҳои боркунӣ бештар ба он нигаронида шудаанд, ки API-и шумо бо истифодаи воқеӣ ва сарбории баланд чӣ гуна иҷро мекунад ва ин мақола дар бораи он аст. Биёед санҷишҳои боркуниро ба таври муфассал дида бароем.

Санҷиши сарбории API чист?

Санҷиши сарбории API як навъи озмоишест, ки таҳиягарон барои тақлид кардани сарбории муқаррарӣ ва қуллаи нуқтаҳо истифода мебаранд. Ин намуди санҷиш ба таҳиягарон имкон медиҳад, ки иҷрои воқеии API-ро пеш аз ҷойгир кардани он арзёбӣ кунанд. Он ба онҳо кӯмак мекунад, ки қобилияти ҳадди аксар кори система, монеаҳо, агар вуҷуд дошта бошанд ва таназзули фаъолиятро муайян кунанд. Санҷишҳои сарбории API одатан тавассути эҷоди корбарони маҷозӣ ва сипас истифода аз онҳо барои санҷидани функсияи API ҳамзамон анҷом дода мешаванд. 

Санҷишҳои сарбории API ченакҳоро ба монанди вақти вокуниш, корбарони ҳамзамон, суръати интиқол, сатҳи истифодаи захираҳо, вақти миёнаи байни нокомӣ (MTBF), вақти миёнаи нокомӣ (MTTF) ва ғайра чен мекунанд. Ҳамаи ин нишондиҳандаҳоро барои муайян кардани он, ки API то чӣ андоза хуб кор мекунад, истифода бурдан мумкин аст.

Намудҳои санҷиши бор

Якчанд намуди санҷиши сарборӣ вуҷуд дорад, ки ҳар кадоми онҳо ҳолатҳои истифодаи он доранд. Биёед ба баъзеи онҳо назар андозем.

Санҷиши сарборӣ: Ин шакли асосии санҷиши сарборӣ мебошад. Он барои арзёбии кори система (дар ин ҳолат, API) дар зери сарбории муқаррарӣ ва сарбории авҷи интизоршуда истифода мешавад.

Санҷиши стресс: Ин барои арзёбии кори система дар зери бори хеле вазнин истифода мешавад. Ҳадафи ин санҷиш аз он иборат аст, ки оё система пас аз нокомӣ барқарор мешавад ва барои ин чӣ қадар вақт лозим аст. Сарборӣ одатан оҳиста афзоиш меёбад, то он даме, ки он аз имкониятҳои система зиёд шавад.

Санҷиши хӯша: Ин ба озмоиши стресс каме монанд аст, ба истиснои он ки бори вазнин ногаҳон ба кор медарояд, баръакс ба оҳиста-оҳиста боло бурдани он. Ин намуди санҷиш нишон медиҳад, ки ҳангоми афзоиши якбораи шумораи миёнаи корбарон ё меҳмонони шумо ё ҳангоми ҳамлаи DDOS ба системаи шумо чӣ мешавад.

Санҷиши обкашӣ: Ин санҷиш аз дигарҳои дар боло зикршуда фарқ мекунад. Он системаи шуморо зери 80% (ё тақрибан) бори муқаррарӣ мегузорад ва онро барои муддати тӯлонӣ, масалан, аз 12 то 14 соат кор мекунад. Ин намуди санҷиш муайян мекунад, ки то чӣ андоза система бо мурури замон эътимоднок аст.

Санҷиши API-ҳои худро бо малах бор кунед

Таҳиягарон ба имконоти мухталиф барои санҷиши сарбории API-ҳои худ дастрасӣ доранд. Баъзе асбобҳои маъмулии санҷиши сарборӣ Gatling, JMeter ва Locust мебошанд. Мо дар ин мақола ба малах таваҷҷӯҳ хоҳем кард.

Малах як воситаи санҷиши сарбории кушодаи питон аст, ки аз ҷониби ширкатҳои беҳтарин ба монанди Google, Microsoft ва Riot Games барои санҷиши API-ҳои худ истифода мешаванд. Дар ин мақола, мо нишон медиҳем, ки чӣ гуна санҷиши API-ро бор кардан мумкин аст. 

Барои ин дарс, ман бо Flask API оддӣ эҷод мекунам. Шумо метавонед бо ман пайравӣ кунед ё танҳо API-и худро бо Node ё ҳар чаҳорчӯбае, ки ба шумо мувофиқ аст, эҷод кунед.

Талабот

Python 3

Насб ва насб

Аввалан, шумо бояд дар компютери худ муҳити виртуалӣ таъсис диҳед, то шумо муҳити ҷаҳонии Python-и худро вайрон накунед. Барои ин, фармонҳои зеринро иҷро кунед. Дар хотир доред, ки ин фармонҳо ба терминали Windows дахл доранд.

$ mkdir лоиҳа

$ cd /d роҳ ба лоиҳа

$ python -m venv venv

$ venv\Scripts\activate

 

Аввалан, мо як лоиҳа директория. Сипас, мо феҳристи ҷории худро ба он иваз кардем лоиҳа. Пас аз он мо дар дохили он директория муҳити виртуалиро барои Python эҷод ва фаъол кардем. 

Акнун мо ба насбкунӣ мегузарем Flask(мо онро барои сохтани нуқтаҳои ниҳоӣ барои санҷидашуда истифода хоҳем кард) ва Лок худ. 

 

Барои насб кардани Flask, иҷро кунед. Боварӣ ҳосил кунед, ки шумо дар лоиҳа ки дар он шумо муҳити маҷозӣ сохтаед.

$ pip шиша насб кунед

 

Барои насб кардани Малах, иҷро кунед

$ pip насб кардани малах

 

Пас аз анҷом додани ин, фармонҳои зеринро нависед. Боварӣ ҳосил кунед, ки шумо дар худ ҳастед лоиҳа директория, вақте ки шумо ин корро мекунед.

$ нусхаи nul __init__.py

Барномаи $ mkdir

$ нусхабардории nul app\app.py

$ нусхаи nul барнома\__init__.py

 

Ин фармон баъзе файлҳоро эҷод мекунад, ки мо онҳоро барои сохтани нуқтаҳои ниҳоии худ бо истифода аз Flask истифода мебарем. Шумо инчунин метавонед ин файлҳоро бо истифода аз Explorer файли худ эҷод кунед. Аммо дар ин чӣ шавқовар аст? Пас аз он ки шумо ин корро анҷом додед, рамзи дар поён овардашударо ба он нусхабардорӣ кунед app.py

аз колба воридот Колба, jsonify, дархост

барнома = Колба (__ном__)

моделҳои мошин = [

  { 'бренд': 'Tesla', 'model': 'Model S' }

]

 

ҳавопаймо_моделҳо = [

  { 'бренд': 'Boeing', 'модел': '747' }

]

 

@app.route('/cars')

def get_cars ():

  jsonify баргардонед (моделҳои мошин)

@app.route('/planes')

def get_planes ():

  баргардонидани jsonify (plane_models)

агар __ном__ =='__асосӣ__':

    app.run(debug=Дуруст)  

 

Рамзи дар боло овардашуда як усулро дар бар мегирад даст_мошинҳо барои гирифтани руйхати маркахои мошинхо ва моделхои онхо истифода мешуд ва даст_ҳавопаймоҳо барои гирифтани руйхати маркахои самолёт ва моделхои онхо истифода мешуд. Барои он ки мо ин нуқтаи ниҳоиро бор кунем, мо бояд app.py-ро иҷро кунем. Барои ин, фармони зерро иҷро кунед.

$ python path\to\app.py

Пас аз он ки шумо онро иҷро мекунед, шумо бояд чунин чизеро бинед:

Санҷиши сарбории API 1

Агар шумо URL-ро аз терминал нусхабардорӣ кунед ва нависед автомобилхо or ҳавопаймоҳо пас аз /, шумо бояд маълумотро дар он ҷо бубинед. Аммо, ҳадафи мо ин аст, ки нуқтаи ниҳоиро бо малах санҷем, на бо браузер. Пас биёед ин корро кунем. Фармони зеринро дар решаи худ иҷро кунед лоиҳа феҳристи.

 

$ нусхаи nul locust_test.py

 

Ин дар решаи файли шумо файли 'locust_test.py' эҷод мекунад лоиҳа директория. Пас аз он ки шумо ин корро анҷом додед, файлро кушоед ва рамзи зеринро часбонед. Мо онро ба зудӣ шарҳ медиҳем.

 

вақти воридот

аз воридоти малах HttpUser, вазифа, байни

 

class UserBehaviour (HttpUser):

    вақти интизорӣ = байни(5, 10)

 

    @вазифа

    def get_cars(худ):

        self.client.get('/cars')

    

    @вазифа

    def get_planes(худ):

        self.client.get('/planes')

 

Ин як мисоли асосии истифодаи Малах барои бор кардани санҷиши API мебошад. Аввалан, мо синф эҷод мекунем Рафтори корбар, ки метавонад ба ҳама гуна номи мувофиқ дода шавад, аммо бояд дароз карда шавад HttpUser. HttpUser синфест, ки барои эҷоди корбарони сершумори маҷозӣ барои иҷрои вазифаҳое, ки мо дар Рафтори корбар синф. 

Вазифа тавассути ороиш додани усул бо @вазифа ороишгар. Мо инчунин функсияе дорем, ки ном дорад байни() ки ба мо имкон медихад, ки пеш аз ичрои вазифаи навбатй як катор сонияхоро муайян кунем. Шумо мебинед, ки мо дар коди худ барои ин аз 5 то 10 сония ҷудо кардаем. 

Барои иҷро кардани код, боварӣ ҳосил кунед, ки шумо ҳоло ҳам дар муҳити виртуалии худ ҳастед. Агар сервери эҷодкардаи шумо аз ҷониби сервере истифода шавад, ки ба API хидмат мекунад, терминали нав кушоед, феҳристи худро ба лоиҳа директория кунед ва муҳити виртуалии сохтаатонро фаъол созед. Шумо метавонед фармонро барои фаъол кардани муҳити виртуалӣ дар боло пайдо кунед. Акнун, фармони зерро дар терминали худ ворид кунед.

 

$ малах -f locust_test.py

 

Шумо бояд чунин чизе бубинед:

Санҷиши сарбории API 2

Бо нобаёнӣ, интерфейси веби малах дар http://localhost/8089 ҷойгир аст. Агар шумо ба вебсайт ворид шавед, шумо бояд интерфейси зеринро бинед:

Санҷиши сарбории API 3

Аз интерфейс, мо метавонем шумораи корбарон, суръати тавлид (истифодабарандагон дар як сония эҷодшуда) ва Хостро муайян кунем. Шумо метавонед суроғаи мизбони худро тавассути тафтиши терминале, ки сервер кор мекунад, гиред. Дар ҳолати мо, он дар бандари 5000 аст. Вақте ки шумо ба он пахш мекунед Оғоз кардан, ба шумо интерфейси дар поён овардашуда пешниҳод карда мешавад.

Санҷиши сарбории API 4

Ин ба шумо нишондиҳандаҳои гуногуни муфидро нишон медиҳад, аз қабили шумораи дархостҳои ноком, вақти миёнаи дархост, вақти ҳадди ақал барои дархост, дархостҳо дар як сония ва ғайра. Пас аз он ки шумо аз он чизе, ки мебинед, қаноатмандед, шумо метавонед тугмаи қатъро пахш кунед. 


Илова бар ин статистика таб, вуҷуд дорад Диаграммаҳои ҷадвале, ки бештар нишон медиҳад маълумот дар шакли график, мисли тасвири дар поён овардашуда.

Вуҷуд аст, дархостҳои умумӣ дар як графикаи дуюм, графики вақти посух, ва Графикаи шумораи корбарон, хама ба мукобили замон накша кашидаанд. Бо истифода аз графикҳо, шумо метавонед муайян кунед, ки чӣ қадар корбарон барои вақти вокуниши муқарраршуда қобили қабуланд ё шумо метавонед бо вуҷуди афзоиши шумораи корбарон ва дигар фаҳмишҳои ба ин монанд, диаграммаҳои худро барои вақти вокуниши доимӣ мушоҳида кунед. Агар шумо хоҳед, ки инҳоро мубодила кунед омор бо ягон каси дигар, шумо метавонед гузоришро аз Маълумотро зеркашӣ кунед табл.

Хулоса кардан...

Санҷиши боркунии API-и шумо як амали муҳим дар раванди таҳияи шумост, бинобар ин боварӣ ҳосил кунед, ки он ба давраи тарроҳии шумо дохил карда шудааст. Дар омади гап, шумо инчунин метавонед намудҳои дигари санҷиши сарборӣ тавассути тағир додани арзишҳо барои шумораи корбарон ва суръати тавлидро анҷом диҳед. 

Агар шумо хоҳед, ки санҷиши хӯша гузаронед, барои шумораи корбарон арзиши калонро (бигӯед, 2000) ва сипас барои суръати тавлиди худ арзиши баробар калонро (масалан, 500) муайян кунед. Ин маънои онро дорад, ки дар тӯли 4 сония шумо ҳамаи 2000 корбарро эҷод карда, ба нуқтаҳои ниҳоии худ дастрасӣ пайдо мекунед. Санҷиши стресс шабеҳ хоҳад буд, аммо бо арзиши хеле пасти суръати тухм. Барои фаҳмидани ҳама чизе, ки шумо карда метавонед, Малахро санҷед ҳуҷҷатҳо

Мактубҳои Коболд: Ҳамлаҳои фишинги почтаи электронӣ дар асоси HTML

Мактубҳои Коболд: Ҳамлаҳои фишинги почтаи электронӣ дар асоси HTML

Мактубҳои Коболд: Ҳамлаҳои фишингии почтаи электронии ба HTML асосёфта 31 марти соли 2024, Luta Security мақолае нашр кард, ки ба вектори нави фишинг, Kobold Letters равшанӣ меандозад.

Маълумоти бештар "