чегиртке менен API жүктөө сыноо

чегиртке менен API жүктөө сыноо

Чегиртке менен API жүктөө тести: Intro

Сиз, балким, буга чейин мындай кырдаалга туш болгондурсуз: сиз бир нерсени аткарган код жазасыз, мисалы, акыркы чекит. Почтачы же Уйкусуздук аркылуу акыркы чекитиңизди сынап көрүңүз жана баары жакшы иштейт. Сиз акыркы чекитти кардар тараптын иштеп чыгуучусуна өткөрүп бересиз, ал андан кийин API жана колдонмону жайылтат. Бирок, колдонуучулар колдонмону колдонгондо API иштебей калат.

Бул бизнес үчүн кымбат эмес, өтө тажатма кырдаал болушу мүмкүн. Мына ошондуктан программалык камсыздоону иштеп чыгуучулар программалык камсыздоо тутумдарында алардын күтүлгөндөй иштешин камсыз кылуу үчүн ар кандай сыноолорду жүргүзүшөт. API'лер эч кандай айырмаланбайт. Жайгаштырардан мурун, жок дегенде, аткаруу тесттерин жана коопсуздук тесттерин жасашыңыз керек.

Аткаруу тесттерин функциялык тесттерге жана жүктөө сыноолоруна топтоого болот. Функционалдык тесттер сиз көбүнчө Почтачы же Уйкусуздук үчүн колдоносуз. Алар сиздин API сиз күткөндөй иштешин камсыздайт. Башка жагынан алганда, жүктөө тесттери сиздин API реалдуу дүйнөдө колдонуу жана эң жогорку жүктөө менен кандай аткарылаарына көбүрөөк кызыкдар жана бул макала ушул жөнүндө. Келгиле, жүк сыноолорун кененирээк карап көрөлү.

API жүктөө тести деген эмне?

API жүгүн тестирлөө - бул иштеп чыгуучулар акыркы чекиттердеги нормалдуу жана эң жогорку жүктөмдү симуляциялоо үчүн колдонгон тестирлөөнүн бир түрү. Мындай тестирлөө иштеп чыгуучуларга API орнотулганга чейин анык дүйнөдөгү натыйжалуулугун баалоого мүмкүндүк берет. Бул аларга системанын максималдуу иштөө мүмкүнчүлүгүн, эгерде бар болсо, тоскоолдуктарды жана иштөөнүн начарлашын аныктоого жардам берет. API жүктөө тесттери, адатта, виртуалдык колдонуучуларды түзүү жана андан кийин аларды API'нин функцияларын бир эле учурда сынап көрүү аркылуу жүзөгө ашырылат. 

API жүктөө тесттери жооп берүү убактысы, бир убактагы колдонуучулар, өткөрүү ылдамдыгы, ресурстарды пайдалануу деңгээли, Иштен чыгуунун ортосундагы орточо убакыт (MTBF), Иштебегенге чейинки орточо убакыт (MTTF) жана башкалар сыяктуу көрсөткүчтөрдү өлчөйт. Бул көрсөткүчтөрдүн бардыгы API канчалык жакшы иштеп жатканын аныктоо үчүн колдонулушу мүмкүн.

Жүк тестирлөөнүн түрлөрү

Жүк тестирлөөнүн бир нече түрлөрү бар, алардын ар бири өзүнүн колдонуу учурлары менен. Келгиле, алардын айрымдарына токтололу.

Жүктөлгөн сыноо: Бул жүк сыноонун негизги түрү. Ал кадимки жүктөө жана күтүлгөн эң жогорку жүктөмдө тутумдун иштешин (бул учурда API) баалоо үчүн колдонулат.

Стресс тести: Бул өтө оор жүк астында системанын ишин баалоо үчүн колдонулат. Бул тесттин максаты - система иштебей калгандан кийин калыбына келер-келбесин жана ага канча убакыт керектелет. Жүктөө, адатта, системанын мүмкүнчүлүктөрүнөн ашканга чейин акырындык менен көтөрүлөт.

Spike тестирлөө: Бул стресс-тестирлөөгө бир аз окшош, бирок оор жүк күтүлбөгөн жерден жүктөлөт, аны акырындык менен жогорулатууга каршы. Мындай сыноо колдонуучулардын же конокторуңуздун орточо санынын кескин көбөйүшү же тутумуңузга DDOS чабуулу болгондо эмне болорун көрсөтөт.

Сыноо сыноо: Бул тест жогорудагы башкалардан айырмаланып турат. Бул сиздин тутумуңузду нормалдуу жүктүн 80% (же болжол менен) астына коёт жана аны узак убакытка, айталы, 12-14 саатка иштетет. Мындай сыноо убакыттын өтүшү менен системанын канчалык ишенимдүү экенин аныктайт.

Чегиртке менен API'лериңизди сынап көрүңүз

Иштеп чыгуучулар өздөрүнүн API'лерин жүктөө сынагынын ар кандай варианттарына мүмкүнчүлүк алышат. Кээ бир жалпы жүк тестирлөө куралдары Gatling, JMeter жана Locust болуп саналат. Бул макалада чегирткеге көңүл бурабыз.

Locust бул Google, Microsoft жана Riot Games сыяктуу алдыңкы компаниялар тарабынан API'лерин сынап көрүү үчүн колдонулган питон негизиндеги ачык булак жүктөмүн текшерүү куралы. Бул макалада биз API тестин кантип жүктөө керектигин көрсөтөбүз. 

Бул окуу куралы үчүн мен Flask менен жөнөкөй API түзөм. Сиз мени менен бирге ээрчий аласыз же жөн гана Node менен 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, сураныч

колдонмо = Колба(__аты__)

car_models = [

  { 'бренд': '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=True)  

 

Жогорудагы код бир ыкманы камтыйт унааларды_ал машина маркаларынын жана алардын моделдеринин тизмесин алуу үчүн колдонулат, жана учактарды_ алуу учак маркаларынын жана алардын моделдеринин тизмесин алуу үчүн колдонулат. Бул акыркы чекитти жүктөө үчүн, app.py иштетишибиз керек. Бул үчүн, төмөнкү буйрукту аткарыңыз.

$ python path\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 колдонуунун негизги мисалы. Биринчиден, биз класс түзөбүз UserBehaviour, кайсы болбосун ылайыктуу ат берилиши мүмкүн, бирок узартылышы керек HttpUser. HttpUser Биз белгилеген тапшырмаларды аткаруу үчүн бир нече виртуалдык колдонуучуларды ишке киргизүүгө кам көргөн класс UserBehaviour класс. 

Тапшырма менен ыкманы кооздоо аркылуу аныкталат @task декоратор. Бизде ошондой эле функция бар ортосунда() бул бизге кийинки тапшырманы аткаруудан мурун күтө турган секунданын диапазонун белгилөөгө мүмкүндүк берет. Биздин кодубузда бул үчүн 5тен 10 секундга чейинки аралыкты ыйгарганыбызды көрө аласыз. 

Кодду иштетүү үчүн виртуалдык чөйрөңүздө экениңизди текшериңиз. Эгер сиз түзгөндү API тейлеген сервер колдонуп жатса, жаңы терминал ачып, каталогуңузду өзүңүзгө өзгөртүңүз. долбоору каталогун ачып, сиз түзгөн виртуалдык чөйрөнү иштетиңиз. Виртуалдык чөйрөнү активдештирүү буйругун жогоруда таба аласыз. Эми терминалыңызга төмөнкү буйрукту киргизиңиз.

 

$ чегиртке -f locust_test.py

 

Сиз мындай нерсени көрүшүңүз керек:

API жүктөө сыноосу 2

Демейки боюнча, чегирткенин веб-интерфейси http://localhost/8089 дарегинде жайгашкан. Эгер сиз веб-сайтка кирсеңиз, төмөнкүдөй интерфейсти көрүшүңүз керек:

API жүктөө сыноосу 3

Интерфейстен биз колдонуучулардын санын, пайда болуу ылдамдыгын (секундасына түзүлгөн колдонуучулар) жана Хостту көрсөтө алабыз. Сервер иштеп жаткан терминалды текшерүү аркылуу хостуңуздун дарегин ала аласыз. Биздин учурда, ал 5000 портунда. Басканда Чаптап башта, сизге төмөндөгү интерфейс көрсөтүлөт.

API жүктөө сыноосу 4

Бул сизге ар кандай пайдалуу көрсөткүчтөрдү көрсөтөт, мисалы, аткарылбай калган сурамдардын саны, сурамдын орточо убактысы, суроо-талаптын минималдуу убактысы, секундасына суроо-талаптар жана башкалар. Көргөнүңүзгө канааттанганыңыздан кийин, токтотуу баскычын чыкылдатсаңыз болот. 


андан башка статистика табулатура, бар диаграммы көбүрөөк көрсөтө турган өтмөк маалымат төмөнкү сүрөттө сыяктуу, график түрүндө.

бар бир экинчи графикке жалпы суроо-талаптар, жооп убакыт диаграммасы, жана колдонуучулардын саны графиги, баары убакытка каршы пландалган. Графиктерди колдонуу менен, сиз канча колдонуучу белгиленген жооп убактысы үчүн алгылыктуу экенин аныктай аласыз же колдонуучулардын саны көбөйгөнүнө карабастан, туруктуу жооп берүү убактысы үчүн диаграммаларыңызды жана ушул сыяктуу башка түшүнүктөрдү байкай аласыз. Буларды бөлүшкүңүз келсе статистика башка бирөө менен, сиз отчетту жүктөп алсаңыз болот Download маалыматтар өтмөк.

Жыйынтыктоо үчүн...

API'ңизди жүктөө - бул иштеп чыгуу процессиңиздеги маанилүү иш, андыктан анын дизайн циклиңизге кошулганын текшериңиз. Айтмакчы, сиз башка жүктөм сыноо түрлөрүн да колдонуучулардын санынын жана урук ылдамдыгынын маанисин өзгөртүү менен жүргүзө аласыз. 

Эгер сиз спик тестин жасагыңыз келсе, колдонуучулардын саны үчүн чоң маанини (айталы, 2000), андан кийин урук тартуу ылдамдыгы үчүн бирдей чоң маанини (мисалы, 500) көрсөтүңүз. Бул 4 секунданын ичинде бардык 2000 колдонуучу түзүлүп, акыркы чекиттериңизге кире аласыз дегенди билдирет. Стресс-тест окшош болот, бирок урук тартуу ылдамдыгы үчүн бир топ төмөн мааниге ээ. Колуңуздан келгендин баарын билүү үчүн, чегирткеге кайрылыңыз документтер

Коболд тамгалары: HTML негизиндеги электрондук почта фишингдик чабуулдары

Коболд тамгалары: HTML негизиндеги электрондук почта фишингдик чабуулдары

Kobold Letters: HTML негизиндеги электрондук почта фишингдик чабуулдары 31-жылдын 2024-мартында Luta Security компаниясы жаңы татаал фишинг векторуна жарык чачкан макаланы чыгарды, Коболд каттары.

Уландысы "