API Ŝarĝo Testado Kun Locust

API Ŝarĝo Testado Kun Locust

API Ŝarĝo Testado Kun Locust: Enkonduko

Vi verŝajne estis en ĉi tiu situacio antaŭe: vi skribas kodon kiu faras ion, finpunkton ekzemple. Vi testas vian finpunkton per Postman aŭ Sendormeco, kaj ĉio funkcias bone. Vi transdonas la finpunkton al la klient-flanka programisto, kiu tiam konsumas la API kaj deplojas la aplikaĵon. Sed tiam, la API malsukcesas kiam la uzantoj uzas la apon.

Ĉi tio povas esti tre ĝena situacio, por ne mencii multekosta por komerco. Tial programistoj faras diversajn testojn pri programaj sistemoj por certigi, ke ili plenumas kiel atendite. APIoj ne diferencas. Antaŭ deplojo, vi devus fari almenaŭ rendimentajn testojn kaj sekurecajn testojn.

Efikectestoj povas esti grupigitaj en funkciectestojn kaj ŝarĝtestojn. Funkciaj testoj estas por kio vi kutime uzas Postman aŭ Sendormecon. Ili certigas, ke via API funkcias kiel vi atendas. Ŝarĝaj provoj, aliflanke, pli zorgas pri kiel via API funkcias kun reala uzado kaj pinta ŝarĝo, kaj pri tio temas ĉi tiu artikolo. Ni rigardu ŝarĝajn testojn pli detale.

Kio Estas API-Ŝarĝo-Testo?

API-ŝarĝtestado estas speco de testado kiun programistoj uzas por simuli normalan kaj pintan ŝarĝon sur finpunktoj. Ĉi tiu speco de testado lasas programistojn taksi la realan agadon de API antaŭ ol ĝi estas deplojita. Ĝi helpas ilin identigi la maksimuman operacian kapablon de sistemo, proplempunktojn se entute, kaj rendimento-degeneron. API-ŝarĝtestoj estas kutime faritaj kreante virtualajn uzantojn kaj tiam uzante ilin por testi la funkciecon de la API samtempe. 

API-ŝarĝtestoj mezuras metrikojn kiel respondtempon, samtempajn uzantojn, traigajn indicojn, resursan uznivelojn, Mezan Tempon Inter Malsukceso (MTBF), Mean Time To Failure (MTTF), ktp. Ĉiuj ĉi tiuj metrikoj povas esti uzataj por determini kiom bone fartas la API.

Tipoj de Ŝarĝo-Testo

Estas pluraj specoj de ŝarĝtestado, ĉiu kun siaj uzkazoj. Ni rigardu kelkajn el ili.

Ŝarĝo-testado: Ĉi tiu estas la baza formo de ŝarĝtesto. Ĝi estas uzata por taksi la agadon de sistemo (en ĉi tiu kazo, API) sub normala ŝarĝo kaj atendata pinta ŝarĝo.

Streĉa Testado: Ĉi tio estas uzata por taksi la agadon de sistemo sub tre peza ŝarĝo. La celo de ĉi tiu testo estas vidi ĉu sistemo resaniĝas post malsukceso, kaj kiom da tempo necesas por fari tion. La ŝarĝo kutime pliiĝas malrapide ĝis ĝi superas la kapablojn de la sistemo.

Spike Testo: Ĉi tio estas iom simila al streĉa testado, krom peza ŝarĝo estas aplikata subite, kontraste al malrapide plialtigi ĝin. Ĉi tiu speco de provo reprezentas kio okazas kiam estas subita piko en via averaĝa nombro da uzantoj aŭ vizitantoj, aŭ kiam estas DDOS-atako sur via sistemo.

Trempa Testo: Ĉi tiu provo estas male al la aliaj supre. Ĝi metas vian sistemon sub 80% (aŭ proksimume) de normala ŝarĝo kaj lasas ĝin funkcii dum longa periodo, ekzemple 12 ĝis 14 horoj. Ĉi tiu speco de testo determinas kiom fidinda sistemo estas dum tempo.

Ŝarĝu Testante Viajn APIojn Kun Locust

Programistoj havas aliron al diversaj opcioj por ŝarĝtestado de siaj API-oj. Iuj oftaj ŝarĝtestiloj estas Gatling, JMeter kaj Locust. Ni fokusos pri Locust en ĉi tiu artikolo.

Locust estas piton-bazita malfermfonta ŝarĝa testa ilo uzata de ĉefaj kompanioj kiel Google, Microsoft kaj Riot Games por testi siajn APIojn. En ĉi tiu artikolo, ni montros kiel ŝargi testi API. 

Por ĉi tiu lernilo, mi kreos simplan API kun Flask. Vi povas sekvi kune kun mi aŭ simple krei vian API per Node, aŭ kia ajn kadro kun kiu vi komfortas.

postuloj

python 3

Agordo kaj Instalado

Unue, vi devas agordi virtualan medion en via komputilo por ke vi ne fuŝu vian tutmondan Python-medion. Por fari tion, rulu la sekvajn komandojn. Notu, ke ĉi tiuj komandoj validas por Vindoza terminalo.

$ mkdir-projekto

$ cd /d vojo\al\projekto

$ python -m venv venv

$ venv\Skriptoj\aktivigi

 

Unue, ni kreis a projekto dosierujo. Tiam ni ŝanĝis nian nunan dosierujon al projekto. Ni tiam kreis kaj aktivigis virtualan medion por Python ene de tiu dosierujo. 

Nun, ni daŭrigos instali Flasko(ni uzos ĝin por krei la finpunktojn por esti ŝarĝotaj) kaj Akrido mem. 

 

Por instali Flask, rulu. Certiĝu, ke vi estas en la projekto kie vi kreis virtualan medion.

$ pip instal flakon

 

Por instali Locust, rulu

$ pip instali akridon

 

Post kiam tio estas farita, tajpu la jenajn komandojn. Certiĝu, ke vi estas en via projekto dosierujo kiam vi faras tion.

$ kopio nul __init__.py

$ mkdir-apliko

$ kopii nul app\app.py

$ kopii nul app\__init__.py

 

Ĉi tiuj komandoj kreas kelkajn dosierojn, kiujn ni uzos por krei niajn finpunktojn uzante Flask. Vi ankaŭ povas krei ĉi tiujn dosierojn per via dosier-esplorilo cetere. Sed kio estas la amuzo en tio? Post kiam vi faris tion, kopiu la suban kodon en app.py

from flask import Flask, jsonify, request

app = Flakono (__nomo__)

aŭto_modeloj = [

  { 'marko': 'Tesla', 'modelo': 'Modelo S'}

]

 

aviadilo_modeloj = [

  { 'marko': 'Boeing', 'modelo': '747' }

]

 

@app.route('/aŭtoj')

def get_cars():

  reveni jsonify (aŭtomodeloj)

@app.route('/aviadiloj')

def get_planes():

  redonu jsonify (plane_modeloj)

if __name__ == '__ĉefa__':

    app.run (debug=Vera)  

 

La supra kodo enhavas metodon akiri_aŭtojn kutimis ricevi liston de aŭtomarkoj kaj iliaj modeloj, kaj get_planes kutimis ricevi liston de aviadilmarkoj kaj iliaj modeloj. Por ke ni ŝarĝu teston ĉi tiun finpunkton, ni devas ruli app.py. Por fari tion, rulu la suban komandon.

$ python vojo\al\app.py

Post kiam vi kuras tion, vi devus vidi ion tian:

Testo pri Ŝarĝo de API 1

Se vi kopias la URL de la terminalo kaj tajpas aŭtoj or aviadiloj post la /, vi devus povi vidi la datumojn tie. Tamen, nia celo estas testi la finpunkton per akrido, ne per la retumilo. Do ni faru tion. Rulu la sekvan komandon en la radiko de via projekto dosierujo.

 

$ kopii nul locust_test.py

 

Ĉi tio kreas 'locust_test.py' dosieron en la radiko de via projekto dosierujo. Post kiam vi faris tion, malfermu la dosieron kaj algluu la suban kodon. Ni klarigos ĝin baldaŭ.

 

importa tempo

de akrido importo HttpUser, tasko, inter

 

klaso Uzanto-Konduto (HttpUser):

    atendo_tempo = inter (5, 10)

 

    @tasko

    def get_cars(mem):

        self.client.get('/aŭtoj')

    

    @tasko

    def get_planes(mem):

        self.client.get('/planes')

 

Ĉi tio estas baza ekzemplo de uzado de Locust por ŝarĝi teston API. Unue, ni kreas klason Uzantkonduto, kiu povas ricevi ajnan taŭgan nomon sed devas etendi HttpUser. HttpUser estas la klaso, kiu zorgas pri instantiigi plurajn virtualajn uzantojn por plenumi la taskojn, kiujn ni specifas en la Uzantkonduto klaso. 

Tasko estas precizigita per ornamado de metodo per la @tasko dekoraciisto. Ni ankaŭ havas funkcion nomitan inter () tio permesas al ni specifi gamon da sekundoj por atendi antaŭ ol plenumi la sekvan taskon. Vi povas vidi, ke ni asignis intervalon de 5 ĝis 10 sekundoj por tio en nia kodo. 

Por ruli la kodon, certigu, ke vi ankoraŭ estas en via virtuala medio. Se tiu, kiun vi kreis, estas uzata de la servilo servanta la API, malfermu novan terminalon, ŝanĝu vian dosierujon al via projekto dosierujo, kaj aktivigu la virtualan medion, kiun vi kreis. Vi povas trovi la komandon por aktivigi virtualan medion supre. Nun, enigu la suban komandon en via terminalo.

 

$ akrido -f akrido_testo.py

 

Vi devus vidi ion tian:

Testo pri Ŝarĝo de API 2

Defaŭlte, la retinterfaco de akrido troviĝas ĉe http://localhost/8089. Se vi vizitas la retejon, vi devus vidi interfacon tia:

Testo pri Ŝarĝo de API 3

De la interfaco, ni povas specifi la nombron da uzantoj, generi indicon (uzantoj kreitaj je sekundo) kaj Gastiganto. Vi povas akiri la adreson de via gastiganto kontrolante la terminalon kie la servilo funkcias. En nia kazo, ĝi estas ĉe la haveno 5000. Kiam vi alklakas Komencu svarmi, vi estos prezentita kun la interfaco sube.

Testo pri Ŝarĝo de API 4

Ĉi tio montras al vi diversajn utilajn mezurojn kiel la nombro da malsukcesaj petoj, averaĝa tempo por peto, la minimuma tempo por peto, petoj sekundo, ktp. Kiam vi estas kontenta pri tio, kion vi vidas, vi povas alklaki la butonon haltigi. 


Krom la statistikoj langeto, estas a furorlisto langeto kiu montras pli informo en formo de grafikaĵo, kiel la bildo sube.

Ekzistas totalaj petoj por dua grafiko, grafeo de tempo de respondo, kaj grafeo de nombro da uzantoj, ĉiuj konspiritaj kontraŭ tempo. Uzante la grafikaĵojn, vi povas determini kiom da uzantoj estas akcepteblaj por fiksa responda tempo, aŭ vi povas observi viajn diagramojn por konstanta respondtempo malgraŭ kreskanta nombro da uzantoj, kaj aliaj komprenoj tiaj. Se vi volas dividi ĉi tiujn statistikoj kun iu alia, vi povas elŝuti raporton de la Elŝuti Datumojn langeton.

Konkludi...

Ŝarĝo-testado de via API estas decida agado en via disvolva procezo, do certigu, ke ĝi estas enkorpigita en via dezajna ciklo. Parenteze, vi ankaŭ povas efektivigi aliajn ŝarĝtestspecojn variigante la valorojn por la nombro da uzantoj kaj genera indico. 

Se vi volas fari spikteston, specifu grandan valoron (diru 2000) por la nombro da uzantoj, kaj tiam same grandan valoron por via genera indico (ekzemple 500). Ĉi tio signifas, ke en 4 sekundoj, vi havus ĉiujn 2000 uzantojn kreitajn kaj alirantaj viajn finpunktojn. Streĉtesto estos simila, sed kun multe pli malalta valoro por genera indico. Por ekscii ĉion, kion vi povas fari, kontrolu la Locust dokumentado