Ujian Beban API Dengan Belalang

Ujian Beban API Dengan Belalang

Ujian Beban API Dengan Locust: Pengenalan

Anda mungkin pernah berada dalam situasi ini sebelum ini: anda menulis kod yang melakukan sesuatu, titik akhir sebagai contoh. Anda menguji titik akhir anda menggunakan Posmen atau Insomnia, dan semuanya berfungsi dengan baik. Anda menyampaikan titik akhir kepada pembangun pihak pelanggan, yang kemudiannya menggunakan API dan menggunakan aplikasi. Tetapi kemudian, API gagal apabila pengguna menggunakan apl tersebut.

Ini boleh menjadi situasi yang sangat menjengkelkan untuk dilalui, apatah lagi mahal untuk perniagaan. Itulah sebabnya pembangun perisian menjalankan pelbagai ujian pada sistem perisian untuk memastikan ia berfungsi seperti yang diharapkan. API tidak berbeza. Sebelum penggunaan, anda perlu melakukan sekurang-kurangnya ujian prestasi dan ujian keselamatan.

Ujian prestasi boleh dikumpulkan ke dalam ujian kefungsian dan ujian beban. Ujian kefungsian ialah perkara yang biasa anda gunakan Posmen atau Insomnia. Mereka memastikan API anda berfungsi seperti yang anda jangkakan. Ujian beban, sebaliknya, lebih mementingkan prestasi API anda dengan penggunaan dunia sebenar dan beban puncak, dan itulah maksud artikel ini. Mari lihat ujian beban dengan lebih terperinci.

Apakah Ujian Beban API?

Ujian beban API ialah sejenis ujian yang digunakan pembangun untuk mensimulasikan beban biasa dan puncak pada titik akhir. Ujian jenis ini membolehkan pembangun menilai prestasi dunia sebenar API sebelum ia digunakan. Ia membantu mereka mengenal pasti kapasiti operasi maksimum sistem, kesesakan jika ada, dan kemerosotan prestasi. Ujian beban API biasanya dilakukan dengan mencipta pengguna maya dan kemudian menggunakannya untuk menguji kefungsian API secara serentak. 

Ujian beban API mengukur metrik seperti masa tindak balas, pengguna serentak, kadar pemprosesan, tahap penggunaan sumber, Masa Min Antara Kegagalan(MTBF), Masa Min Untuk Kegagalan(MTTF) dan sebagainya. Semua metrik ini boleh digunakan untuk menentukan prestasi API.

Jenis Ujian Beban

Terdapat beberapa jenis ujian beban, masing-masing dengan kes penggunaannya. Mari kita lihat sebahagian daripada mereka.

Ujian Beban: Ini adalah bentuk asas ujian beban. Ia digunakan untuk menilai prestasi sistem (dalam kes ini, API) di bawah beban biasa dan beban puncak yang dijangkakan.

Ujian Tekanan: Ini digunakan untuk menilai prestasi sistem di bawah beban yang sangat berat. Matlamat ujian ini adalah untuk melihat sama ada sistem pulih selepas kegagalan, dan berapa lama masa yang diperlukan untuk berbuat demikian. Beban biasanya dinaikkan perlahan-lahan sehingga ia melebihi keupayaan sistem.

Ujian Spike: Ini sedikit serupa dengan ujian tekanan, kecuali beban berat dikenakan secara tiba-tiba, berbanding dengan menaikkannya secara perlahan. Ujian jenis ini mewakili perkara yang berlaku apabila terdapat peningkatan mendadak dalam purata bilangan pengguna atau pelawat anda, atau apabila terdapat serangan DDOS pada sistem anda.

Ujian Rendam: Ujian ini tidak seperti yang lain di atas. Ia meletakkan sistem anda di bawah 80% (atau lebih kurang) daripada beban biasa dan membiarkannya berjalan untuk tempoh yang panjang, katakan 12 hingga 14 jam. Ujian jenis ini menentukan sejauh mana kebolehpercayaan sistem dari semasa ke semasa.

Muatkan Menguji API Anda Dengan Locust

Pembangun mempunyai akses kepada pelbagai pilihan untuk menguji beban API mereka. Beberapa alat ujian beban biasa ialah Gatling, JMeter dan Locust. Kami akan memfokuskan pada Locust dalam artikel ini.

Locust ialah alat ujian beban sumber terbuka berasaskan python yang digunakan oleh syarikat terkemuka seperti Google, Microsoft dan Riot Games untuk menguji API mereka. Dalam artikel ini, kami akan menunjukkan cara memuatkan ujian API. 

Untuk tutorial ini, saya akan mencipta API mudah dengan Flask. Anda boleh mengikuti saya atau hanya mencipta API anda dengan Node, atau apa sahaja rangka kerja yang anda selesa.

Keperluan Jawatan

Python 3

Persediaan & Pemasangan

Mula-mula, anda perlu menyediakan persekitaran maya pada PC anda supaya anda tidak merosakkan persekitaran Python global anda. Untuk melakukan itu, jalankan arahan berikut. Ambil perhatian bahawa arahan ini digunakan pada terminal Windows.

$ projek mkdir

$ cd /d laluan\to\projek

$ python -m venv venv

$ venv\Scripts\activate

 

Pertama, kami mencipta a projek direktori. Kemudian kami menukar direktori semasa kami kepada projek. Kami kemudian mencipta dan mengaktifkan persekitaran maya untuk Python di dalam direktori itu. 

Sekarang, kita akan beralih ke pemasangan Flask(kami akan menggunakannya untuk mencipta titik akhir untuk diuji beban) dan Locust sendiri. 

 

Untuk memasang Flask, jalankan. Pastikan anda berada dalam projek tempat anda mencipta persekitaran maya.

$ pip pasang kelalang

 

Untuk memasang Locust, jalankan

$ pip pasang belalang

 

Setelah itu selesai, taipkan arahan berikut. Pastikan anda berada dalam diri anda projek direktori apabila anda melakukan ini.

$ copy nul __init__.py

$ aplikasi mkdir

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Perintah ini mencipta beberapa fail yang akan kami gunakan untuk mencipta titik akhir kami menggunakan Flask. Anda juga boleh membuat fail ini menggunakan penjelajah fail anda. Tetapi apa yang menyeronokkan dalam itu? Setelah anda melakukannya, salin kod di bawah ke dalam app.py

dari flask import Flask, jsonify, request

app = Flask(__name__)

model_kereta = [

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

]

 

pesawat_model = [

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

]

 

@app.route('/cars')

def get_cars():

  kembalikan jsonify(model_kereta)

@app.route('/planes')

def get_planes():

  kembalikan jsonify(plane_models)

jika __nama__ == '__utama__':

    app.run(debug=True)  

 

Kod di atas mengandungi kaedah dapatkan_kereta digunakan untuk mendapatkan senarai jenama kereta dan model mereka, dan dapatkan_pesawat digunakan untuk mendapatkan senarai jenama kapal terbang dan model mereka. Untuk kami memuatkan ujian titik akhir ini, kami perlu menjalankan app.py. Untuk melakukan itu jalankan arahan di bawah.

$ python path\to\app.py

Sebaik sahaja anda menjalankannya, anda akan melihat sesuatu seperti ini:

Ujian Beban API 1

Jika anda menyalin URL dari terminal dan taip kereta or pesawat selepas /, anda sepatutnya dapat melihat data di sana. Walau bagaimanapun, matlamat kami adalah untuk menguji titik akhir dengan belalang, bukan dengan penyemak imbas. Jadi mari kita lakukan itu. Jalankan arahan berikut dalam akar fail anda projek direktori.

 

$ copy nul locust_test.py

 

Ini mencipta fail 'locust_test.py' dalam akar fail anda projek direktori. Setelah anda melakukannya, buka fail dan tampal kod di bawah. Kami akan menerangkannya sebentar lagi.

 

masa import

dari import belalang HttpUser, tugas, antara

 

kelas UserBehaviour(HttpUser):

    masa_tunggu = antara(5, 10)

 

    @tugas

    def get_cars(self):

        self.client.get('/cars')

    

    @tugas

    def get_planes(self):

        self.client.get('/planes')

 

Ini ialah contoh asas menggunakan Locust untuk memuatkan ujian API. Pertama, kita buat kelas Kelakuan Pengguna, yang boleh diberi nama yang sesuai tetapi mesti dilanjutkan HttpUser. HttpUser ialah kelas yang menjaga instantiating berbilang pengguna maya untuk menjalankan tugas yang kami tentukan dalam Kelakuan Pengguna kelas. 

Tugas ditentukan dengan menghias kaedah dengan @tugas penghias. Kami juga mempunyai fungsi yang dipanggil antara() yang membolehkan kami menentukan julat saat untuk menunggu sebelum melaksanakan tugas seterusnya. Anda boleh melihat bahawa kami memperuntukkan julat 5 hingga 10 saat untuk itu dalam kod kami. 

Untuk menjalankan kod, pastikan anda masih berada dalam persekitaran maya anda. Jika yang anda buat sedang digunakan oleh pelayan yang menyediakan API, buka terminal baharu, tukar direktori anda kepada anda projek direktori, dan aktifkan persekitaran maya yang anda buat. Anda boleh mencari arahan untuk mengaktifkan persekitaran maya di atas. Sekarang, masukkan arahan di bawah dalam terminal anda.

 

$ locust -f locust_test.py

 

Anda harus melihat sesuatu seperti ini:

Ujian Beban API 2

Secara lalai, antara muka web locust terletak di http://localhost/8089. Jika anda melawati tapak web, anda sepatutnya melihat antara muka seperti ini:

Ujian Beban API 3

Daripada antara muka, kami boleh menentukan bilangan pengguna, kadar bertelur (pengguna dicipta sesaat), dan Hos. Anda boleh mendapatkan alamat hos anda dengan menyemak terminal tempat pelayan sedang berjalan. Dalam kes kami, ia berada di port 5000. Apabila anda mengklik pada Mula berkerumun, anda akan dipaparkan dengan antara muka di bawah.

Ujian Beban API 4

Ini menunjukkan kepada anda pelbagai metrik berguna seperti bilangan permintaan yang gagal, purata masa untuk permintaan, masa minimum untuk permintaan, permintaan sesaat dan sebagainya. Setelah anda berpuas hati dengan apa yang anda lihat, anda boleh klik pada butang berhenti. 


Selain itu Statistik tab, terdapat a Carta tab yang menunjukkan lebih banyak maklumat dalam bentuk graf, seperti gambar di bawah.

Terdapat jumlah permintaan setiap graf kedua, graf masa tindak balas, and graf bilangan pengguna, semua merancang menentang masa. Menggunakan graf, anda boleh menentukan bilangan pengguna yang boleh diterima untuk masa tindak balas tetap, atau anda boleh memerhatikan carta anda untuk masa tindak balas yang berterusan walaupun bilangan pengguna semakin meningkat, dan cerapan lain seperti itu. Jika anda ingin berkongsi ini stats dengan orang lain, anda boleh memuat turun laporan daripada Muat turun Data tab.

Untuk menyimpulkan...

Memuatkan ujian API anda ialah aktiviti penting dalam proses pembangunan anda, jadi pastikan ia dimasukkan dalam kitaran reka bentuk anda. Dengan cara ini, anda juga boleh menjalankan jenis ujian beban lain dengan mengubah nilai untuk bilangan pengguna dan kadar pembiakan. 

Jika anda ingin melakukan ujian pancang, nyatakan nilai yang besar (katakan 2000) untuk bilangan pengguna, dan kemudian nilai yang sama besar untuk kadar benih anda (500 sebagai contoh). Ini bermakna bahawa dalam masa 4 saat, anda akan mempunyai semua 2000 pengguna membuat dan mengakses titik akhir anda. Ujian tegasan akan serupa, tetapi dengan nilai yang jauh lebih rendah untuk kadar bertelur. Untuk mengetahui semua yang anda boleh lakukan, lihat Locust dokumentasi