Ini adalah kumpulan utilitas berdasarkan rekomendasi penduduk Hacker News dan GitHub. Daftar ini termasuk: Locust, Vegeta, Slow_cooker, k6 dan Siege. Mereka digunakan oleh insinyur dari DICE, EA dan Buoyant, serta pengembang Kubernetes dan Load Impact. Mari kita bicara tentang alat-alat ini.
Foto - Victor Freitas - UnsplashAlat untuk situs pengujian stres. Semua skrip ditulis dengan Python. Antarmuka web khusus yang dibangun di atas
Flask memungkinkan hasil pemantauan secara real time. Para penulis Locust adalah insinyur Swiss, di antaranya adalah karyawan perusahaan DICE dan EA yang terlibat dalam pengembangan dan publikasi game komputer.
Alat ini didasarkan pada konsep yang menarik: Belalang ("belalang") mengemulasi perilaku sekelompok serangga (pengguna virtual), "menyerang" situs selama pengujian. Permintaan dibuat menggunakan perpustakaan jaringan untuk mengatur komputasi paralel -
gevent . Berikut adalah contoh tes sederhana, yang diberikan di situs web resmi proyek:
from locust import HttpLocust, TaskSet, task class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test_user", "password": "" }) @task def index(self): self.client.get("/") @task def about(self): self.client.get("/about/") class WebsiteUser(HttpLocust): task_set = WebsiteTasks min_wait = 5000 max_wait = 15000
Locust menggunakan perpustakaan permintaan. Add-on ini untuk alat Python standar menyederhanakan bekerja dengan HTTP dan SSL dan membuat kode lebih visual. Omong-omong,
dokumentasi permintaan dapat digunakan sebagai lembar contekan untuk uji debug pada Locust.
Alat pengujian stres ini telah ada selama lebih dari tujuh tahun. Selama masa ini, sebuah komunitas luas telah terbentuk di sekitarnya - di GitHub
lebih dari 10 ribu bintang . Locust digunakan dalam mengevaluasi kinerja jaringan Battlelog untuk seri game Battlefield. Armin Ronacher, penulis kerangka kerja Flask,
berbicara positif tentang alat itu.
Di antara kelemahan Locust
, ada kinerja yang agak rendah dan kesalahan periodik dalam memperkirakan waktu respons situs. Alat ini juga tidak tahu cara membuat grafik, tetapi masalahnya diselesaikan dengan mengunggah hasil dalam bentuk file
CSV dan membuat grafik di editor tabel.
Jika Anda ingin mengenal Locust lebih dekat, Anda harus memperhatikan
dokumentasi alat ini. Anda juga dapat merekomendasikan
kinerja oleh Alexei Romanov dari Wargaming di Python Meetup. Dia berbicara tentang bagaimana menulis skrip yang meniru perilaku pengguna.
Utilitas baris perintah untuk menguji layanan HTTP yang ditulis dalam Go. Itu dapat dihubungkan sebagai perpustakaan untuk membuat alat pengujian beban Anda sendiri. Vegeta dikembangkan oleh salah satu penulis platform
Sourcegraph open
source , sebuah mesin untuk meninjau dan menavigasi kode sumber yang digunakan oleh Lyft, Uber dan Yelp.
Vegeta mengevaluasi kemampuan sumber daya jaringan, "membombardir" permintaan mereka dengan frekuensi yang ditetapkan. Misalnya, untuk memeriksa localhost, cukup masukkan perintah berikut:
echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report
Secara default, Vegeta bekerja dengan aliran pembacaan perintah standar (stdin), sehingga sumber daya untuk pengujian ditransmisikan melalui gema. Parameter durasi menunjukkan durasi tes. Laporan akan dihasilkan dalam file results.bin. Vegeta menghasilkan laporan dalam format teks, tetapi mampu
menggambar grafik . Anda dapat menghasilkan mereka dengan perintah berikut:
vegeta plot -title=Results results.bin > results-plot.html
Sebuah komunitas besar telah membentuk sekitar Vegeta -
12 ribu bintang di GitHub . Alat ini bahkan
digunakan oleh pengembang Kubernetes untuk mengevaluasi kinerja platform mereka - kemudian Vegeta menghasilkan sekitar 10 juta permintaan per detik ke sekelompok ribuan node.
Dokumentasi yang menjelaskan semua fungsi dan flag untuk tes Vegeta ada
di repositori di GitHub . Anda
juga dapat menemukan file yang dapat dieksekusi yang telah dikompilasi di sana.
Ini adalah alat pengujian beban server yang ditulis dalam Go. Ini dikembangkan oleh para insinyur dari Buoyant, yang menciptakan jaringan layanan untuk Kubernetes - Linkerd. Ini adalah bagian dari Cloud Native Computing Foundation dan
dianggap sebagai pesaing
Google Istio .
Foto - Joshua Aragon - UnsplashBiasanya, utilitas untuk pengujian beban memeriksa kemampuan server, mengirimkannya sebanyak mungkin permintaan dalam waktu singkat. Para penulis slow_cooker mengatakan bahwa alat mereka memungkinkan Anda untuk mengevaluasi pekerjaan besi di bawah beban yang dapat diprediksi untuk waktu yang lama.
Pakar yang ahli menggunakan pengembangan mereka untuk menguji Linkerd dan layanan lainnya, seperti nginx. Instrumen ini cukup muda - usianya sekitar tiga - jadi sampai ia mendapat komunitas besar. Tetapi situasinya mungkin berubah di masa depan, misalnya, repositoriunya telah
bercabang di Skysanner, layanan internasional untuk mencari tiket pesawat.
Anda dapat menemukan kode sumber
di GitHub .
Alat untuk memuat dan menguji regresi layanan microser, wadah, dan situs yang dihosting di cloud. Ini ditulis dalam Go dan oleh pengembang JavaScript dari Load Impact - ini adalah aplikasi untuk menguji "kegigihan" situs.
Bekerja dengan k6 didasarkan pada segalanya sebagai model kode, ketika logika uji dan semua pengaturan ditulis dalam JavaScript. Dalam naskah, langkah-langkah individual dapat dikelompokkan, yang mungkin nyaman bagi mereka yang terbiasa mengikuti prinsip-prinsip BDD. Ini adalah contoh dari grup semacam itu:
import { group } from "k6"; export default function() { group("user flow: returning user", function() { group("visit homepage", function() {
Alat ini juga memungkinkan untuk
merekam skrip dan
membuat grafik - fungsi yang terakhir diimplementasikan pada InfluxDB dan Grafana. Dan memiliki integrasi dengan sistem CI seperti Jenkins, Circle CI, Team City dan GitLab.
Pengguna mengatakan bahwa k6
tidak membutuhkan banyak sumber daya dan memiliki API yang nyaman. Tetapi ada beberapa kelemahan, khususnya, k6
tidak mendukung websocket dan
tidak tahu bagaimana melakukan tes pada sistem terdistribusi. Meskipun pengembang k6 dalam utas tematik di Hacker News
mengatakan bahwa fitur ini akan muncul di masa depan.
Jika Anda ingin berkenalan dengan kemampuan k6 sendiri, warga HN merekomendasikan untuk memulai dengan
dokumentasi teknis - detail dan contoh. Jika Anda memiliki pertanyaan, Anda dapat menghubungi
forum resmi .
Siege memungkinkan Anda memuat server web percobaan. Utilitas itu dibuat oleh insinyur Jeff Fulmer, sehingga pengembang dapat memeriksa konsumsi sumber daya kode mereka dalam kondisi yang dekat dengan pertempuran. Siege mengemulasi aliran akses berkelanjutan ke situs dari banyak pengguna, seolah-olah memegang server "di bawah pengepungan" - maka nama alat.
Setelah pengujian, utilitas menunjukkan: waktu pemindaian, jumlah transaksi per detik, throughput, jumlah permintaan yang berhasil dan tidak berhasil, serta jumlah mereka dengan kode respons 200. Berikut adalah
contoh dari laporan yang dihasilkan oleh Siege.
Pengepungan cukup luas di komunitas TI. Misalnya, seluruh bagian dalam buku "
NGINX High Performance " dikhususkan untuk memuat pengujian dengan bantuannya. Itu juga
digunakan oleh beberapa penyedia cloud.
Di antara kekurangan Siege, sintaksis non-standar dan metode tidak jelas untuk menghitung parameter pengujian dapat dibedakan - misalnya, pengalihan
dianggap transaksi yang berhasil, sehingga jumlahnya dapat melebihi jumlah total permintaan. Jika Anda ingin mencoba Siege dalam praktiknya, pelajari
manual online - ada beberapa "keanehan" sistem.
Bacaan tambahan di blog 1cloud.ru:
Apa yang Baru di Linux kernel 5.3 - Driver Grafik, Virtualisasi, dan Pembaruan Lainnya
Mengapa pengembang peramban arus utama kembali menolak untuk menampilkan subdomain
Mengapa Apple Mengubah Persyaratan untuk Pengembang Aplikasi