API Load Test nrog Locust

API Load Test nrog Locust

API Load Test Nrog Locust: Intro

Tej zaum koj twb tau nyob rau hauv qhov teeb meem no ua ntej: koj sau code uas ua ib yam dab tsi, piv txwv li endpoint. Koj sim koj qhov kawg siv Postman lossis Insomnia, thiab txhua yam ua haujlwm zoo. Koj dhau ntawm qhov kawg mus rau tus neeg siv khoom-sab tsim tawm, uas tom qab ntawd siv cov API thiab xa daim ntawv thov. Tab sis tom qab ntawd, API ua tsis tiav thaum cov neeg siv siv lub app.

Qhov no tuaj yeem yog qhov teeb meem nyuaj heev uas yuav tsum tau nyob hauv, tsis hais txog tus nqi rau kev lag luam. Nws yog vim li cas cov neeg tsim tawm software ua ntau yam kev sim ntawm software systems kom ntseeg tau tias lawv ua tau raws li qhov xav tau. APIs tsis txawv. Ua ntej xa mus, koj yuav tsum ua yam tsawg kawg nkaus kev xeem thiab kev ntsuam xyuas kev ruaj ntseg.

Kev ntsuas kev ua tau zoo tuaj yeem muab faib ua cov kev ntsuas kev ua haujlwm thiab kev ntsuas kev thauj khoom. Kev xeem ua haujlwm yog qhov koj feem ntau siv Postman lossis Insomnia rau. Lawv xyuas kom meej tias koj qhov API ua haujlwm raws li koj xav tau. Load xeem, ntawm qhov tod tes, muaj kev txhawj xeeb ntau dua li cas koj API ua haujlwm nrog kev siv lub ntiaj teb tiag tiag thiab qhov siab tshaj plaws, thiab qhov ntawd yog qhov tsab xov xwm no hais txog. Cia peb saib cov kev xeem thauj khoom kom ntxaws ntxiv.

API Load Test yog dab tsi?

API load testing yog ib hom kev sim cov neeg tsim khoom siv los simulate ib txwm thiab siab tshaj plaws ntawm qhov kawg. Qhov kev sim no tso cai rau cov neeg tsim khoom ntsuas qhov ua tau zoo hauv ntiaj teb ntawm API ua ntej nws siv. Nws pab lawv txheeb xyuas qhov muaj peev xwm ua haujlwm siab tshaj plaws ntawm lub kaw lus, tsis muaj dab tsi, thiab kev ua haujlwm tsis zoo. API load tests feem ntau yog ua los ntawm kev tsim cov neeg siv virtual thiab tom qab ntawd siv lawv los sim tawm API cov haujlwm ua ke. 

API thauj khoom ntsuas ntsuas ntsuas kev ntsuas xws li lub sijhawm teb, cov neeg siv ib txhij, tus nqi dhau los, qib kev siv peev txheej, Lub Sijhawm Nruab Nrab Nruab Nrab (MTBF), Lub Sijhawm Ua Tsis Taus (MTTF), thiab lwm yam. Tag nrho cov kev ntsuas no tuaj yeem siv los txiav txim siab seb API ua tau zoo npaum li cas.

Hom Kev Load Test

Muaj ntau ntau hom kev kuaj load, txhua tus nrog nws cov ntaub ntawv siv. Cia peb saib ib co ntawm lawv.

Load Test: Qhov no yog qhov yooj yim daim ntawv ntawm kev kuaj load. Nws yog siv los ntsuas qhov kev ua tau zoo ntawm lub kaw lus (qhov no, API) nyob rau hauv ib txwm thauj khoom thiab xav tau siab tshaj plaws.

Kev Ntsuas Kev Nyuaj Siab: Qhov no yog siv los ntsuas qhov kev ua tau zoo ntawm qhov system nyob rau hauv ib qho hnyav heev. Lub hom phiaj ntawm qhov kev sim no yog saib seb lub kaw lus puas rov qab los tom qab tsis ua haujlwm, thiab nws yuav siv sijhawm ntev npaum li cas los ua qhov ntawd. Lub load yog feem ntau ramped maj mam kom txog thaum nws tshaj lub peev xwm ntawm lub system.

Kev Ntsuas Spike: Qhov no yog me ntsis zoo ib yam li kev ntsuam xyuas kev ntxhov siab, tshwj tsis yog hnyav hnyav yog siv tam sim ntawd, tsis zoo li maj mam ramping nws. Qhov kev sim no sawv cev rau qhov tshwm sim thaum muaj qhov tshwm sim tam sim ntawd hauv koj cov neeg siv nruab nrab lossis cov neeg tuaj saib, lossis thaum muaj DDOS nres ntawm koj lub cev.

Soak Test: Qhov kev sim no tsis zoo li lwm tus saum toj no. Nws tso koj lub cev qis dua 80% (lossis muaj li ntawd) ntawm cov khoom ib txwm muaj thiab tso nws khiav mus rau lub sijhawm ntev, hais 12 mus rau 14 teev. Qhov kev ntsuam xyuas no txiav txim siab seb qhov system txhim khu kev qha dhau sijhawm.

Load Test Koj APIs Nrog Locust

Cov neeg tsim khoom tau nkag mus rau ntau yam kev xaiv rau kev thauj khoom kuaj lawv APIs. Qee cov cuab yeej kuaj cov khoom siv yog Gatling, JMeter, thiab Locust. Peb yuav tsom mus rau Locust hauv kab lus no.

Locust yog python-based open-source load testing tool siv los ntawm cov tuam txhab saum toj kawg nkaus xws li Google, Microsoft, thiab Riot Games los ntsuas lawv APIs. Hauv tsab xov xwm no, peb yuav ua qauv qhia yuav ua li cas thauj khoom API. 

Rau qhov kev qhia no, Kuv yuav tsim API yooj yim nrog Flask. Koj tuaj yeem ua raws nrog kuv lossis tsuas yog tsim koj tus API nrog Node, lossis txawm tias koj nyiam nrog.

uas yuav tsum tau

Nab hab sej 3

Teeb & Kev Txhim Kho

Ua ntej, koj yuav tsum teeb tsa ib puag ncig virtual ntawm koj lub PC kom koj tsis txhob cuam tshuam koj lub ntiaj teb Python ib puag ncig. Txhawm rau ua qhov no, khiav cov lus txib hauv qab no. Nco ntsoov tias cov lus txib no siv rau lub davhlau ya nyob twg Windows.

$ mkdir project

$ cd /d path\to\project

$ python -m venv venv

$venv\Scripts\activate

 

Ua ntej, peb tsim ib project phau ntawv. Tom qab ntawd peb hloov peb cov npe tam sim no rau project. Peb mam li tsim thiab qhib ib puag ncig virtual rau Python hauv cov npe ntawd. 

Tam sim no, peb yuav txav mus rau kev txhim kho Nplaim taws(peb yuav siv nws los tsim cov ntsiab lus kawg kom thauj khoom kuaj) thiab Tauslas nws tus kheej. 

 

Txhawm rau nruab Flask, khiav. Xyuas kom tseeb tias koj nyob hauv project qhov twg koj tsim ib puag ncig virtual.

$pip nruab lub hwj

 

Txhawm rau nruab Locust, khiav

$ pip nruab locust

 

Thaum ua tiav, ntaus tawm cov lus txib hauv qab no. Xyuas kom koj nyob hauv koj project directory thaum koj ua qhov no.

$ copy nul __init__.py

$ mkdir app

$copy nul app\app.py

$copy nul app\__init__.py

 

Cov lus txib no tsim qee cov ntaub ntawv uas peb yuav siv los tsim peb cov ntsiab lus kawg siv Flask. Koj tuaj yeem tsim cov ntaub ntawv no siv koj cov ntaub ntawv tshawb nrhiav los ntawm txoj kev. Tab sis dab tsi yog qhov kev lom zem ntawm qhov ntawd? Thaum koj tau ua tiav, luam cov lej hauv qab no rau hauv app.py ua

los ntawm lub raj mis import Flask, jsonify, thov

app = Flask(__name__)

car_models = [

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

]

 

plane_models = [

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

]

 

@app.route('/ tsheb')

def get_cars():

  rov qab jsonify(car_models)

@app.route('/planes')

def get_planes():

  rov qab jsonify(plane_models)

yog __name__ == '__main__':

    app.run(debug=True)  

 

Cov cai saum toj no muaj ib txoj hauv kev get_cars siv tau ib daim ntawv teev npe tsheb thiab lawv cov qauv, thiab get_planes siv tau cov npe ntawm lub dav hlau hom thiab lawv cov qauv. Rau peb kom thauj khoom kuaj qhov kawg no, peb yuav tsum khiav app.py. Txhawm rau ua qhov ntawd khiav cov lus txib hauv qab no.

$ python path\to\app.py

Thaum koj khiav qhov ntawd, koj yuav tsum pom qee yam zoo li no:

API Load Test 1

Yog tias koj luam qhov URL ntawm lub davhlau ya nyob twg thiab ntaus tsheb or dav hlau tom qab qhov /, koj yuav tsum tuaj yeem pom cov ntaub ntawv muaj. Txawm li cas los xij, peb lub hom phiaj yog sim qhov kawg nrog locust, tsis yog nrog browser. Yog li cia peb ua li ntawd. Khiav cov lus txib hauv qab no hauv lub hauv paus ntawm koj project directory.

 

$copy nul locust_test.py

 

Qhov no tsim ib 'locust_test.py' cov ntaub ntawv nyob rau hauv lub hauv paus ntawm koj project phau ntawv. Thaum koj tau ua tiav lawm, qhib cov ntaub ntawv thiab muab tshuaj txhuam rau hauv cov cai hauv qab no. Peb yuav piav qhia luv luv.

 

sij hawm import

los ntawm locust import HttpUser, ua haujlwm, nruab nrab ntawm

 

class UserBhaviour(HttpUser):

    wait_time = nruab nrab (5, 10)

 

    @task

    def get_cars(tus kheej):

        self.client.get('/ tsheb')

    

    @task

    def get_planes(self):

        self.client.get('/planes')

 

Qhov no yog ib qho piv txwv yooj yim ntawm kev siv Locust los thauj cov API. Ua ntej, peb tsim ib chav kawm UserBhaviour, uas tuaj yeem muab lub npe tsim nyog tab sis yuav tsum txuas ntxiv HttpUser. HttpUser yog chav kawm uas saib xyuas instantiating ntau tus neeg siv virtual los ua cov haujlwm uas peb tau teev tseg hauv UserBhaviour chav kawm. 

Ib txoj hauj lwm yog teev los ntawm kev kho kom zoo nkauj ib txoj kev nrog rau @task kho kom zoo nkauj. Peb kuj muaj lub luag haujlwm hu ua nruab nrab ntawm ( ) uas tso cai rau peb qhia ntau yam ntawm cov vib nas this los tos ua ntej ua haujlwm tom ntej. Koj tuaj yeem pom tias peb muab ntau yam ntawm 5 mus rau 10 vib nas this rau qhov ntawd hauv peb cov cai. 

Txhawm rau khiav cov cai, xyuas kom tseeb tias koj tseem nyob hauv koj qhov chaw virtual. Yog tias qhov koj tsim tau raug siv los ntawm tus neeg rau zaub mov pabcuam API, qhib lub davhlau ya nyob twg tshiab, hloov koj cov npe rau koj. project directory, thiab qhib lub virtual ib puag ncig koj tsim. Koj tuaj yeem pom cov lus txib kom qhib lub virtual ib puag ncig saum toj no. Tam sim no, sau cov lus txib hauv qab no hauv koj lub davhlau ya nyob twg.

 

$locust -f locust_test.py

 

Koj yuav tsum pom tej yam zoo li no:

API Load Test 2

Los ntawm lub neej ntawd, locust lub web interface nyob ntawm http://localhost/8089. Yog tias koj mus ntsib lub vev xaib, koj yuav tsum pom qhov interface zoo li no:

API Load Test 3

Los ntawm lub interface, peb tuaj yeem qhia tus naj npawb ntawm cov neeg siv, tus nqi spawn (cov neeg siv tsim ib ob), thiab Tus Tswv. Koj tuaj yeem tau txais qhov chaw nyob ntawm koj tus tswv tsev los ntawm kev txheeb xyuas lub davhlau ya nyob twg uas lub server tab tom khiav. Nyob rau hauv peb cov ntaub ntawv, nws yog nyob rau ntawm qhov chaw nres nkoj 5000. Thaum koj nias rau Pib swarming, koj yuav raug nthuav tawm nrog lub interface hauv qab no.

API Load Test 4

Qhov no qhia koj ntau yam kev ntsuas muaj txiaj ntsig xws li tus lej ntawm kev thov ua tsis tiav, lub sijhawm nruab nrab rau kev thov, lub sijhawm tsawg kawg nkaus rau kev thov, thov ib ob, thiab lwm yam. Thaum koj txaus siab rau qhov koj pom, koj tuaj yeem nyem rau ntawm lub pob nres. 


Dhau li ntawm cov Txheeb cais tab, muaj ib kab kos tab uas qhia ntau dua ntaub ntawv nyob rau hauv daim ntawv ntawm ib daim duab, zoo li daim duab hauv qab no.

Muaj yog ib tug tag nrho thov ib daim duab thib ob, teb lub sij hawm graph, thiab tus naj npawb ntawm cov neeg siv graph, txhua tus tau npaj tawm tsam lub sijhawm. Siv cov duab kos, koj tuaj yeem txiav txim siab seb muaj pes tsawg tus neeg siv tau txais rau lub sijhawm teb tas li, lossis koj tuaj yeem soj ntsuam koj cov kab kos rau lub sijhawm teb tsis tu ncua txawm tias muaj coob tus neeg siv, thiab lwm yam kev pom zoo li ntawd. Yog nej xav share no stats nrog lwm tus, koj tuaj yeem rub tawm daim ntawv qhia los ntawm lub Rub Cov Ntaub Ntawv tab.

Kom xaus...

Load testing your API yog ib qho tseem ceeb hauv koj txoj kev txhim kho, yog li xyuas kom tseeb tias nws tau koom nrog hauv koj lub voj voog tsim. Los ntawm txoj kev, koj tuaj yeem nqa tawm lwm hom kev sim thauj khoom los ntawm kev sib txawv ntawm qhov tseem ceeb rau tus naj npawb ntawm cov neeg siv thiab tus nqi spawn. 

Yog tias koj xav ua qhov kev sim ntsuas, qhia tus nqi loj (hais 2000) rau tus naj npawb ntawm cov neeg siv, thiab tom qab ntawd tus nqi sib npaug rau koj tus nqi spawn (500 piv txwv). Qhov no txhais tau hais tias hauv 4 vib nas this, koj yuav muaj tag nrho 2000 cov neeg siv tsim thiab nkag mus rau koj qhov kawg. Kev ntsuas kev ntxhov siab yuav zoo sib xws, tab sis nrog tus nqi qis dua rau tus nqi spawn. Yuav kom paub txhua yam koj ua tau, mus saib Locust ntaub ntawv

Bypassing TOR Censorship

Bypassing Internet Censorship nrog TOR

Kev hla Is Taws Nem Censorship nrog TOR Taw Qhia Hauv lub ntiaj teb uas nkag mus rau cov ntaub ntawv tau raug tswj hwm, cov cuab yeej zoo li Tor network tau dhau los ua qhov tseem ceeb rau

Nyeem ntxiv »