API Luede Testen Mat Locust

API Luede Testen Mat Locust

API Load Testing Mat Locust: Intro

Dir waart wahrscheinlech schonn an dëser Situatioun: Dir schreift Code deen eppes mécht, zum Beispill en Endpunkt. Dir testt Ären Endpunkt mat Postman oder Insomnia, an alles funktionnéiert gutt. Dir gitt den Endpunkt un de Client-Säit Entwéckler weider, deen dann den API an deploy d'Applikatioun. Awer dann klappt d'API wann d'Benotzer d'App benotzen.

Dëst kann eng super désagréabel Situatioun sinn, fir net ze soen deier fir e Geschäft. Et ass firwat Software Entwéckler eng Vielfalt vun Tester op Software Systemer ausféieren fir sécherzestellen datt se wéi erwaart Leeschtunge. APIs sinn net anescht. Virum Deployment, sollt Dir op d'mannst Leeschtungstester a Sécherheetstester maachen.

Performance Tester kënnen a Funktionalitéitstester a Laaschtester gruppéiert ginn. Funktionalitéitstester sinn wat Dir normalerweis Postman oder Insomnia benotzt fir. Si garantéieren datt Är API funktionnéiert wéi Dir erwaart. Lasttester, op der anerer Säit, si méi besuergt iwwer wéi Är API mat der realer Weltverbrauch a Peakbelaaschtung funktionnéiert, an dat ass wat dësen Artikel ass. Loosst eis d'Laaschtester méi detailléiert kucken.

Wat ass API Load Testen?

API Last Testen ass eng Zort Tester déi Entwéckler benotze fir normal a Peak Last op Endpunkte ze simuléieren. Dës Aart vun Tester léisst d'Entwéckler d'real-Weltleistung vun enger API evaluéieren ier se ofgesat gëtt. Et hëlleft hinnen déi maximal Operatiounskapazitéit vun engem System z'identifizéieren, Flaschenhals wann iwwerhaapt, a Leeschtungsverschlechterung. API Last Tester ginn normalerweis gemaach andeems Dir virtuell Benotzer erstellt an se dann benotzt fir d'API Funktionalitéit gläichzäiteg ze testen. 

API Last Tester moossen Metriken wéi Äntwertzäit, gläichzäiteg Benotzer, Duerchsatzraten, Ressourcenutzungsniveauen, Mean Time Between Failure (MTBF), Mean Time To Failure (MTTF), a sou weider. All dës Metriken kënne benotzt ginn fir ze bestëmmen wéi gutt d'API mécht.

Zorte vu Last Testen

Et gi verschidden Aarte vu Lasttesten, jidderee mat senge Gebrauchsfäll. Loosst eis e puer vun hinnen kucken.

Last Testen: Dëst ass d'Basisform vun engem Lasttest. Et gëtt benotzt fir d'Performance vun engem System (an dësem Fall, eng API) ënner normaler Belaaschtung an erwaarten Héichlaascht ze evaluéieren.

Stress Test: Dëst gëtt benotzt fir d'Leeschtung vun engem System ënner enger ganz schwéierer Belaaschtung ze evaluéieren. D'Zil vun dësem Test ass ze kucken ob e System sech nom Ausfall erholen, a wéi laang et dauert fir dat ze maachen. D'Laascht gëtt normalerweis lues eropgaang bis se d'Fäegkeete vum System iwwerschreift.

Spike Testen: Dëst ass e bëssen ähnlech wéi Stresstest, ausser datt schwéier Belaaschtung plötzlech ugewannt gëtt, am Géigesaz zu der lues erop. Dës Zort Test representéiert wat geschitt wann et e plötzleche Spike an Ärer duerchschnëttlecher Zuel vu Benotzer oder Besucher ass, oder wann et en DDOS Attack op Ärem System gëtt.

Soak Testen: Dësen Test ass anescht wéi déi aner hei uewen. Et setzt Äre System ënner 80% (oder ongeféier) vun der normaler Belaaschtung a léisst et fir eng laang Zäit lafen, sot 12 bis 14 Stonnen. Dës Zort Test bestëmmt wéi zouverlässeg e System iwwer Zäit ass.

Luet Testen Är APIen mat Locust

Entwéckler hunn Zougang zu enger Vielfalt vun Optiounen fir hir APIen ze lueden. E puer allgemeng Lasttestinstrumenter sinn Gatling, JMeter, a Locust. Mir fokusséieren op Locust an dësem Artikel.

Locust ass e Python-baséiert Open-Source Lasttestinstrument dat vun Top Firmen wéi Google, Microsoft a Riot Games benotzt gëtt fir hir APIen ze testen. An dësem Artikel wäerte mir demonstréieren wéi een en API luedt. 

Fir dësen Tutorial wäert ech eng einfach API mat Flask erstellen. Dir kënnt mat mir verfollegen oder just Är API mat Node erstellen, oder egal wéi engem Kader Dir bequem sidd mat.

Ufuerderunge

Python 3

Setup & Installatioun

Als éischt musst Dir e virtuellt Ëmfeld op Ärem PC opbauen fir datt Dir Är global Python-Ëmfeld net vermësst. Fir dat ze maachen, lafen déi folgend Kommandoen. Bedenkt datt dës Befehle fir e Windows Terminal gëllen.

$ mkdir Projet

$ cd /d Wee\zu\Projet

$ python -m venv venv

$ venv\Scripts\aktivéieren

 

Als éischt hu mir eng Projet Verzeechnes. Dunn hu mir eisen aktuellen Verzeechnes geännert op Projet. Mir hunn dann e virtuellt Ëmfeld fir Python an deem Verzeichnis erstallt an aktivéiert. 

Elo wäerte mir weidergoen op d'Installatioun Flask(mir wäerten et benotze fir d'Endpunkte ze kreéieren fir Laascht getest ze ginn) an Locust selwer. 

 

Fir Flask z'installéieren, lafen. Vergewëssert Iech datt Dir am Projet wou Dir e virtuellt Ëmfeld erstallt hutt.

$ pip installéieren Fläsch

 

Fir Locust z'installéieren, lafen

$ pip installéieren Locust

 

Wann dat gemaach ass, gitt déi folgend Kommandoen aus. Suergen, datt Dir an Ärer sinn Projet Verzeechnes wann Dir dëst maacht.

$ Kopie nul __init__.py

$ mkdir app

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Dës Befehle kreéieren e puer Dateien déi mir benotze fir eis Endpunkte mat Flask ze kreéieren. Dir kënnt och dës Dateie mat Ärem Datei Explorer erstellen iwwregens. Mee wat ass de Spaass an deem? Wann Dir dat gemaach hutt, kopéiert de Code hei ënnen an app.py

aus Flask Import Flask, jsonify, Ufro

app = Flask(__name__)

car_models = [

  { 'brand': 'Tesla', 'model': 'Model S' }

]

 

plane_models = [

  { 'brand': 'Boeing', 'model': '747' }

]

 

@app.route('/cars')

def get_cars():

  return jsonify(car_models)

@app.route('/planes')

def get_planes():

  return jsonify(plane_models)

wann __name__ == '__main__':

    app.run(debug=True)  

 

Deen uewe genannte Code enthält eng Method kréien_autoen benotzt fir eng Lëscht vun Autosmarken an hir Modeller ze kréien, an kréien_planes benotzt fir eng Lëscht vu Fligermarken an hir Modeller ze kréien. Fir eis dësen Endpunkt ze lueden, musse mir app.py lafen. Fir dat ze maachen, fuert de Kommando ënnen.

$ python Wee\zu\app.py

Wann Dir dat leeft, sollt Dir eppes wéi dat gesinn:

API Load Testen 1

Wann Dir d'URL vum Terminal kopéiert an tippt Autoen or Fligeren no der /, Dir sollt fäheg sinn d'Donnéeën do ze gesinn. Wéi och ëmmer, eist Zil ass den Endpunkt mat Locust ze testen, net mam Browser. Also loosst eis dat maachen. Fëllt de folgende Kommando an der Root vun Ärem Projet Dossier.

 

$ Kopie nul locust_test.py

 

Dëst erstellt eng 'locust_test.py' Datei an der Root vun Ärem Projet Verzeechnes. Wann Dir dat gemaach hutt, öffnen d'Datei op a paste de Code hei ënnen. Mir wäerten et kuerz erklären.

 

Import Zäit

aus Locust Import HttpUser, Aufgab, tëscht

 

class UserBehaviour(HttpUser):

    wait_time = between(5, 10)

 

    @task

    def get_cars(self):

        self.client.get('/cars')

    

    @task

    def get_planes(self):

        self.client.get('/planes')

 

Dëst ass e Basis Beispill fir Locust ze benotzen fir eng API ze testen. Als éischt kreéiere mir eng Klass Benotzerverhalen, dee kann all passenden Numm ginn, mä muss verlängeren HttpUser. HttpUser ass d'Klass déi sech këmmert fir verschidde virtuelle Benotzer ze instantiéieren fir d'Aufgaben auszeféieren déi mir an der spezifizéieren Benotzerverhalen Klass. 

Eng Aufgab gëtt duerch Dekoratioun vun enger Method mat der @task Dekorateur. Mir hunn och eng Funktioun genannt tëscht () dat erlaabt eis eng Rei vu Sekonnen ze spezifizéieren fir ze waarden ier Dir déi nächst Aufgab ausféiert. Dir kënnt gesinn datt mir eng Rei vu 5 bis 10 Sekonnen dofir an eisem Code zougewisen hunn. 

Fir de Code ze lafen, gitt sécher datt Dir nach ëmmer an Ärem virtuellen Ëmfeld sidd. Wann deen, deen Dir erstallt hutt, vum Server benotzt gëtt deen d'API servéiert, öffnen en neien Terminal, ännert Äre Verzeichnis op Är Projet Verzeechnes, an aktivéiert dat virtuellt Ëmfeld deen Dir erstallt hutt. Dir fannt de Kommando fir e virtuellt Ëmfeld ze aktivéieren uewen. Elo gitt de Kommando hei ënnen an Ärem Terminal.

 

$ locust -f locust_test.py

 

Dir sollt esou eppes gesinn:

API Load Testen 2

Par défaut ass d'Locusst Web Interface op http://localhost/8089. Wann Dir d'Websäit besicht, sollt Dir en Interface wéi dëst gesinn:

API Load Testen 3

Vun der Interface kënne mir d'Zuel vun de Benotzer spezifizéieren, Spawnrate (Benotzer erstallt pro Sekonn), an Host. Dir kënnt d'Adress vun Ärem Host kréien andeems Dir den Terminal kontrolléiert wou de Server leeft. An eisem Fall ass et um Hafen 5000. Wann Dir op klickt Fänkt un ze schwammen, Dir wäert mat der Interface ënnert presentéiert ginn.

API Load Testen 4

Dëst weist Iech verschidde nëtzlech Metriken wéi d'Zuel vu gescheiterten Ufroen, Duerchschnëttszäit fir eng Ufro, d'Mindestzäit fir eng Ufro, Ufroe pro Sekonn, a sou weider. Wann Dir zefridden sidd mat deem wat Dir gesitt, kënnt Dir op de Stop Knäppchen klickt. 


Nieft der Statistiken Tab, et gëtt eng Tabelle Tab déi méi weist Informatiounen a Form vun enger Grafik, wéi d'Bild hei drënner.

Et ass eng total Demanden pro zweet Grafik, Äntwert Zäit Grafik, an Zuel vun de Benotzer Grafiken, all géint Zäit geplot. Mat de Grafike kënnt Dir bestëmmen wéi vill Benotzer fir eng fix Äntwertzäit akzeptabel sinn, oder Dir kënnt Är Charts fir eng konstant Äntwertzäit beobachten trotz enger ëmmer méi grousser Zuel vu Benotzer, an aner Abléck wéi dat. Wann Dir wëllt dës deelen Statistiken mat engem aneren, Dir kënnt e Rapport vun der download Download Daten Tab.

Fir ofzeschléissen ...

Laden Testen vun Ärem API ass eng entscheedend Aktivitéit an Ärem Entwécklungsprozess, also gitt sécher datt et an Ärem Designzyklus integréiert ass. Iwwregens, kënnt Dir och aner Laaschttesttypen ausféieren andeems Dir d'Wäerter fir d'Zuel vun de Benotzer an d'Spawnrate variéiert. 

Wann Dir e Spike-Test wëllt maachen, spezifizéiert e grousse Wäert (z. 2000) fir d'Zuel vun de Benotzer, an dann e gläiche grousse Wäert fir Äre Spawn-Taux (zum Beispill 500). Dëst bedeit datt Dir a 4 Sekonnen all 2000 Benotzer erstallt hutt an op Är Endpunkte kommen. E Stresstest wäert ähnlech sinn, awer mat engem vill méi niddrege Wäert fir Spawnrate. Fir alles erauszefannen wat Dir maache kënnt, kuckt de Locust Dokumentatioun

Bypass TOR Zensur

Ëmgank Internet Zensur mat TOR

Bypass Internet Zensur mat TOR Aféierung An enger Welt wou den Zougang zu Informatioun ëmmer méi reglementéiert gëtt, sinn Tools wéi den Tor Netzwierk entscheedend ginn fir

Weiderliesen »