Тестирање оптерећења АПИ-ја са Лоцуст-ом

Тестирање оптерећења АПИ-ја са Лоцуст-ом

Тестирање оптерећења АПИ-ја са Лоцустом: Увод

Вероватно сте већ били у овој ситуацији: пишете код који нешто ради, на пример крајњу тачку. Тестирате своју крајњу тачку користећи Постман или Инсомниа и све функционише добро. Крајњу тачку прослеђујете програмеру на страни клијента, који затим користи АПИ за и примењује апликацију. Али тада АПИ не успе када корисници користе апликацију.

Ово може бити супер досадна ситуација, а да не спомињемо скупо за посао. Због тога програмери софтвера спроводе разне тестове на софтверским системима како би били сигурни да раде како се очекује. АПИ-ји се не разликују. Пре примене, требало би да урадите барем тестове перформанси и безбедносне тестове.

Тестови перформанси се могу груписати у тестове функционалности и тестове оптерећења. Тестови функционалности су оно за шта обично користите Постман или Инсомниа. Они осигуравају да ваш АПИ функционише онако како очекујете. Тестови оптерећења се, с друге стране, више баве начином на који ваш АПИ ради са употребом у стварном свету и вршним оптерећењем, и о томе се говори у овом чланку. Погледајмо детаљније тестове оптерећења.

Шта је тестирање оптерећења АПИ-ја?

Тестирање оптерећења АПИ-ја је врста тестирања коју програмери користе за симулацију нормалног и вршног оптерећења на крајњим тачкама. Ова врста тестирања омогућава програмерима да процене стварне перформансе АПИ-ја пре него што се примене. Помаже им да идентификују максимални оперативни капацитет система, уска грла, ако их има, и деградацију перформанси. Тестови оптерећења АПИ-ја се обично раде тако што се креирају виртуелни корисници, а затим се користе за истовремено тестирање функционалности АПИ-ја. 

АПИ тестови оптерећења мере метрике као што су време одговора, истовремени корисници, стопе протока, нивои коришћења ресурса, средње време између отказа (МТБФ), средње време до неуспеха (МТТФ) и тако даље. Сви ови показатељи се могу користити да би се утврдило колико добро ради АПИ.

Врсте тестирања оптерећења

Постоји неколико типова тестирања оптерећења, сваки са својим случајевима употребе. Хајде да погледамо неке од њих.

Тестирање оптерећења: Ово је основни облик теста оптерећења. Користи се за процену перформанси система (у овом случају АПИ) под нормалним оптерећењем и очекиваним вршним оптерећењем.

Тестирање на стрес: Ово се користи за процену перформанси система под веома великим оптерећењем. Циљ овог теста је да се види да ли се систем опоравља након квара и колико је времена потребно да се то уради. Оптерећење се обично полако повећава све док не премаши могућности система.

Спике тестирање: Ово је мало слично тестирању на стрес, осим што се велико оптерећење примењује изненада, уместо да се полако повећава. Ова врста теста представља шта се дешава када дође до наглог пораста вашег просечног броја корисника или посетилаца, или када дође до ДДОС напада на ваш систем.

Тестирање намакања: Овај тест се разликује од осталих горе наведених. То ставља ваш систем испод 80% (или отприлике) нормалног оптерећења и оставља га да ради на дужи период, рецимо 12 до 14 сати. Ова врста теста одређује колико је систем поуздан током времена.

Тестирање оптерећења ваших АПИ-ја помоћу Лоцуста

Програмери имају приступ разним опцијама за тестирање оптерећења својих АПИ-ја. Неки уобичајени алати за тестирање оптерећења су Гатлинг, ЈМетер и Лоцуст. У овом чланку ћемо се фокусирати на скакавца.

Лоцуст је алатка за тестирање оптерећења отвореног кода заснована на питхон-у коју користе врхунске компаније као што су Гоогле, Мицрософт и Риот Гамес за тестирање својих АПИ-ја. У овом чланку ћемо показати како учитати тест АПИ. 

За овај водич, направићу једноставан АПИ са Фласком. Можете пратити мене или једноставно креирати свој АПИ са Ноде-ом, или било којим оквиром који вам одговара.

Захтеви

питхон КСНУМКС

Подешавање и инсталација

Прво, морате да подесите виртуелно окружење на рачунару како не бисте упропастили своје глобално Питхон окружење. Да бисте то урадили, покрените следеће команде. Имајте на уму да се ове команде примењују на Виндовс терминал.

$ мкдир пројекат

$ цд /д путања\до\пројекта

$ питхон -м венв венв

$ венв\Сцриптс\ацтивате

 

Прво смо креирали а пројекат именик. Затим смо променили наш тренутни директоријум у пројекат. Затим смо креирали и активирали виртуелно окружење за Питхон унутар тог директоријума. 

Сада ћемо прећи на инсталацију Чутура(користићемо га за креирање крајњих тачака за тестирање оптерећења) и скакавац Сама. 

 

Да бисте инсталирали Фласк, покрените. Уверите се да сте у пројекат где сте креирали виртуелно окружење.

$ пип инсталл фласк

 

Да бисте инсталирали Лоцуст, покрените

$ пип инсталл лоцуст

 

Када то учините, откуцајте следеће команде. Уверите се да сте у свом пројекат директоријум када то урадите.

$ цопи нул __инит__.пи

$ мкдир апликација

$ цопи нул апп\апп.пи

$ цопи нул апп\__инит__.пи

 

Ове команде креирају неке датотеке које ћемо користити за креирање наших крајњих тачака користећи Фласк. Успут, такође можете креирати ове датотеке користећи свој претраживач датотека. Али шта је у томе забавно? Када то урадите, копирајте код испод апп.пи

из фласк импорт Фласк, јсонифи, захтев

апп = Фласк(__наме__)

цар_моделс = [

  { 'бренд': 'Тесла', 'модел': 'Модел С' }

]

 

авионски модели = [

  { 'бренд': 'Боеинг', 'модел': '747' }

]

 

@апп.роуте('/аутомобили')

деф гет_царс():

  врати јсонифи(цар_моделс)

@апп.роуте('/планес')

деф гет_планес():

  ретурн јсонифи(моделс авиона)

ако __наме__ == '__маин__':

    апп.рун(дебуг=Тачно)  

 

Горњи код садржи метод гет_царс користи се за добијање листе марки аутомобила и њихових модела, и гет_планес користи се за добијање листе марки авиона и њихових модела. Да бисмо тестирали ову крајњу тачку, морамо да покренемо апп.пи. Да бисте то урадили, покрените наредбу испод.

$ питхон путања\до\апп.пи

Када то покренете, требало би да видите нешто овако:

Тестирање оптерећења АПИ-ја 1

Ако копирате УРЛ са терминала и откуцате аутомобили or авиони после /, требало би да можете да видите податке тамо. Међутим, наш циљ је да тестирамо крајњу тачку помоћу скакавца, а не помоћу претраживача. Па хајде да то урадимо. Покрените следећу команду у корену вашег пројекат директоријум.

 

$ цопи нул лоцуст_тест.пи

 

Ово креира датотеку 'лоцуст_тест.пи' у корену вашег пројекат именик. Када то урадите, отворите датотеку и налепите код испод. Убрзо ћемо то објаснити.

 

време увоза

фром лоцуст импорт ХттпУсер, задатак, између

 

класа УсерБехавиоур(ХттпУсер):

    време_чекања = између (5, 10)

 

    @задатак

    деф гет_царс(селф):

        селф.цлиент.гет('/царс')

    

    @задатак

    деф гет_планес(селф):

        селф.цлиент.гет('/планес')

 

Ово је основни пример коришћења Лоцуста за тестирање учитавања АПИ-ја. Прво, креирамо класу УсерБехавиоур, којем се може дати било које одговарајуће име, али се мора проширити ХттпУсер. ХттпУсер је класа која се брине о инстанцирању више виртуелних корисника за извршавање задатака које наведемо у УсерБехавиоур класа. 

Задатак се специфицира украшавањем методе помоћу @задатак декоратер. Имамо и функцију која се зове између () што нам омогућава да одредимо опсег секунди за чекање пре извршавања следећег задатка. Можете видети да смо за то доделили распон од 5 до 10 секунди у нашем коду. 

Да бисте покренули код, уверите се да сте још увек у свом виртуелном окружењу. Ако сервер који опслужује АПИ користи онај који сте креирали, отворите нови терминал, промените директоријум у свој пројекат директоријум и активирајте виртуелно окружење које сте креирали. Наредбу за активирање виртуелног окружења можете пронаћи изнад. Сада унесите наредбу испод у свој терминал.

 

$ лоцуст -ф лоцуст_тест.пи

 

Требали бисте видети нешто овако:

Тестирање оптерећења АПИ-ја 2

Подразумевано, веб интерфејс скакавца се налази на хттп://лоцалхост/8089. Ако посетите веб локацију, требало би да видите интерфејс као што је овај:

Тестирање оптерећења АПИ-ја 3

Из интерфејса можемо одредити број корисника, брзину појављивања (корисници креирани у секунди) и хост. Можете добити адресу свог домаћина тако што ћете проверити терминал на којем сервер ради. У нашем случају је на порту 5000. Када кликнете на Почни да се ројиш, биће вам представљен интерфејс испод.

Тестирање оптерећења АПИ-ја 4

Ово вам показује различите корисне метрике као што су број неуспелих захтева, просечно време за захтев, минимално време за захтев, захтеви у секунди итд. Када будете задовољни оним што видите, можете кликнути на дугме за заустављање. 


Осим Статистика таб, постоји а Графикони картица која приказује више информација у облику графикона, као на слици испод.

Има укупан број захтева по секунди графикона, график времена одговора, график броја корисника, све зацртано против времена. Користећи графиконе, можете одредити колико корисника је прихватљиво за фиксно време одговора, или можете да посматрате своје графиконе за константно време одговора упркос све већем броју корисника и другим сличним увидима. Ако желите да поделите ове Статс са неким другим, можете преузети извештај са Преузимање података картица.

Закључити...

Тестирање оптерећења вашег АПИ-ја је кључна активност у вашем процесу развоја, па се уверите да је укључено у ваш циклус дизајна. Узгред, можете да спроведете и друге типове тестова оптерећења тако што ћете променити вредности за број корисника и брзину појављивања. 

Ако желите да урадите спике тест, наведите велику вредност (рецимо 2000) за број корисника, а затим једнако велику вредност за вашу стопу појављивања (500 на пример). То значи да ћете за 4 секунде имати свих 2000 корисника креираних и приступити вашим крајњим тачкама. Стрес тест ће бити сличан, али са много нижом вредношћу за стопу мријеста. Да бисте сазнали све што можете да урадите, погледајте Лоцуст документација

Коболд Леттерс: ХТМЛ-базирани е-маил напади пхисхинг-ом

Коболд Леттерс: ХТМЛ-базирани е-маил напади пхисхинг-ом

Коболд Леттерс: ХТМЛ-базирани пхисхинг напади е-поштом Лута Сецурити је 31. марта 2024. објавила чланак који баца светло на нови софистицирани пхисхинг вектор, Коболд Леттерс.

Прочитајте више »