Шегіртке арқылы API жүктеуді сынау

Шегіртке арқылы API жүктеуді сынау

Шегіртке арқылы API жүктемесін сынау: кіріспе

Сіз бұрын мұндай жағдайда болған шығарсыз: сіз бірдеңе жасайтын код жазасыз, мысалы, соңғы нүкте. Сіз соңғы нүктені 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 болып табылады. Біз бұл мақалада шегірткеге назар аударамыз.

Locust — Google, Microsoft және Riot Games сияқты жетекші компаниялар API интерфейстерін сынау үшін пайдаланатын питон негізіндегі ашық бастапқы жүктеуді тексеру құралы. Бұл мақалада біз API тестін қалай жүктеу керектігін көрсетеміз. 

Бұл оқулық үшін мен Flask көмегімен қарапайым API жасаймын. Сіз менімен бірге жүре аласыз немесе жай ғана API-ді Түйінмен немесе өзіңізге ыңғайлы кез келген құрылыммен жасай аласыз.

талаптар

Python 3

Орнату және орнату

Біріншіден, ғаламдық Python ортаңызды бұзбау үшін компьютерде виртуалды ортаны орнату керек. Ол үшін келесі пәрмендерді орындаңыз. Бұл пәрмендер Windows терминалына қолданылатынын ескеріңіз.

$ mkdir жобасы

$ cd /d жобаға жол

$ python -m venv venv

$ venv\Scripts\activate

 

Біріншіден, біз құрдық жоба каталог. Содан кейін біз ағымдағы каталогты өзгерттік жоба. Содан кейін біз сол каталогтың ішінде Python үшін виртуалды ортаны жасап, белсендірдік. 

Енді біз орнатуға көшеміз Фласк(біз оны жүктеп сыналатын соңғы нүктелерді жасау үшін қолданамыз) және Шегіртке өзі. 

 

Flask орнату үшін іске қосыңыз. ішінде екеніңізге көз жеткізіңіз жоба онда сіз виртуалды ортаны жасадыңыз.

$ пип орнату колбасы

 

Locust орнату үшін іске қосыңыз

$ pip орнату шегіртке

 

Бұл аяқталғаннан кейін келесі пәрмендерді теріңіз. Сізде бар екеніне көз жеткізіңіз жоба мұны істегенде каталог.

$ copy nul __init__.py

$ mkdir қолданбасы

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Бұл пәрмендер Flask көмегімен соңғы нүктелерімізді жасау үшін қолданатын кейбір файлдарды жасайды. Айтпақшы, сіз бұл файлдарды файл шолғышын пайдаланып жасай аласыз. Бірақ мұның қызығы неде? Мұны жасағаннан кейін төмендегі кодты көшіріп алыңыз app.py

from flask import Flask, jsonify, сұрау

қолданба = Колба(__атауы__)

автомобиль үлгілері = [

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

]

 

ұшақ_модельдері = [

  { 'бренд': 'Boeing', 'үлгі': '747' }

]

 

@app.route('/cars')

def get_cars():

  jsonify (car_models) қайтару

@app.route('/planes')

def get_planes():

  jsonify қайтару(ұшақ_модельдері)

егер __аты__ == '__негізгі__':

    app.run(debug=Шын)  

 

Жоғарыдағы кодта әдіс бар автокөліктерді алу автомобиль маркалары мен олардың үлгілерінің тізімін алу үшін пайдаланылады, және ұшақтарды алу ұшақ маркалары мен олардың үлгілерінің тізімін алу үшін пайдаланылады. Осы соңғы нүктені тексеруді жүктеу үшін app.py іске қосу керек. Мұны істеу үшін төмендегі пәрменді іске қосыңыз.

$ python жолы\to\app.py

Оны іске қосқаннан кейін сіз келесідей нәрсені көресіз:

API жүктеме сынағы 1

URL мекенжайын терминалдан көшіріп, терсеңіз Көліктер or ұшақтар / дегеннен кейін деректерді сол жерде көре алуыңыз керек. Дегенмен, біздің мақсатымыз соңғы нүктені шолғышпен емес, шегірткемен сынау. Ендеше мұны істейік. Түбіріңізде келесі пәрменді іске қосыңыз жоба каталогы.

 

$ copy nul locust_test.py

 

Бұл сіздің түбіріңізде 'locust_test.py' файлын жасайды жоба каталог. Мұны жасағаннан кейін файлды ашып, төмендегі кодты қойыңыз. Оны жақын арада түсіндіреміз.

 

импорт уақыты

шегіртке импортынан HttpUser, тапсырма, арасындағы

 

Class UserBehaviour(HttpUser):

    күту_уақыты = арасында(5, 10)

 

    @task

    def get_cars(self):

        self.client.get('/cars')

    

    @task

    def get_planes(self):

        self.client.get('/planes')

 

Бұл API сынауын жүктеу үшін Locust пайдаланудың негізгі мысалы. Біріншіден, біз класс жасаймыз Пайдаланушының мінез-құлқы, ол кез келген сәйкес атау берілуі мүмкін, бірақ кеңейтілуі керек HttpUser. HttpUser бөлімінде біз көрсеткен тапсырмаларды орындау үшін бірнеше виртуалды пайдаланушыларды құруға қамқорлық жасайтын сынып Пайдаланушының мінез-құлқы класс. 

Тапсырма әдісті безендіру арқылы анықталады @task декоратор. Бізде сондай-ақ деп аталатын функция бар арасында() бұл келесі тапсырманы орындамас бұрын күтетін секундтар ауқымын көрсетуге мүмкіндік береді. Біздің кодта бұл үшін 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 жаңа күрделі фишинг векторы Коболд хаттарына жарық түсіретін мақаланы шығарды.

Ары қарай оқу »