Performance Test Menggunakan JMeter
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
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
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 nilainya09.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 .
Selamat mencoba
Comments