Тестирање на вчитување на API со скакулец

Тестирање на вчитување на API со скакулец

Тестирање на оптоварување на API со скакулец: Вовед

Веројатно сте биле во оваа ситуација порано: пишувате код што прави нешто, на пример, крајна точка. Ја тестирате вашата крајна точка користејќи Postman или Insomnia, и сè работи добро. Ја пренесувате крајната точка на развивачот од страна на клиентот, кој потоа го троши API и ја распоредува апликацијата. Но, тогаш, API-то не успева кога корисниците ја користат апликацијата.

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

Тестовите за изведба може да се групираат во тестови за функционалност и тестови за оптоварување. Тестовите за функционалност се она за што обично користите Поштар или Несоница. Тие гарантираат дека вашиот API функционира како што очекувате. Тестовите за оптоварување, од друга страна, повеќе се занимаваат со тоа како вашиот API функционира со употребата во реалниот свет и максималното оптоварување, и токму за тоа е оваа статија. Ајде да ги разгледаме тестовите за оптоварување подетално.

Што е тестирање за оптоварување на API?

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

Тестовите за оптоварување на API ги мерат метриките како време на одговор, истовремени корисници, стапки на пропусност, нивоа на искористување на ресурсите, средно време помеѓу неуспехот (MTBF), средно време до неуспех (MTTF) и така натаму. Сите овие метрики може да се користат за да се одреди колку добро функционира API.

Видови на оптоварување тестирање

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

Тестирање на оптоварување: Ова е основната форма на тест за оптоварување. Се користи за оценување на перформансите на системот (во овој случај, API) при нормално оптоварување и очекувано максимално оптоварување.

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

Тестирање на шила: Ова е малку слично на стрес-тестирањето, освен што тешкото оптоварување се нанесува ненадејно, за разлика од полека зголемување. Овој вид на тест претставува што се случува кога има ненадеен скок во просечниот број на корисници или посетители или кога има DDOS напад на вашиот систем.

Тестирање на натопување: Овој тест е за разлика од другите погоре. Го става вашиот систем под 80% (или околу) од нормалното оптоварување и го остава да работи подолг период, да речеме 12 до 14 часа. Овој вид на тест одредува колку системот е сигурен со текот на времето.

Вчитајте ги тестирањето на вашите API со Locust

Програмерите имаат пристап до различни опции за оптоварување тестирање на нивните API. Некои вообичаени алатки за тестирање на оптоварување се Gatling, JMeter и Locust. Ќе се фокусираме на Скакулците во оваа статија.

Locust е алатка за тестирање оптоварување со отворен код базирана на python што ја користат врвните компании како Google, Microsoft и Riot Games за тестирање на нивните API. Во оваа статија, ќе покажеме како да вчитаме тестирање на API. 

За ова упатство, ќе создадам едноставно API со Flask. Можете да следите заедно со мене или само да го креирате вашето API со Node, или која било рамка со која ви одговара.

Потребно

Пајтон 3

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

Прво, треба да поставите виртуелна средина на вашиот компјутер за да не ја нарушите вашата глобална Python околина. За да го направите тоа, извршете ги следните команди. Забележете дека овие команди се однесуваат на терминал на Windows.

$ mkdir проект

$ cd /d патека\до\проект

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

$ venv\Scripts\activate

 

Прво, создадовме а проект директориум. Потоа го сменивме нашиот тековен директориум во проект. Потоа создадовме и активиравме виртуелна средина за Python во тој директориум. 

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

 

За да инсталирате Flask, стартувајте. Бидете сигурни дека сте во проект каде што креиравте виртуелна средина.

Колба за инсталирање $ pip

 

За да инсталирате Locust, стартувајте

$ pip инсталира скакулец

 

Откако ќе го направите тоа, напишете ги следните команди. Бидете сигурни дека сте во вашата проект директориум кога ќе го направите ова.

$ copy nul __init__.py

$ mkdir апликација

$ copy nul app\app.py

$ copy nul апликација\__init__.py

 

Оваа команда создава некои датотеки што ќе ги користиме за да ги креираме нашите крајни точки користејќи Flask. Патем, можете да ги креирате овие датотеки користејќи го вашиот истражувач на датотеки. Но, што е забавата во тоа? Откако ќе го направите тоа, копирајте го кодот подолу апликација.py

од колба увоз Колба, jsonify, барање

апликација = колба (__име__)

автомобили_модели = [

  { 'марка': 'Тесла', 'модел': 'Модел S' }

]

 

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

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

]

 

@app.route('/cars')

def get_cars():

  врати jsonify(car_models)

@app.route('/planes')

def get_planes():

  врати jsonify(plane_models)

ако __име__ == '__главна__':

    app.run(debug=True)  

 

Горенаведениот код содржи метод земи_автомобили се користи за да се добие листа на марки на автомобили и нивните модели, и get_planes се користи за да се добие листа на марки на авиони и нивните модели. За да го вчитаме тестот за оваа крајна точка, треба да извршиме app.py. За да го направите тоа, извршете ја командата подолу.

$ python патека\to\app.py

Откако ќе го извршите, треба да видите нешто како ова:

Тестирање за оптоварување на API 1

Ако ја копирате URL-то од терминалот и напишете автомобили or авиони по /, треба да можете да ги видите податоците таму. Сепак, нашата цел е да ја тестираме крајната точка со скакулец, а не со прелистувачот. Па ајде да го направиме тоа. Извршете ја следнава команда во коренот на вашиот проект директориум.

 

$ copy nul locust_test.py

 

Ова создава датотека „locust_test.py“ во коренот на вашата проект директориум. Откако ќе го направите тоа, отворете ја датотеката и залепете го кодот подолу. Наскоро ќе објасниме.

 

време за увоз

од скакулец увоз HttpUser, задача, помеѓу

 

класа Корисничко однесување (HttpUser):

    Време на чекање = помеѓу (5, 10)

 

    @задача

    def get_cars(self):

        self.client.get('/cars')

    

    @задача

    def get_planes(self):

        self.client.get('/planes')

 

Ова е основен пример за користење на Locust за вчитување на тестирање на API. Прво, создаваме класа Однесување на корисникот, на кое може да му се даде кое било соодветно име, но мора да се прошири HttpКорисник. HttpКорисник е класата што се грижи за инстантирање на повеќе виртуелни корисници за извршување на задачите што ги специфицираме во Однесување на корисникот класа. 

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

За да го извршите кодот, проверете дали сè уште сте во вашата виртуелна средина. Ако оној што го создадовте го користи серверот што го опслужува API, отворете нов терминал, сменете го вашиот директориум во вашиот проект директориумот и активирајте ја виртуелната средина што сте ја создале. Командата за активирање виртуелна средина можете да ја најдете погоре. Сега, внесете ја командата подолу во вашиот терминал.

 

$ скакулец -f locust_test.py

 

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

Тестирање за оптоварување на API 2

Стандардно, веб-интерфејсот на скакулецот се наоѓа на http://localhost/8089. Ако ја посетите веб-страницата, треба да видите интерфејс како овој:

Тестирање за оптоварување на API 3

Од интерфејсот, можеме да го одредиме бројот на корисници, стапката на потомство (корисници креирани во секунда) и Домаќин. Можете да ја добиете адресата на вашиот домаќин со проверка на терминалот каде што работи серверот. Во нашиот случај, тоа е на порта 5000. Кога ќе кликнете на Почни да рој, ќе ви биде претставен интерфејсот подолу.

Тестирање за оптоварување на API 4

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


Покрај Статистика табот, постои а Табели табот што покажува повеќе информации во форма на график, како на сликата подолу.

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

Да заклучи...

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

Ако сакате да направите тест за скокови, наведете голема вредност (да речеме 2000) за бројот на корисници, а потоа подеднакво голема вредност за вашата стапка на мрестење (500 на пример). Ова значи дека за 4 секунди, ќе ги креирате сите 2000 корисници и ќе пристапат до вашите крајни точки. Стрес тестот ќе биде сличен, но со многу помала вредност за стапката на мрестење. За да дознаете сè што можете да направите, проверете го Скакулецот документација