Apa itu Pengujian Skalabilitas? Belajar dengan Contoh
โก Ringkasan Cerdas
Pengujian Skalabilitas mengukur bagaimana sebuah aplikasi berperilaku ketika beban pengguna, volume data, atau tingkat transaksi naik atau turun, mengungkapkan titik tepat di mana kinerja berhenti meningkat dan mengidentifikasi hambatan yang bertanggung jawab.
Apa itu Pengujian Skalabilitas?
Pengujian Skalabilitas Pengujian skalabilitas adalah metode pengujian non-fungsional yang mengukur kinerja suatu sistem atau jaringan ketika jumlah permintaan pengguna ditingkatkan atau diturunkan. Tujuan dari Pengujian Skalabilitas adalah untuk memastikan bahwa sistem dapat menangani peningkatan lalu lintas pengguna, volume data, dan frekuensi transaksi yang diproyeksikan. Pengujian ini menguji kemampuan sistem untuk memenuhi permintaan yang terus meningkat.
Pengujian Skalabilitas adalah subtipe dari pengujian kinerjaOleh karena itu, fokusnya adalah pada perilaku aplikasi ketika diterapkan pada sistem yang lebih besar atau diuji di bawah beban berlebih. Dalam Rekayasa Perangkat LunakPengujian skalabilitas mengukur titik di mana aplikasi berhenti berkembang dan mengidentifikasi penyebabnya.
Mengapa melakukan Pengujian Skalabilitas?
Masalah kapasitas jarang muncul selama pengujian fungsional. Masalah tersebut muncul pada hari perdagangan tersibuk dalam setahun, ketika kampanye pemasaran diluncurkan, atau ketika kumpulan data yang tumbuh secara perlahan selama dua tahun akhirnya memperlambat setiap kueri. Pengujian Skalabilitas mengungkap batasan tersebut dalam lingkungan yang terkontrol terlebih dahulu. Secara spesifik, pengujian ini membantu Anda:
- Tentukan bagaimana aplikasi tersebut beradaptasi seiring meningkatnya beban kerja, dan di mana kurva tersebut mendatar.
- Tentukan batas pengguna bersamaan untuk aplikasi web sebelum waktu respons menjadi tidak dapat diterima.
- Tentukan penurunan kinerja di sisi klien dan pengalaman pengguna akhir di bawah beban kerja tinggi, seperti rendering layar yang lambat.
- Tentukan ketahanan dan penurunan kinerja sisi server, termasuk saturasi CPU, kebocoran memori, dan kehabisan kumpulan koneksi.
Hubungan ini paling mudah digambarkan sebagai sebuah kurva: throughput meningkat seiring dengan penambahan beban hingga suatu sumber daya jenuh, setelah itu pengguna tambahan hanya akan memperpanjang antrian.
Jenis-jenis Pengujian Skalabilitas
Skalabilitas bukanlah satu properti tunggal, jadi rencana pengujian biasanya mencakup lebih dari satu dimensi. Empat tipe di bawah ini adalah yang paling sering diukur oleh tim, dan dua tipe pertama menentukan bentuk lingkungan pengujian itu sendiri.
| Tipe | Apa yang diukur? | Apa yang dibuktikan oleh tes tersebut |
|---|---|---|
| Skalabilitas vertikal (peningkatan skala) | CPU, memori, atau penyimpanan ditambahkan ke satu server. | Seberapa besar beban tambahan yang diserap oleh satu mesin yang telah ditingkatkan, dan di mana batas kemampuan node tunggal berada. |
| Skalabilitas horizontal (skalakan keluar) | Server, kontainer, atau node tambahan di belakang load balancer. | Apakah throughput meningkat secara proporsional dengan jumlah node yang ditambahkan, atau apakah sumber daya bersama membatasinya? |
| Skalabilitas fungsional | Fitur, modul, atau layanan baru | Apakah fungsionalitas tambahan dapat diserap tanpa menurunkan kualitas transaksi yang sudah ada? |
| Skalabilitas administratif | Pengguna, penyewa, tim, atau lingkungan yang akan dikelola | Apakah proses orientasi, perizinan, dan pemantauan tetap dapat diterapkan seiring pertumbuhan organisasi? |
Penskalaan vertikal lebih sederhana karena arsitekturnya jarang berubah, tetapi sebuah mesin tunggal selalu memiliki batasan. Penskalaan horizontal menghilangkan batasan tersebut dan meningkatkan toleransi kesalahan, dengan mengorbankan latensi jaringan, konsistensi data, dan biaya koordinasiโyang semuanya harus diukur oleh pengujian, bukan diasumsikan.
Apa yang Harus Diuji dalam Pengujian Skalabilitas
Skalabilitas dinilai berdasarkan pengukuran, bukan tayangan. Catat atribut berikut pada setiap langkah pemuatan agar trennya, dan bukan hanya angka akhirnya, yang terlihat.
| Atribut | Apa yang dikatakannya padamu |
|---|---|
| Response time | Jeda waktu antara permintaan pengguna dan balasan sistem; seharusnya tetap konstan seiring meningkatnya konkurensi. |
| Transisi layar | Seberapa cepat satu halaman atau tampilan berganti ke halaman atau tampilan berikutnya saat terjadi beban berlebih |
| Throughput | Volume permintaan yang diproses per satuan waktu; sebuah titik stabil menandai batas skalabilitas. |
| Pengukuran waktu | Waktu sesi, waktu reboot, waktu pencetakan, waktu transaksi, dan waktu eksekusi tugas. |
| Performa dibandingkan dengan jumlah pengguna | Bagaimana setiap metrik berubah seiring bertambahnya pengguna bersamaan secara bertahap. |
| Minta tarif | Permintaan per detik, transaksi per detik, dan hit per detik. |
| Penggunaan jaringan | Penggunaan bandwidth dan latensi paket antar tingkatan |
| Penggunaan CPU dan memori | Biaya sumber daya per transaksi; angka yang terus meningkat sering menandakan kebocoran. |
| Penghitung server web | Permintaan dan respons per detik, kedalaman antrian, dan koneksi yang ditolak. |
| Performa di bawah beban | Perilaku gabungan setelah setiap metrik dibaca bersamaan pada puncaknya |
Strategi Pengujian untuk Pengujian Skalabilitas
Strategi pengujian untuk Pengujian Skalabilitas berbeda tergantung pada jenis aplikasi yang diuji. Jika suatu aplikasi mengakses sebuah DatabaseParameter pengujian akan mencakup ukuran basis data dalam kaitannya dengan jumlah pengguna, dan sebagainya.
Prasyarat untuk Pengujian Skalabilitas
- Kemampuan Distribusi Beban โ Periksa apakah alat uji beban memungkinkan beban dihasilkan dari beberapa mesin dan dikendalikan dari titik pusat.
- OperaSistem ting โ Periksa apa sistem operasi Agen pembangkit beban dan master pengujian beban berjalan di bawah.
- Prosesor โ Periksa jenis CPU apa yang dibutuhkan untuk agen pengguna virtual dan master uji beban.
- Memori โ Periksa berapa banyak memori yang cukup untuk agen pengguna virtual dan master pengujian beban.
- Lingkungan Uji โ Periksa itu lingkungan pengujian mencerminkan proses produksi dengan cukup akurat sehingga hasilnya dapat diterapkan.
Bagaimana melakukan Pengujian Skalabilitas
- Tetapkan proses yang dapat diulang untuk menjalankan pengujian skalabilitas di seluruh siklus hidup aplikasi.
- Tentukan kriteria skalabilitas
- Buat daftar pendek alat perangkat lunak yang diperlukan untuk menjalankan uji beban
- Atur lingkungan pengujian dan konfigurasikan perangkat keras yang diperlukan untuk menjalankan pengujian skalabilitas
- Rencanakan skenario pengujian serta pengujian skalabilitas.
- Buat dan verifikasi skrip pengguna virtual.
- Buat dan verifikasi skenario uji beban
- Jalankan tes
- Evaluasi hasilnya
- Menghasilkan laporan yang dibutuhkan
Rencana Uji Skalabilitas
Sebelum Anda benar-benar membuat pengujian, kembangkan rencana pengujian yang terperinci. Ini adalah langkah penting untuk memastikan bahwa pengujian sesuai dengan persyaratan aplikasi.
Berikut ini adalah atribut untuk membuat definisi yang baik: Rencana Tes untuk Pengujian Skalabilitas.
- Langkah-langkah untuk SkripSkrip pengujian harus memiliki langkah-langkah terperinci yang menentukan tindakan pasti yang akan dilakukan pengguna.
- Data Waktu ProsesRencana pengujian harus menentukan data runtime apa pun yang diperlukan untuk berinteraksi dengan aplikasi.
- Tes Berdasarkan DataJika skrip memerlukan data yang bervariasi saat dijalankan, Anda perlu memahami semua kolom yang membutuhkan data tersebut.
Contoh Pengujian Skalabilitas
Pertimbangkan sebuah toko online yang memperkirakan 2,000 pembeli serentak selama penjualan musiman. Tim tersebut menyepakati kriteria kelulusan pertama: transaksi pembayaran harus selesai dalam waktu kurang dari tiga detik untuk 95 persen pengguna, dengan tingkat kesalahan di bawah satu persen.
Pengujian kemudian menjalankan skrip penelusuran-pencarian-keranjang-pembayaran yang sama pada 250, 500, 1,000, 1,500, dan 2,000 pengguna virtual. Waktu respons tetap mendekati dua detik hingga 1,000 pengguna, bergeser menjadi 2.8 detik pada 1,500 pengguna, dan mencapai sembilan detik pada 2,000 pengguna sementara CPU basis data berada di 98 persen. Oleh karena itu, batas skalabilitas kira-kira 1,500 pengguna, dan hambatan utamanya adalah lapisan basis data โ bukan server aplikasi yang direncanakan tim untuk ditambahkan.
Alat Pengujian Skalabilitas
Pengujian skalabilitas membutuhkan alat yang dapat menghasilkan beban dari beberapa mesin sekaligus dan melaporkan hasilnya secara terpusat. Pilihan biasanya mengikuti bahasa utama tim dan protokol yang sedang diuji.
| Alat Bantu | Scripting | Paling cocok untuk |
|---|---|---|
| Apache JMeter | Rencana pengujian GUI plus XML, Java berdasarkan | Cakupan protokol yang luas termasuk JDBC, JMS, LDAP, dan SOAP. |
| Grafana k6 | JavaSkrip atau TypeScript | Pengujian API dan microservice yang terintegrasi ke dalam pipeline CI/CD. |
| Gatling | JavaKotlin atau Scala DSL | Jumlah pengguna virtual yang tinggi per injektor dengan laporan HTML terperinci. |
| Belalang | Polos Python | Python tim yang perlu memperluas klien di luar HTTP |
| LoadRunner | Skrip mirip C yang direkam di VuGen | Perusahaan besar dengan aplikasi lama dan aplikasi paket |
Runner yang dihosting di cloud seperti BlazeMeterLoadView dan Gatling Enterprise berada di atas beberapa mesin ini dan layak dipertimbangkan jika pengujian membutuhkan puluhan ribu pengguna virtual atau lalu lintas dari berbagai wilayah geografis. Survei yang lebih luas tentang kategori ini tersedia dalam panduan untuk alat pengujian kinerja.
Tantangan dan Praktik Terbaik dalam Pengujian Skalabilitas
Hasil skalabilitas yang paling mengecewakan tracKembali ke pengaturan pengujian daripada aplikasi. Ini adalah masalah yang berulang, dan kebiasaan yang mencegahnya.
Tantangan umum
- Lingkungan yang terlalu kecil โ Sebuah sistem pengujian dengan setengah dari memori produksi melaporkan adanya hambatan yang tidak ada di lingkungan produksi.
- Model beban kerja yang tidak realistis โ Skrip tanpa waktu tunggu atau variasi data akan mengakses cache yang tidak akan diakses oleh pengguna sebenarnya.
- Hasil yang berisik โ Penskalaan otomatis, pengumpulan sampah, dan perangkat keras cloud bersama menyebabkan dua eksekusi identik menghasilkan hasil yang berbeda.
- Observabilitas tipis โ Tanpa metrik sisi server, hasil yang lambat menunjukkan bahwa ada sesuatu yang rusak, tetapi tidak menunjukkan apa kerusakannya.
- Biaya โ Menghasilkan konkurensi yang sangat tinggi membutuhkan armada generator beban tersendiri, yang mudah sekali mengalami kekurangan anggaran.
Praktik terbaik
- Sepakati kriteria kelulusan, seperti persentil waktu respons dan batas atas tingkat kesalahan, sebelum pengujian pertama.
- Tingkatkan beban secara bertahap sesuai rencana dan tahan setiap tahapan cukup lama agar sistem stabil.
- Variasikan data uji per pengguna virtual agar caching tidak memanipulasi hasil.
- Kumpulkan metrik aplikasi, basis data, dan infrastruktur bersamaan dengan angka-angka dari sisi klien.
- Simpan skrip pengujian dalam kontrol versi dan jalankan pemeriksaan skalabilitas singkat pada setiap build, lalu jalankan sepenuhnya sebelum rilis.
- Bandingkan tren di berbagai versi pengembangan, alih-alih menilai satu laporan secara terpisah.
Pengujian Skalabilitas vs Pengujian Beban
Keduanya seringkali membingungkan karena sama-sama menerapkan beban. Perbedaannya terletak pada pertanyaan yang dijawab oleh masing-masing: Pengujian Skalabilitas menanyakan seberapa jauh sistem dapat berkembang, sedangkan pengujian beban menanyakan apakah sistem tersebut mampu menangani beban yang sudah diperkirakan.
| Dasar | Pengujian Skalabilitas | Pengujian beban |
|---|---|---|
| Fokus | Fokusnya adalah pada kinerja situs web, perangkat lunak, perangkat keras, dan aplikasi Anda ketika terjadi perubahan pada ukuran atau volume sistem untuk memenuhi kebutuhan yang terus berkembang. | Pengujian beban berfokus pada pengujian aplikasi di bawah beban berat, untuk menentukan pada titik mana waktu respons sistem gagal. |
| Pola beban | Beban ditingkatkan secara bertahap, dan sumber daya dapat ditambahkan di antara setiap tahapan. | Beban dipertahankan pada puncak yang diharapkan untuk durasi tetap. |
| Pertanyaan terjawab | Seberapa jauh sistem ini dapat berkembang, dan apa yang membatasinya? | Apakah sistem ini memenuhi target yang telah disepakati saat ini? |
| Keluaran biasa | Batasan skalabilitas, hambatan, dan rencana kapasitas. | Lulus atau gagal berdasarkan target waktu respons dan kapasitas produksi. |
Keduanya duduk di bawah pengujian non-fungsional payung di samping stress testing, pengujian lonjakan, pengujian ketahanan ke pengujian volume, dan strategi kinerja yang matang biasanya menjalankan beberapa di antaranya terhadap skrip yang sama.

