Locust adalah alat pengujian kinerja/beban sumber terbuka untuk HTTP dan protokol lainnya. Pendekatannya yang ramah pengembang memungkinkan Anda menentukan pengujian Anda dalam kode Python biasa.
Tes belalang dapat dijalankan dari baris perintah atau menggunakan UI berbasis web. Throughput, waktu respons, dan kesalahan dapat dilihat secara real time dan/atau diekspor untuk dianalisis nanti.
Anda dapat mengimpor pustaka Python reguler ke dalam pengujian Anda, dan dengan arsitektur pluggable Locust, pustaka tersebut dapat diperluas tanpa batas. Berbeda dengan kebanyakan alat lainnya, desain pengujian Anda tidak akan pernah dibatasi oleh GUI atau bahasa khusus domain.
Untuk segera memulai, buka dokumentasi.
Jika Anda ingin pengguna Anda melakukan perulangan, melakukan beberapa perilaku kondisional, atau melakukan beberapa perhitungan, Anda cukup menggunakan konstruksi pemrograman reguler yang disediakan oleh Python. Locust menjalankan setiap pengguna di dalam greenletnya sendiri (proses/coroutine yang ringan). Hal ini memungkinkan Anda untuk menulis pengujian seperti kode Python biasa (memblokir) daripada harus menggunakan callback atau mekanisme lainnya. Karena skenario Anda "hanya python", Anda dapat menggunakan IDE biasa, dan mengontrol versi pengujian Anda sebagai kode biasa (berbeda dengan beberapa alat lain yang menggunakan format XML atau biner)
dari belalang impor HttpUser, tugas, antarkelas QuickstartUser(HttpUser):wait_time = antara(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " kata sandi":"bar"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):untuk item_id dalam rentang(10):self.client. dapatkan(f"/item?id={item_id}", nama="/item")
Locust memudahkan menjalankan uji beban yang didistribusikan ke beberapa mesin. Ini berbasis peristiwa (menggunakan gevent), yang memungkinkan satu proses menangani ribuan pengguna secara bersamaan. Meskipun mungkin ada alat lain yang mampu melakukan lebih banyak permintaan per detik pada perangkat keras tertentu, overhead yang rendah dari setiap pengguna Locust membuatnya sangat cocok untuk menguji beban kerja yang sangat bersamaan.
Locust memiliki antarmuka web yang ramah pengguna yang menunjukkan kemajuan pengujian Anda secara real-time. Anda bahkan dapat mengubah beban saat pengujian sedang berjalan. Itu juga dapat dijalankan tanpa UI, sehingga mudah digunakan untuk pengujian CI/CD.
Meskipun Locust terutama bekerja dengan situs/layanan web, Locust dapat digunakan untuk menguji hampir semua sistem atau protokol. Cukup tulis klien untuk apa yang ingin Anda uji, atau jelajahi beberapa yang dibuat oleh komunitas.
Basis kode Locust sengaja dibuat kecil dan tidak menyelesaikan semuanya secara langsung. Sebaliknya, kami mencoba membuatnya mudah beradaptasi dengan situasi apa pun yang mungkin Anda temui, menggunakan kode Python biasa. Tidak ada yang menghentikan Anda dari:
Kirim data pelaporan waktu nyata ke TimescaleDB dan visualisasikan di Grafana
Selesaikan panggilan untuk menangani kekhasan REST API Anda
Gunakan bentuk/profil muatan yang benar-benar khusus
...
Dokumentasi: docs.locust.io
Dukungan/Pertanyaan: StackOverflow
Diskusi Github: Diskusi Github
Obrolan/diskusi: Slack (pendaftaran)
Penjaga: Lars Holmberg
UI: Andrew Baldwin
Pencipta asli: Jonatan Heyman
Terima kasih banyak kepada semua kontributor kami
Sumber terbuka dilisensikan di bawah lisensi MIT (lihat file LISENSI untuk detailnya).