Testing Muatan API Kanthi Walang

Testing Muatan API Kanthi Walang

Pengujian Muatan API Kanthi Locust: Intro

Sampeyan mbokmenawa wis ing kahanan iki sadurunge: sampeyan nulis kode sing nindakake soko, endpoint contone. Sampeyan nyoba titik pungkasan nggunakake Postman utawa Insomnia, lan kabeh bisa digunakake. Sampeyan ngirim titik pungkasan menyang pangembang sisih klien, sing banjur nggunakake API lan deploys aplikasi. Nanging banjur, API gagal nalika pangguna nggunakake app.

Iki bisa dadi kahanan sing ngganggu banget, lan larang regane kanggo bisnis. Pramila pangembang piranti lunak nindakake macem-macem tes ing sistem piranti lunak kanggo mesthekake yen bisa ditindakake. API ora beda. Sadurunge nyebarake, sampeyan kudu nindakake paling ora tes kinerja lan tes keamanan.

Tes kinerja bisa dikelompokake dadi tes fungsi lan tes beban. Tes fungsi minangka sing biasane sampeyan gunakake Tukang Pos utawa Insomnia. Dheweke njamin fungsi API sampeyan kaya sing dikarepake. Tes beban, ing tangan liyane, luwih prihatin babagan kinerja API sampeyan karo panggunaan ing donya nyata lan beban puncak, lan iki minangka artikel iki. Ayo goleki tes beban kanthi luwih rinci.

Apa Pengujian Muatan API?

Pengujian beban API minangka jinis tes sing digunakake pangembang kanggo simulasi beban normal lan puncak ing titik pungkasan. Pengujian jenis iki ngidini para pangembang ngevaluasi kinerja nyata saka API sadurunge disebarake. Iku mbantu wong ngenali kapasitas operasi maksimum saka sistem, bottlenecks yen ana, lan degradasi kinerja. Tes beban API biasane ditindakake kanthi nggawe pangguna virtual banjur digunakake kanggo nyoba fungsi API bebarengan. 

Tes beban API ngukur metrik kaya wektu nanggepi, pangguna bebarengan, tingkat throughput, tingkat panggunaan sumber daya, Mean Time Between Failure(MTBF), Mean Time To Failure(MTTF), lan sapiturute. Kabeh metrik kasebut bisa digunakake kanggo nemtokake kepriye kinerja API.

Jinis Pengujian Beban

Ana sawetara jinis tes beban, saben nganggo kasus panggunaan. Ayo goleki sawetara.

Pengujian beban: Iki minangka wangun dhasar saka tes beban. Iki digunakake kanggo ngevaluasi kinerja sistem (ing kasus iki, API) ing beban normal lan beban puncak sing dikarepake.

Stress Testing: Iki digunakake kanggo ngevaluasi kinerja sistem ing beban sing abot banget. Tujuan saka tes iki yaiku kanggo ndeleng apa sistem pulih sawise gagal, lan suwene wektu kanggo nindakake. Beban biasane ramped munggah alon-alon nganti ngluwihi kapabilitas sistem.

Pengujian Spike: Iki meh padha karo tes stres, kajaba beban abot ditrapake kanthi tiba-tiba, tinimbang alon-alon ramping. Tes jinis iki nggambarake apa sing kedadeyan nalika ana lonjakan ing rata-rata pangguna utawa pengunjung, utawa nalika ana serangan DDOS ing sistem sampeyan.

Pengujian Soak: Tes iki ora kaya liyane ing ndhuwur. Nempatake sistem sampeyan ing sangisore 80% (utawa kira-kira) saka beban normal lan tetep mlaku nganti suwe, ujare 12 nganti 14 jam. Tes jinis iki nemtokake manawa sistem bisa dipercaya sajrone wektu.

Muat Nguji API Sampeyan Kanthi Locust

Pangembang duwe akses menyang macem-macem opsi kanggo nguji beban API. Sawetara alat uji beban umum yaiku Gatling, JMeter, lan Locust. Kita bakal fokus ing Locust ing artikel iki.

Locust minangka alat uji beban sumber terbuka berbasis python sing digunakake dening perusahaan top kayata Google, Microsoft, lan Riot Games kanggo nyoba API. Ing artikel iki, kita bakal nuduhake carane mbukak test API. 

Kanggo tutorial iki, aku bakal nggawe API sing prasaja nganggo Flask. Sampeyan bisa ngetutake aku utawa mung nggawe API karo Node, utawa kerangka kerja apa wae sing sampeyan seneng.

Requirements

Python 3

Persiyapan & Instalasi

Pisanan, sampeyan kudu nyiyapake lingkungan virtual ing PC supaya sampeyan ora ngrusak lingkungan Python global. Kanggo nindakake iki, tindakake printah ing ngisor iki. Elinga yen printah iki ditrapake kanggo terminal Windows.

$ proyek mkdir

$ cd /d path\to\proyek

$ python -m venv venv

$ venv\Scripts\activate

 

Kaping pisanan, kita nggawe a project direktori. Banjur kita ngganti direktori saiki dadi project. Kita banjur nggawe lan ngaktifake lingkungan virtual kanggo Python ing direktori kasebut. 

Saiki, kita bakal pindhah menyang nginstal Flask(kita bakal nggunakake kanggo nggawe endpoints kanggo mbukak dites) lan Lompat dhewe. 

 

Kanggo nginstal Flask, mbukak. Priksa manawa sampeyan lagi ing project ngendi sampeyan nggawe lingkungan virtual.

$ pip nginstal flask

 

Kanggo nginstal Locust, mbukak

$ pip nginstal walang

 

Yen wis rampung, ketik printah ing ngisor iki. Priksa manawa sampeyan ana ing sampeyan project direktori nalika sampeyan nindakake iki.

$ copy nul __init__.py

$aplikasi mkdir

$copy nul app\app.py

$ copy nul app\__init__.py

 

Printah iki nggawe sawetara file sing bakal digunakake kanggo nggawe titik pungkasan nggunakake Flask. Sampeyan uga bisa nggawe file kasebut nggunakake panjelajah file kanthi cara. Nanging apa sing nyenengake? Yen wis rampung, nyalin kode ing ngisor iki menyang app.py

saka flask import Flask, jsonify, request

app = Flask(__name__)

model_mobil = [

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

]

 

pesawat_model = [

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

]

 

@app.route('/mobil')

def njaluk_mobil():

  bali jsonify(model_mobil)

@app.route('/pesawat')

def get_planes():

  bali jsonify(plane_models)

yen __jeneng__ == '__utama__':

    app.run(debug=True)  

 

Kode ing ndhuwur ngandhut cara njaluk_mobil digunakake kanggo njaluk dhaptar merek mobil lan model, lan njaluk_pesawat digunakake kanggo entuk dhaptar merek pesawat lan modele. Kanggo mbukak test endpoint iki, kita kudu mbukak app.py. Kanggo nindakake sing mbukak printah ing ngisor iki.

$ python path\to\app.py

Sawise sampeyan mbukak, sampeyan kudu ndeleng kaya iki:

API Load Testing 1

Yen sampeyan nyalin URL saka terminal lan ketik mobil or pesawat sawise /, sampeyan kudu bisa ndeleng data ana. Nanging, tujuane yaiku nyoba titik pungkasan karo walang, ora nganggo browser. Dadi ayo nglakoni. Jalanake printah ing ngisor iki ing root of your project direktori.

 

$ copy nul locust_test.py

 

Iki nggawe file 'locust_test.py' ing oyod sampeyan project direktori. Yen wis rampung, bukak file lan tempel kode ing ngisor iki. Kita bakal nerangake sakcepete.

 

wektu ngimpor

saka walang ngimpor HttpUser, tugas, antarane

 

kelas UserBehaviour(HttpUser):

    ngenteni_wektu = antarane(5, 10)

 

    @tugas

    def get_cars(self):

        self.client.get('/cars')

    

    @tugas

    def get_planes(self):

        self.client.get('/planes')

 

Iki minangka conto dhasar nggunakake Locust kanggo mbukak test API. Pisanan, kita nggawe kelas Tumindak Panganggo, sing bisa diwenehi jeneng sing cocog nanging kudu ditambahi HttpUser. HttpUser punika kelas sing njupuk care saka instantiating sawetara virtual kedhaftar kanggo nindakake tugas kita nemtokake ing Tumindak Panganggo kelas. 

A tugas ditemtokake dening dekorasi cara karo @tugas penghias. Kita uga duwe fungsi disebut antarane() sing ngidini kita nemtokake sawetara detik kanggo ngenteni sadurunge nglakokake tugas sabanjure. Sampeyan bisa ndeleng manawa kita nemtokake sawetara 5 nganti 10 detik kanggo kode kasebut. 

Kanggo mbukak kode kasebut, priksa manawa sampeyan isih ana ing lingkungan virtual. Yen sing digawe digunakake dening server sing nglayani API, bukak terminal anyar, ganti direktori sampeyan project direktori, lan aktifake lingkungan virtual sing digawe. Sampeyan bisa nemokake printah kanggo ngaktifake lingkungan virtual ing ndhuwur. Saiki, ketik printah ing ngisor iki ing terminal sampeyan.

 

$ walang -f locust_test.py

 

Sampeyan kudu ndeleng kaya iki:

API Load Testing 2

Kanthi gawan, antarmuka web walang dumunung ing http://localhost/8089. Yen sampeyan ngunjungi situs web, sampeyan kudu ndeleng antarmuka kaya iki:

API Load Testing 3

Saka antarmuka, kita bisa nemtokake jumlah pangguna, tingkat spawn (pangguna digawe per detik), lan Host. Sampeyan bisa entuk alamat host sampeyan kanthi mriksa terminal ing ngendi server mlaku. Ing kasus kita, iku ing port 5000. Nalika sampeyan klik ing Miwiti swarming, sampeyan bakal diwenehi antarmuka ing ngisor iki.

API Load Testing 4

Iki nuduhake macem-macem metrik migunani kayata jumlah panjalukan sing gagal, wektu rata-rata kanggo panjalukan, wektu minimal kanggo panjalukan, panjalukan per detik, lan liya-liyane. Sawise sampeyan wareg karo apa sing katon, sampeyan bisa ngeklik tombol mandeg. 


Kejabi Statistik tab, ana a Gambar tab sing nuduhake luwih Alexa awujud grafik, kados gambar ing ngandhap menika.

Ana total panjalukan saben grafik detik, grafik wektu respon, lan jumlah pangguna grafik, kabeh direncanakake nglawan wektu. Nggunakake grafik, sampeyan bisa nemtokake jumlah pangguna sing bisa ditampa kanggo wektu nanggepi sing tetep, utawa sampeyan bisa mirsani grafik sampeyan kanthi wektu respon sing tetep sanajan pangguna tambah akeh, lan wawasan liyane sing kaya ngono. Yen sampeyan pengin nuduhake iki stats karo wong liya, sampeyan bisa ngundhuh laporan saka Download Data tab.

Nganakke...

Nguji beban API sampeyan minangka kegiatan sing penting ing proses pangembangan sampeyan, mula priksa manawa iku kalebu ing siklus desain sampeyan. Miturut cara, sampeyan uga bisa nindakake jinis tes beban liyane kanthi ngowahi nilai kanggo jumlah pangguna lan tingkat spawn. 

Yen sampeyan pengin nindakake tes spike, nemtokake nilai gedhe (umpamane 2000) kanggo jumlah pangguna, banjur nilai sing padha kanggo tingkat spawn sampeyan (500 contone). Iki tegese ing 4 detik, sampeyan bakal nggawe kabeh 2000 pangguna lan ngakses titik pungkasan sampeyan. Tes stres bakal padha, nanging kanthi rega sing luwih murah kanggo tingkat spawn. Kanggo ngerteni kabeh sing bisa ditindakake, priksa Locust dokumentasi