Apa itu Performance Testing?

Performance testing adalah metode pengujian yang digunakan untuk mengevaluasi kecepatan, respons, dan stabilitas dari sebuah komputer, jaringan, program perangkat lunak, atau perangkat lain ketika berada di bawah beban kerja tertentu. Umumnya, organisasi menjalankan pengujian ini untuk mendeteksi adanya bottleneck performa.

Tujuan utama performance testing adalah untuk menemukan dan menghilangkan bottleneck dalam perangkat lunak atau aplikasi, agar kualitas perangkat lunak tetap terjaga. Tanpa pengujian ini, sistem bisa mengalami penurunan performa seperti waktu respons lambat dan pengalaman pengguna yang tidak konsisten di berbagai sistem operasi (OS).

Hal ini tentu berdampak negatif terhadap user experience (UX). Melalui performance testing, kita bisa tahu apakah sistem sudah memenuhi standar kecepatan, responsivitas, dan stabilitas di bawah berbagai beban kerja, demi UX yang lebih positif. Pengujian performa sebaiknya dilakukan setelah functional testing selesai.

Performance test bisa ditulis langsung oleh developer dan sering jadi bagian dari proses code review. Skenario test case bisa dipindah antar environment — misalnya dari tim dev ke tim operasional untuk pengujian live. Pengujian bisa dilakukan secara kuantitatif baik di lab maupun di lingkungan produksi.

Dalam setiap performance test, parameter-parameter penting seperti kecepatan pemrosesan, data transfer rate, bandwidth jaringan, throughput, efisiensi beban kerja, dan reliabilitas harus diuji dan dievaluasi.

Contohnya, kita bisa mengukur seberapa cepat sebuah program merespons aksi pengguna. Jika lambat, berarti ada potensi bottleneck yang perlu diselidiki lebih lanjut oleh developer.

Mengapa performance testing itu penting?

Performance testing penting banget buat banyak alasan, terutama dalam konteks organisasi atau tim pengembang. Berikut ini beberapa alasan kenapa pengujian performa wajib dipertimbangkan:

  • Diagnostik masalah performa. Pengujian ini bisa bantu tim IT menemukan dan mengatasi bottleneck atau hambatan performa, entah itu dari sisi komputasi, jaringan, atau software. Misalnya, komputer yang super cepat tetap bisa lemot kalau koneksi internet-nya cuma 1 Mbps. Kadang juga karena terlalu banyak aplikasi berjalan bersamaan atau file browser yang rusak.
  • Pengujian software. Bisa dipakai buat mencari tahu lokasi atau penyebab masalah performa yang bersumber dari aplikasi. Selain itu, performance testing juga bantu ngecek kesiapan sistem menjelang event besar yang sudah diprediksi.
  • Menguji klaim vendor. Kadang kita perlu ngecek apakah spesifikasi yang dijanjikan vendor beneran sesuai realita atau cuma gimmick. Pengujian ini bisa bantu bandingin dua perangkat atau aplikasi sekaligus.
  • Memberi laporan ke stakeholder. Stakeholder pengen tahu performa aplikasi dalam hal kecepatan, stabilitas, dan skalabilitas. Nah, laporan hasil performance testing ini bisa bantu kasih insight yang jelas.
  • Menghindari reputasi jelek. Aplikasi yang rilis tanpa uji performa rentan banget bikin pengguna kecewa, dan ujung-ujungnya reputasi produk bisa kena.
  • Perbandingan antar sistem. Performance testing juga berguna buat bandingin performa dua atau lebih aplikasi, baik dari segi kecepatan, stabilitas, maupun responsifnya.

Metode pengukuran dalam performance testing

Beberapa metrik penting atau KPI (Key Performance Indicators) bisa digunakan untuk mengukur performa sistem:

  • Throughput. Jumlah data yang bisa diproses sistem dalam kurun waktu tertentu.
  • Memory. Kapasitas penyimpanan sementara yang bisa digunakan oleh prosesor atau workload.
  • Response time (latency). Waktu yang dibutuhkan sistem buat mulai merespons permintaan dari user.
  • Bandwidth. Volume data yang bisa ditransfer per detik antar sistem, biasanya lewat jaringan.
  • Interrupt CPU per detik. Berapa kali prosesor terganggu (interrupt) tiap detik oleh proses lain.
  • Average latency. Juga dikenal sebagai “wait time”—waktu tunggu buat nerima byte pertama setelah kirim permintaan.
  • Average load time. Rata-rata waktu yang dibutuhkan buat memuat setiap permintaan.
  • Peak response time. Waktu terlama yang dibutuhkan sistem untuk menyelesaikan satu permintaan.
  • Error rate. Persentase permintaan yang gagal dibanding total permintaan.
  • Disk time. Lama waktu yang dibutuhkan disk buat baca/tulis data.
  • Jumlah sesi. Total maksimal sesi aktif yang bisa dijalankan bersamaan.

Metrik-metrik ini bisa jadi dasar buat banyak jenis performance testing sesuai kebutuhan organisasi atau tim dev.

How to conduct performance testing

Karena performance testing bisa dilakukan dengan berbagai metrik, prosesnya bisa sangat beragam tergantung kebutuhan. Tapi secara umum, proses testing performa biasanya terdiri dari langkah-langkah berikut:

  1. Identifikasi environment pengujian. Ini termasuk environment testing dan production, serta tool testing yang dipakai. Mengetahui detail hardware, software, dan konfigurasi jaringan akan bantu mengidentifikasi potensi masalah performa dan menyusun pengujian yang lebih efektif.
  2. Tentukan kriteria performa yang diterima. Harus ada tujuan dan batasan performa yang jelas. Contohnya: waktu respon, throughput, dan pemakaian resource.
  3. Rencanakan skenario testing performa. Buat test case dan skrip yang mencerminkan skenario pemakaian sesungguhnya berdasarkan metrik performa tadi.
  4. Siapkan environment dan desain testing. Atur semua resource dan konfigurasi environment, lalu implementasikan desain testing yang sudah disusun.
  5. Jalankan pengujian. Saat pengujian berjalan, developer juga perlu memonitor metrik-metrik performanya.
  6. Analisis hasil dan lakukan pengujian ulang. Review data hasil pengujian dan diskusikan dengan tim proyek. Setelah tuning atau perbaikan dilakukan, jalankan ulang test-nya untuk melihat dampaknya.

Organisasi sebaiknya menggunakan tool otomatisasi yang sesuai untuk mempercepat proses ini. Selain itu, hindari mengubah environment saat tes berjalan supaya hasilnya tetap valid dan konsisten.

Types of performance testing

Secara umum, ada dua metode utama dalam performance testing: load testing dan stress testing. Tapi selain dua itu, ada juga beberapa tipe pengujian lain yang bisa digunakan developer untuk mengevaluasi performa aplikasi:

  • Load testing bertujuan untuk melihat gimana sistem berperilaku di bawah beban tertentu. Misalnya, mensimulasikan banyak user yang akses website bersamaan untuk mengukur waktu respon dan menemukan bottleneck. Load testing ini bisa jadi bagian dari proses continuous integration, biasanya pakai tools otomatis seperti Jenkins.
  • Stress testing ngetes sistem di luar kapasitas normalnya. Ini berguna untuk tahu batas maksimal performa dan apa yang terjadi saat sistem “dipaksa” kerja ekstra. Stress test punya dua sub-tipe: soak testing dan spike testing.
    • Soak testing (atau endurance testing) adalah tes yang berjalan dalam waktu lama untuk melihat apakah performa tetap stabil. Misalnya, apakah memori bocor atau throughput turun setelah beberapa jam.
    • Spike testing ngetes respon sistem saat tiba-tiba ada lonjakan besar user dalam waktu singkat. Ini cocok untuk ngetes kesiapan server saat promo besar atau event viral tiba-tiba meledak.
  • Scalability testing ngetes sejauh mana software bisa diskalakan. Contohnya, apakah sistem tetap lancar saat jumlah user dinaikkan dua kali lipat.
  • Capacity testing mirip stress testing, tapi fokusnya melihat apakah aplikasi bisa menangani beban yang memang didesain untuk itu, tanpa error atau penurunan performa.
  • Volume testing (atau flood testing) menguji performa aplikasi saat bekerja dengan jumlah data yang sangat besar. Contohnya, ngetes performa saat upload/download file berukuran gigabyte.

Cloud performance testing

Performance testing juga bisa dilakukan di cloud. Malah, testing di cloud punya keunggulan karena bisa dijalankan dalam skala besar tapi tetap hemat biaya, khas platform cloud.

Awalnya, banyak organisasi mikir kalau mindahin proses performance testing ke cloud bakal bikin segalanya lebih simpel dan lebih scalable. Mereka kira, cukup pindah ke cloud dan semua urusan selesai. Tapi, kenyataannya nggak sesimpel itu. Ketika testing dijalankan di cloud, seringkali tim pengembang nggak punya white box knowledge alias pemahaman mendalam tentang cara kerja internal platform cloud tersebut.

Salah satu tantangan terbesar saat migrasi dari lingkungan lokal ke cloud adalah rasa aman yang keliru. Kadang developer dan tim IT berpikir aplikasi bakal tetap berjalan normal begitu sampai di cloud. Alhasil, proses testing dan quality assurance bisa jadi disepelekan demi mempercepat proses rollout.

Karena aplikasi dijalankan di atas infrastruktur vendor lain, hasil testing di cloud belum tentu seakurat testing di lingkungan on-premise. Maka dari itu, tim dev dan ops harus tetap waspada—lakukan pengujian keamanan, load testing, cek skalabilitas, dan pastikan UX tetap terjaga. Jangan lupa juga untuk memetakan server, port, dan jalur komunikasi yang digunakan aplikasi.

Salah satu masalah paling umum saat pindah ke cloud adalah komunikasi antar aplikasi. Lingkungan cloud biasanya punya batasan keamanan lebih ketat dibanding on-premise. Karena itu, penting untuk membuat pemetaan lengkap terkait komunikasi internal aplikasi—mulai dari server, port, sampai path yang digunakan. Monitoring performa juga bisa bantu identifikasi potensi masalah lebih cepat.

Performance testing challenges

Dalam praktiknya, performance testing punya tantangan tersendiri. Berikut beberapa di antaranya:

  • Beberapa tools hanya mendukung web application saja.
  • Tool versi gratis biasanya punya fitur terbatas dibanding yang versi berbayar, dan harga tool premium bisa cukup mahal.
  • Ada tools yang kurang kompatibel dengan sistem atau aplikasi tertentu.
  • Beberapa tools kesulitan untuk menguji aplikasi kompleks atau berskala besar.
  • Organisasi harus mewaspadai bottleneck performa di beberapa titik seperti:
    • CPU (prosesor).
    • RAM (memori).
    • Utilisasi jaringan (network).
    • Pemakaian disk (disk I/O).
    • Batasan dari sistem operasi (OS).
  • Masalah performa lainnya yang umum ditemui:
    • Waktu loading yang lama.
    • Respon aplikasi lambat.
    • Resource hardware tidak cukup.
    • Skalabilitas yang buruk.

Performance testing tools

Tim IT bisa pilih berbagai tools untuk testing performa sesuai kebutuhan. Beberapa contoh tools yang cukup populer antara lain:

  • Akamai CloudTest — Cocok untuk testing performa dan fungsional pada aplikasi web dan mobile. Bisa simulasi jutaan user sekaligus. Fitur-fiturnya meliputi dashboard yang bisa dikustomisasi, stress test di cloud (AWS, Azure), visual playback editor, dan test creation berbasis UI.
  • BlazeMeter — Sekarang dimiliki Perforce Software, tool ini bisa simulasi berbagai skenario dan menjalankan load test serta performance test. Mendukung real-time reporting, integrasi dengan open source tools, serta API.
  • JMeter — Tool dari Apache yang populer untuk load testing aplikasi web. Plugin-nya banyak dan mendukung berbagai fitur seperti graph, thread groups, timer, dan lainnya. JMeter juga bisa dijalankan via CLI untuk sistem berbasis Java.
  • LoadRunner — Dikembangkan oleh Micro Focus, bisa mensimulasikan ribuan pengguna dan menganalisis performa aplikasi saat dibebani. LoadRunner juga bisa merekam interaksi seperti klik atau gerakan mouse dan mendukung simulasi di cloud.
  • LoadStorm — Dikembangkan CustomerCentrix, tool berbasis cloud yang scalable untuk aplikasi web dan mobile dengan traffic besar. Bisa simulasi user secara real-time dan menyediakan report performa lengkap.
  • NeoLoad — Tool dari Neotys ini cocok buat testing performa sebelum rilis. Bisa dipakai untuk aplikasi berbasis DevOps dan continuous delivery. NeoLoad mampu simulasi jutaan user dan mendukung testing via cloud maupun lokal.

Pelajari lebih lanjut soal tiga tujuan utama performance testing dalam pengembangan aplikasi.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *