Performance Test Menggunakan JMeter

Posted by Kamarudin • 4 minute read • Comments

Aktivitas saya di kantor akhir-akhir ini, lebih sering ngoding untuk backend/web service. Nah untuk membuat service ini, saya biasanya menggunakan teknologi WCF, hanya saja untuk kekinian :grin: saya juga menggunakan ASP.NET Web Api.

Untuk tahapan testing wajib yang saya lakukan adalah minimal unit test. Unit test yang dilakukan biasanya di level DAL (Data Access Layer) dan Controller.

Unit testing ini merupakan bagian dari white box testing karena testing ini dieksekusi langsung oleh programmer. Sedangkan untuk black box testing bisa dilakukan menggunakan aplikasi sejenis Fiddler atau menggunakan add-ons yang dimiliki oleh browser-browser seperti Mozilla Firefox dan Google Chrome.

Karena service ini nantinya akan digunakan oleh banyak client dan user, tentu akan ngeri-ngeri sedap :grin: jika testingnya masih dilakukan secara manual. Jadi sebaiknya kita menggunakan Performance Test Tool untuk proses ini.

Ada banyak Performance Test Tool yang tersedia baik yang gratis maupun yang berbayar. Untuk postingan kali ini saya menggunakan JMeter.

Apa itu JMeter ?

The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions

Berikut langkah-langkah menggunakan JMeter :

1. Download JMeter kemudian ekstrak, misal di drive C:\

2. Untuk menjalankan JMeter, klik ganda file jmeter.bat yang ada di folder bin

Tunggu beberapa saat sampai tampil, aplikasi JMeter

Kemudian ganti informasi Name, sesuai kebutuhan. Misal Performance Test Web Service Presensi.

3. Menambahkan User Defined Variables

Di node ini kita akan menambahkan informasi global yang sering digunakan pada saat testing seperti informasi host dan port.

Untuk menambahkan node User Defined Variables klik kanan node Test Plan (Performance Test Web Service Presensi) -> Add -> Config Element -> User Defined Variables.

Kemudian lakukan pengaturan User Defined Variables seperti gambar berikut :

Pada gambar di atas kita menambahkan dua variabel yaitu host dan port. Nah variabel-variabel ini nantinya akan digunakan pada langkah-langkah berikutnya.

4. Menambahkan HTTP Header Manager

Setelah menambahkan node User Defined Variables, kita lanjutkan dengan menambahkan node HTTP Header Manager. Langkah-langkahnya sama seperti menambahkan node ` User Defined Variables, hanya saja yang dipilih adalah HTTP Header Manager`.

Di node ini kita akan menambahkan informasi apa saja yang dikirimkan JMeter ke HTTP request header.

5. Menambahkan HTTP Request Defaults

Langkah berikutnya adalah menambahkan node HTTP Request Defaults, caranya juga sama seperti sebelumnya hanya saja yang dipilih node HTTP Request Defaults.

Di node ini kita cukup mengeset informasi nama server/ip address, port dan protocol.

Karena sebelumnya kita sudah mendefinisikan nama host dan port di node User Defined Variables, di node ini kita tinggal panggil variabel tersebut dengan format : ${NAMA_VARIABEL}.

6. Menambahkan Thread Group

Node ini digunakan untuk mengelompokan service yang akan di tes. Misal kita mempunyai service Mahasiswa dan Dosen, kedua service ini sebaiknya dibuatkan Thread Group masing-masing.

Untuk menambahkan node Thread Group klik kanan node Test Plan (Performance Test Web Service Presensi) -> Add -> Threads (Users) -> Thread Group.

Kemudian atur settingnya seperti berikut :

Dari setting di atas, kita akan membuat skenario performance test seperti berikut :

  • Jumlah user sebanyak 50 orang
  • Setiap 2 detik (100/50), akan mengirimkan 6 request ke server.
  • Total jumlah sample = 300 (50 x 6)

Skenario performance test ini bisa diganti-ganti nilainya sesuai kebutuhan.

7. Menambahkan HTTP Request

Setelah menentukan skenario performance test, langkah berikutnya adalah menambahkan node HTTP Request. Di node inilah kita akan menentukan web service yang akan di tes. Misal web service mahasiswa mempunyai dua layanan yaitu GetByID dan GetByName. Nah dua layanan ini akan kita tambahkan sebagi bagian dari HTTP Request.

Untuk menambahkan node HTTP Request klik kanan node Thread Group (Web Service Mahasiswa) -> Add -> Sampler -> HTTP Request.

Kemudian atur settingnya seperti berikut :

Dari gambar di atas, informasi web servicenya sebagai berikut :

  • Nama service : GetById
  • Path/Url : /Api/Mahasiswa/GetById
  • Service ini mempunyai satu parameter yaitu id, yang kita set nilainya 09.01.2488
  • Informasi server name/ip dan port number tidak perlu di set, karena sudah kita set nilainya di node HTTP Request Defaults

Ulangi langkah sebelumnya untuk menambahkan service yang lain.

8. Menambahkan report untuk menampilkan hasil Performance test

Ada beberapa format laporan yang digunakan untuk menampilkan hasil performance test yaitu :

  • View Results in Table
  • View Results Tree
  • Response Times Over Time
  • Transactions per Second
  • Statistical Aggregate Report
  • Summary Report

Untuk menambahkan semua format laporan di atas klik kanan node Thread Group (Web Service Mahasiswa) -> Add -> Listener -> Pilih jenis laporan.

9. Menjalankan Performance test

Untuk menjalankan performance test, kita tinggal mengklik toolbar Start

Performance test ini di jalankan menggunakan Environment Test sebagai berikut :

Server Web Service :
  • Sistem Operasi : Windows Server 2008 64 Bit
  • Web Server : IIS 7
  • Teknologi/framwork REST Service : ASP.NET Web API 2
  • Processor : Intel Xeon X5570 2.93 Ghz
  • RAM : 12 GB
Server Database :
  • Sistem Operasi : Windows Server 2012 64 Bit
  • Database : SQL Server 2014
  • Processor : Intel Xeon E5-2620 v2 2.10 Ghz
  • RAM : 24 Gb
10. Contoh Hasil Performance Test

Sebagai penutup saya belum menemukan referensi yang tepat bagaimana cara menganalisa hasil dari performance test di atas, tetapi biasanya yang saya jadikan acuan adalah hasil yang bisa dilihat melalui node View Results in Table kolom Status, dari node ini kelihatan apakah ada request service yang berstatus Warning. Jika ada mungkin ini bisa menjadi bahan acuan apakah service kita masih perlu di-improve lagi atau skenario performance test yang perlu diganti atau karena faktor lainnya seperti kondisi jaringan yang lagi enggak fit pada saat melakukan tes :grin:.

Selamat mencoba :blush:

Comments