Apa itu Pengujian Penyimpanan? Jenis-jenisnya, Concepts & Contoh
โก Ringkasan Cerdas
Pengujian penyimpanan memverifikasi bahwa aplikasi menulis datanya ke direktori yang benar dan memiliki ruang disk yang cukup untuk menghindari penghentian yang tidak terduga, sekaligus mengukur seberapa cepat penyimpanan yang mendasarinya merespons di bawah beban realistis.
Apa itu Pengujian Penyimpanan?
Pengujian penyimpanan adalah jenis pengujian perangkat lunak yang digunakan untuk memverifikasi apakah aplikasi perangkat lunak yang diuji menyimpan data yang relevan ke dalam direktori yang sesuai, dan apakah aplikasi tersebut memiliki ruang yang cukup untuk mencegah penghentian yang tidak terduga karena ruang disk yang tidak mencukupi. Ini juga disebut pengujian kinerja penyimpanan.
Teknik ini berada di sisi non-fungsional dari disiplin ilmu tersebut: seperti bentuk-bentuk lainnya pengujian non-fungsional, hal itu tidak mengatakan apa pun tentang apakah suatu fitur menghasilkan jawaban yang benar, dan sepenuhnya tentang apakah sistem dapat terus menghasilkan jawaban seiring bertambahnya volume data dan tekanan I/O.
Mengapa Pengujian Penyimpanan?
Penyimpanan adalah lapisan paling lambat yang diakses sebagian besar aplikasi, sehingga kelemahan di sana akan terlihat di mana-mana. Empat alasan membenarkan siklus pengujian khusus.
- Penyimpanan yang lambat berarti waktu respons yang lambat, kueri yang berjalan lama, dan ketersediaan aplikasi yang lebih rendah.
- Penyimpanan yang lambat merupakan beban tambahan bagi pemeliharaan infrastruktur server.
- Ada baiknya untuk mengetahui batasan penyimpanan praktis sistem sebelum digunakan.
- Hal ini membantu untuk memahami bagaimana sistem bereaksi ketika perangkat keras diganti atau ditingkatkan.
Diagram di bawah ini menempatkan pengujian penyimpanan dalam konteks tersebut โ aplikasi, sistem file, dan perangkat fisik semuanya berada pada jalur yang sama, dan penundaan di mana pun pada jalur tersebut akan memengaruhi pengguna.
Jenis Pengujian Penyimpanan
Tiga pendekatan digunakan, dan perbedaan utamanya terletak pada seberapa mirip beban kerja dengan aplikasi sebenarnya.
- Pengujian Aplikasi: Pengujian aplikasi dengan contoh kueri dalam lingkungan yang menyerupai lingkungan produksi.
- Simulasi Aplikasi: Melakukan pengujian menggunakan perangkat lunak standar yang berperilaku serupa dengan aplikasi target.
- Benchmarking: Melakukan pengujian menggunakan perangkat lunak benchmarking standar yang menghasilkan beban kerja sintetis yang dapat diulang.
Yang pertama memberikan hasil yang paling realistis dan paling tidak portabel; yang ketiga memberikan angka yang dapat dibandingkan di berbagai perangkat dan vendor, tetapi tidak banyak menjelaskan bagaimana aplikasi itu sendiri akan berperilaku.
Pengujian Umum Concepts Terlibat Selama Pengujian Penyimpanan
Masing-masing dari ketiga tipe tersebut dipetakan ke serangkaian aktivitas yang berbeda, seperti yang dirangkum di bawah ini.
| Jenis Pengujian Penyimpanan | Contoh aktivitas pengujian penyimpanan umum |
| Pengujian Aplikasi | Bandingkan waktu respons OLTP Bandingkan waktu berjalan batch Bandingkan kecepatan streaming berkelanjutan |
| Simulasi Aplikasi | Uji IOPS penyimpanan puncak untuk database Menguji throughput penyimpanan puncak untuk lingkungan streaming data Uji latensi penyimpanan untuk pengiriman pesan atau aplikasi single-threaded lainnya. |
| benchmarking | Menguji kerusakan data |
Metrik Utama dalam Pengujian Penyimpanan
Hasil penyimpanan dilaporkan melalui sejumlah kecil angka. Membaca salah satu angka saja adalah cara tercepat untuk mencapai kesimpulan yang salah, karena angka-angka tersebut saling bertentangan.
| metrik | Apa yang diukur | Di saat yang paling penting |
| IOPS | Operasi baca dan tulis diselesaikan per detik, terlepas dari ukurannya. | Basis data transaksional dan penulisan acak kecil |
| Latensi | Waktu antara dimulainya dan selesainya satu operasi I/O | Pengiriman pesan dan jalur aplikasi berutas tunggal |
| Throughput | Volume data yang dipindahkan per detik, biasanya dalam MB/s. | Eksekusi batch, pencadangan, dan beban kerja streaming |
| Kedalaman antrian | Jumlah permintaan yang belum terselesaikan yang diterbitkan secara bersamaan | Setiap proses yang harus mencerminkan konkurensi nyata. |
Kedalaman antrian perlu mendapat perhatian khusus. Mengirimkan satu permintaan pada satu waktu menghasilkan latensi permintaan tunggal yang akurat tetapi angka IOPS dan throughput yang rendah secara artifisial, itulah sebabnya perangkat dapat terlihat lambat dalam pengujian dan cepat dalam produksi, atau sebaliknya.
Cara Melakukan Pengujian Penyimpanan
Keandalan uji penyimpanan hanya bergantung pada kondisi pelaksanaannya. Urutan langkah-langkah di bawah ini memastikan hasil yang dapat diulang.
- Langkah 1) Tetapkan tujuan. Tentukan apakah pengujian tersebut bertujuan untuk membuktikan kesiapan basis data, menemukan batas throughput, atau membandingkan dua perangkat. Setiap tujuan menyiratkan beban kerja yang berbeda, dan mencampurnya menghasilkan angka yang tidak dapat ditindaklanjuti oleh siapa pun.
- Langkah 2) Tentukan ukuran set data secara realistis. Working set yang cukup kecil untuk muat di dalam cache mengukur ukuran cache, bukan penyimpanan. Sesuaikan dengan volume data produksi, atau setidaknya lampaui ukuran cache dengan selisih yang besar.
- Langkah 3) Pilih kombinasi baca/tulis dan pola. Akses acak dan berurutan berperilaku sangat berbeda pada perangkat yang sama, begitu pula dengan campuran baca-tulis 70/30 dan burst hanya tulis. Ambil campuran tersebut dari pemantauan produksi, bukan dari pengaturan default.
- Langkah 4) Atur kedalaman antrian dan jumlah thread. Parameter-parameter ini mengontrol seberapa banyak konkurensi yang mencapai perangkat, jadi catatlah parameter ini bersama setiap hasil โ angka yang dikutip tanpa parameter ini tidak dapat direproduksi.
- Langkah 5) Bersihkan cache dan lakukan pemanasan. Hapus cache server dan perangkat di antara setiap proses, lalu buang interval pertama sehingga angka kondisi stabil yang dibandingkan, bukan angka saat pertama kali diakses.
- Langkah 6) Berlari cukup lama. Pencatatan data singkat menyembunyikan "write-cliff" yang muncul setelah SSD kehabisan buffer tulis. Pencatatan data berkelanjutan justru memperlihatkannya.
- Langkah 7) Pantau seluruh tumpukan. Catat penggunaan prosesor, memori, dan jaringan bersamaan dengan penghitung penyimpanan, sehingga hambatan di tempat lain tidak disalahartikan sebagai keterbatasan penyimpanan.
- Langkah 8) Ulangi dan bandingkan. Jalankan konfigurasi yang sama lebih dari sekali dan simpan log-nya; perbedaan performa antar build hanya terlihat jika dibandingkan dengan baseline yang tersimpan.
Karena disiplin yang sama berlaku untuk setiap pengukuran yang digerakkan oleh beban, pengujian ini biasanya direncanakan bersamaan dengan pengujian kinerja dan dijadwalkan sebelum kandidat rilis dibekukan.
Alat Pengujian Penyimpanan
Peralatan terbagi menjadi dua kelompok, dan sebagian besar tim membutuhkan keduanya.
- Generator I/O sintetis. Utilitas seperti fioIometer dan sysbench mengeluarkan beban kerja yang dijelaskan secara tepat โ ukuran blok, campuran baca/tulis, kedalaman antrian, dan durasi semuanya dideklarasikan, sehingga proses dapat diulang persis pada perangkat lain.
- Alat pemuatan tingkat aplikasi. Pengemudi seperti JMeter Latih aplikasi itu sendiri, sehingga penyimpanan melihat pola akses yang sama seperti yang dibuat oleh pengguna sebenarnya, termasuk rencana kueri dan perilaku indeks yang tidak dapat direproduksi oleh alat sintetis.
OperaPenghitung sistem ting melengkapi gambaran tersebut. Apa pun alat yang menghasilkan beban, angka penyimpanan harus dibaca bersamaan dengan penghitung prosesor, memori, dan jaringan โ beberapa teknik pengujian penyimpanan, termasuk pengujian benchmark ke pengujian volume, bergantung pada pandangan full-stack tersebut untuk menginterpretasikan hasil dengan benar.
Kesalahan Saat Melakukan Pengujian Penyimpanan
Sebagian besar hasil penyimpanan tidak valid trackembali ke sejumlah kecil kesalahan yang dapat dihindari.
- Memantau kinerja server yang salah, sehingga angka-angka tersebut menggambarkan mesin yang tidak sedang diuji.
- Membandingkan perangkat penyimpanan tanpa membersihkan cache server terlebih dahulu, yang mengukur memori dan bukan disk.
- Lupa memantau pemanfaatan prosesor selama pengujian, yang menyembunyikan hambatan yang terkait dengan prosesor di balik gejala yang berbentuk penyimpanan.
- Menguji kinerja penyimpanan dengan perintah penyalinan file, yang bersifat single-threaded, dibantu cache, dan tidak dapat diulang.

