Pengujian Beban API Dengan Locust

Pengujian Beban API Dengan Locust

Pengujian Beban API Dengan Locust: Intro

Anda mungkin pernah berada dalam situasi ini sebelumnya: Anda menulis kode yang melakukan sesuatu, misalnya titik akhir. Anda menguji titik akhir Anda menggunakan Postman atau Insomnia, dan semuanya berfungsi dengan baik. Anda meneruskan titik akhir ke pengembang sisi klien, yang kemudian menggunakan API dan menyebarkan aplikasi. Tapi kemudian, API gagal saat pengguna menggunakan aplikasi.

Ini bisa menjadi situasi yang sangat menjengkelkan, belum lagi mahal untuk bisnis. Itu sebabnya pengembang perangkat lunak melakukan berbagai pengujian pada sistem perangkat lunak untuk memastikan kinerjanya seperti yang diharapkan. API tidak berbeda. Sebelum penyebaran, Anda harus melakukan setidaknya tes kinerja dan tes keamanan.

Tes kinerja dapat dikelompokkan menjadi tes fungsionalitas dan tes beban. Tes fungsionalitas adalah apa yang biasanya Anda gunakan untuk Postman atau Insomnia. Mereka memastikan bahwa API Anda berfungsi seperti yang Anda harapkan. Tes beban, di sisi lain, lebih mementingkan kinerja API Anda dengan penggunaan dunia nyata dan beban puncak, dan itulah yang dibahas dalam artikel ini. Mari kita lihat uji beban lebih terinci.

Apa itu Pengujian Beban API?

Pengujian beban API adalah jenis pengujian yang digunakan developer untuk mensimulasikan beban normal dan puncak pada titik akhir. Jenis pengujian ini memungkinkan pengembang mengevaluasi kinerja dunia nyata dari API sebelum diterapkan. Ini membantu mereka mengidentifikasi kapasitas operasi maksimum sistem, kemacetan jika ada, dan penurunan kinerja. Uji beban API biasanya dilakukan dengan membuat pengguna virtual dan kemudian menggunakannya untuk menguji fungsionalitas API secara bersamaan. 

Uji beban API mengukur metrik seperti waktu respons, pengguna bersamaan, laju throughput, tingkat pemanfaatan sumber daya, Mean Time Between Failure (MTBF), Mean Time To Failure (MTTF), dan sebagainya. Semua metrik ini dapat digunakan untuk menentukan seberapa baik kinerja API.

Jenis Pengujian Beban

Ada beberapa jenis pengujian beban, masing-masing dengan kasus penggunaannya. Mari kita lihat beberapa di antaranya.

Pengujian Beban: Ini adalah bentuk dasar dari uji beban. Ini digunakan untuk mengevaluasi kinerja sistem (dalam hal ini, API) di bawah beban normal dan beban puncak yang diharapkan.

Pengujian Stres: Ini digunakan untuk mengevaluasi kinerja sistem di bawah beban yang sangat berat. Tujuan dari tes ini adalah untuk melihat apakah suatu sistem pulih setelah kegagalan, dan berapa lama waktu yang dibutuhkan untuk melakukannya. Beban biasanya dinaikkan perlahan hingga melebihi kemampuan sistem.

Pengujian Lonjakan: Ini sedikit mirip dengan stress testing, kecuali beban berat diterapkan secara tiba-tiba, bukan dengan meningkatkannya secara perlahan. Tes semacam ini mewakili apa yang terjadi ketika ada lonjakan tiba-tiba dalam jumlah rata-rata pengguna atau pengunjung Anda, atau ketika ada serangan DDOS di sistem Anda.

Pengujian Rendam: Tes ini tidak seperti yang lain di atas. Ini menempatkan sistem Anda di bawah 80% (atau sekitar) dari beban normal dan membiarkannya berjalan untuk waktu yang lama, katakanlah 12 hingga 14 jam. Tes semacam ini menentukan seberapa andal suatu sistem dari waktu ke waktu.

Muat Menguji API Anda Dengan Locust

Pengembang memiliki akses ke berbagai opsi untuk memuat pengujian API mereka. Beberapa alat pengujian beban yang umum adalah Gatling, JMeter, dan Locust. Kami akan fokus pada Locust di artikel ini.

Locust adalah alat pengujian beban sumber terbuka berbasis python yang digunakan oleh perusahaan top seperti Google, Microsoft, dan Riot Games untuk menguji API mereka. Pada artikel ini, kami akan mendemonstrasikan cara memuat pengujian API. 

Untuk tutorial ini, saya akan membuat API sederhana dengan Flask. Anda dapat mengikuti saya atau hanya membuat API Anda dengan Node, atau kerangka kerja apa pun yang Anda sukai.

Persyaratan

Python 3

Pengaturan & Instalasi

Pertama, Anda perlu menyiapkan lingkungan virtual di PC agar tidak mengacaukan lingkungan global Python Anda. Untuk melakukannya, jalankan perintah berikut. Perhatikan bahwa perintah ini berlaku untuk terminal Windows.

proyek $ mkdir

$ cd /d jalur\ke\proyek

$python -m venv venv

$ venv\Scripts\aktifkan

 

Pertama, kami membuat a proyek direktori. Kemudian kami mengubah direktori kami saat ini menjadi proyek. Kami kemudian membuat dan mengaktifkan lingkungan virtual untuk Python di dalam direktori itu. 

Sekarang, kita akan melanjutkan untuk menginstal Labu(kami akan menggunakannya untuk membuat titik akhir yang akan diuji beban) dan Belalang itu sendiri. 

 

Untuk menginstal Flask, jalankan. Pastikan Anda berada di proyek tempat Anda membuat lingkungan virtual.

$ pip menginstal labu

 

Untuk menginstal Locust, jalankan

$ pip instal belalang

 

Setelah selesai, ketikkan perintah berikut. Pastikan Anda berada di Anda proyek direktori ketika Anda melakukan ini.

$salin nul __init__.py

aplikasi $mkdir

$ salin nul app\app.py

$ salin aplikasi nul\__init__.py

 

Perintah ini membuat beberapa file yang akan kita gunakan untuk membuat endpoint menggunakan Flask. Omong-omong, Anda juga dapat membuat file-file ini menggunakan file explorer Anda. Tapi apa kesenangannya? Setelah Anda selesai melakukannya, salin kode di bawah ini ke app.py

dari labu impor Labu, jsonify, permintaan

app = Labu (__ name__)

model_mobil = [

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

]

 

model_pesawat = [

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

]

 

@aplikasi.rute('/mobil')

def get_cars():

  kembalikan jsonify(car_models)

@aplikasi.rute('/pesawat')

def get_planes():

  kembalikan jsonify(plane_models)

jika __name__ == '__main__':

    app.run(debug=Benar)  

 

Kode di atas berisi metode dapatkan_mobil digunakan untuk mendapatkan daftar merek mobil dan modelnya, dan dapatkan_pesawat digunakan untuk mendapatkan daftar merek pesawat dan modelnya. Agar kami memuat uji titik akhir ini, kami perlu menjalankan app.py. Untuk melakukan itu jalankan perintah di bawah ini.

$ python jalur\ke\app.py

Setelah Anda menjalankannya, Anda akan melihat sesuatu seperti ini:

Pengujian Beban API 1

Jika Anda menyalin URL dari terminal dan ketik mobil or pesawat setelah /, Anda seharusnya dapat melihat data di sana. Namun, tujuan kami adalah menguji titik akhir dengan locust, bukan dengan browser. Jadi mari kita lakukan itu. Jalankan perintah berikut di root Anda proyek direktori.

 

$salin nul locust_test.py

 

Ini membuat file 'locust_test.py' di root Anda proyek direktori. Setelah Anda selesai melakukannya, buka file dan rekatkan kode di bawah ini. Kami akan menjelaskannya sebentar lagi.

 

waktu impor

dari belalang impor HttpUser, tugas, antara

 

kelas Perilaku Pengguna (HttpUser):

    waktu_tunggu = antara(5, 10)

 

    @tugas

    def get_cars(diri):

        self.client.get('/mobil')

    

    @tugas

    def get_planes(diri):

        self.client.get('/pesawat')

 

Ini adalah contoh dasar penggunaan Locust untuk memuat pengujian API. Pertama, kita membuat kelas Perilaku Pengguna, yang dapat diberi nama yang sesuai tetapi harus diperluas HttpUser. HttpUser adalah kelas yang menangani pembuatan instance beberapa pengguna virtual untuk menjalankan tugas yang kami tentukan di Perilaku Pengguna kelas. 

Tugas ditentukan dengan mendekorasi metode dengan @tugas penghias. Kami juga memiliki fungsi yang disebut di antara() yang memungkinkan kita menentukan rentang detik untuk menunggu sebelum menjalankan tugas berikutnya. Anda dapat melihat bahwa kami menetapkan rentang 5 hingga 10 detik untuk itu dalam kode kami. 

Untuk menjalankan kode, pastikan Anda masih berada di lingkungan virtual Anda. Jika yang Anda buat sedang digunakan oleh server yang melayani API, buka terminal baru, ubah direktori Anda menjadi milik Anda proyek direktori, dan aktifkan lingkungan virtual yang Anda buat. Anda dapat menemukan perintah untuk mengaktifkan lingkungan virtual di atas. Sekarang, masukkan perintah di bawah ini di terminal Anda.

 

$ belalang -f belalang_test.py

 

Anda akan melihat sesuatu seperti ini:

Pengujian Beban API 2

Secara default, antarmuka web belalang terletak di http://localhost/8089. Jika Anda mengunjungi situs web, Anda akan melihat antarmuka seperti ini:

Pengujian Beban API 3

Dari antarmuka, kita dapat menentukan jumlah pengguna, tingkat spawn (pengguna yang dibuat per detik), dan Host. Anda bisa mendapatkan alamat host Anda dengan memeriksa terminal tempat server berjalan. Dalam kasus kami, ini ada di port 5000. Saat Anda mengklik Mulai berkerumun, Anda akan disajikan dengan antarmuka di bawah ini.

Pengujian Beban API 4

Ini menunjukkan kepada Anda berbagai metrik berguna seperti jumlah permintaan yang gagal, waktu rata-rata untuk permintaan, waktu minimum untuk permintaan, permintaan per detik, dan seterusnya. Setelah Anda puas dengan apa yang Anda lihat, Anda dapat mengklik tombol stop. 


disamping statistika tab, ada Charts tab yang menampilkan lebih banyak informasi dalam bentuk grafik seperti gambar di bawah ini.

Ada total permintaan per detik grafik, grafik waktu respons, dan grafik jumlah pengguna, semua diplot melawan waktu. Dengan menggunakan grafik, Anda dapat menentukan berapa banyak pengguna yang dapat diterima untuk waktu respons yang tetap, atau Anda dapat mengamati diagram Anda untuk waktu respons yang konstan meskipun jumlah pengguna meningkat, dan wawasan lain seperti itu. Jika Anda ingin berbagi ini statistik dengan orang lain, Anda dapat mengunduh laporan dari Download Data Tab.

Untuk menyimpulkan...

Uji beban API Anda adalah aktivitas penting dalam proses pengembangan Anda, jadi pastikan itu tergabung dalam siklus desain Anda. Omong-omong, Anda juga dapat melakukan jenis uji beban lainnya dengan memvariasikan nilai untuk jumlah pengguna dan tingkat pemijahan. 

Jika Anda ingin melakukan uji lonjakan, tentukan nilai yang besar (katakanlah 2000) untuk jumlah pengguna, lalu nilai yang sama besarnya untuk tingkat pemijahan Anda (misalnya 500). Ini berarti bahwa dalam 4 detik, Anda akan membuat 2000 pengguna dan mengakses titik akhir Anda. Tes stres akan serupa, tetapi dengan nilai tingkat pemijahan yang jauh lebih rendah. Untuk mengetahui semua yang dapat Anda lakukan, lihat Locust dokumentasi