Showing posts with label concurrent. Show all posts
Showing posts with label concurrent. Show all posts

Sunday, September 17, 2017

JMeter dengan Data Dinamis

Pada saat menggunakan JMeter atau melakukan concurrent test ada kebutuhan untuk mensimulasikan data yang berbeda-beda antara pada HTTP Request. JMeter bisa memfasilitasi kebutuhan ini dengan menggunakan CSV Data Set Config. Sesuai dengan namanya configurasi ini hanya bisa membaca file yang berjenis CSV saja.

Kita akan melanjutkan Test Plan dari postingan sebelum nya (Concurrent Test menggunakan JMeter).

CSV Data Set Config

Tambahkan CSV Data Set pada Sampler HTTP Request



Terdapat field-field yang perlu di setting untuk menggunakan sebuah CSV Data Set, diantaranya adalah:
  • Filename adalah path file csv yang akan digunakan.
  • Delimiter (use '\t' for tab) adalah settingan untuk simbol pemisah kolom data. Untuk csv biasanya kita menggunakan koma ',' sebagai pemisah kolom data.
  • Allow quoted data? Kita set False karena pada file csv kita bagian data tidak di quote. 
  • Recycle on EOF Kita set False agar proses berhenti jika row data pada file csv sudah habis, dan tidak melakukan looping ke bagian data pertama lagi. 
  • Stop thread on EOF Kita set True agar apabila jumlah data pada csv lebih banyak dari pada concurrent user yang kita setting pada Thread Group proses JMeter akan berhenti karena sudah mencapai jumlah concurrent user yang sudah kita setting di Thread Group. 
  • Sharing mode set All Thread jika menginginkan csv bisa di baca oleh Thread Group lain. Set Current Thread Group jika menginginkan csv hanya bisa di baca oleh Sampler lain yang berada pada Thread Group yg sama. Set Current Thread jika menginginkan csv hanya bisa di baca oleh Sampler dimana CSV Data Set Config ini berada saja. Direkomendasikan untuk menggunakan Current Thread Group.
Untuk bisa menggunakan data dari file csv yang sudah dipilih perlu dilakukan perubahan pada Body Data di Sampler HTTP Request. Berikut adalah isi file csv yang digunakan:



Pada file csv terdapat 2 header kolom yaitu username dan password. Cara pemasangan data csv ke dalam Body Data adalah seperti berikut ${username} dan ${password}.


Test

Selanjutnya kita bisa menjalankan tes dengan klik button Start pada bagian toolbar. Hasil nya bisa dilihat pada View Result Tree.



Karena kita setting concurrent user pada Thread Group adalah 5 maka pada View Result Tree hanya muncul 5 HTTP Request meskipun kita menyediakan 10 data pada file csv.
Kita cek bagian Request dari masing-masing HTTP Request dan akan terlihat bahwa masing-masing request menggunakan username yang berbeda-beda.

Skenario testing concurrent menggunakan data dinamis atau file csv ini lebih menggambarkan kondisi nyata karena benar-benar mensimulasikan banyak user yang berbeda id atau username mengakses REST API secara bersamaan.

Concurrent Test menggunakan JMeter

Pada kali ini kita akan membahas cara menggunakan JMeter untuk melakukan simulasi concurrent user mengakses sebuah REST API. Pengenalan JMeter sudah di bahas pada postingan berikut: Menggunakan JMeter untuk test service REST.

Thread Group

Pertama kita tambahkan Thread Group terlebih dahulu. Thread Group ini yang nanti bisa kita setting untuk keperluan concurrent test. Apabila sudah di tambahkan ke dalam Test Plan kita bisa melihat terdapat Thread Properties yang berisi Number of Thread (User) dan Ramp-Up Period (in seconds).


Number of Thread (User) merupakan jumlah user yang akan kita simulasikan. Jadi jika kita mau mensimulasikan 100 user maka field ini di isi 100. Pada skenario kali ini akan kita simulasikan 5 user concurrent.

Ramp-Up Period (in seconds) merupakan scope atau range waktu untuk concurent user memulai eksekusi thread group. Jadi misal kita memiliki 5 concurent user dan mengisi Ramp-up dengan 1, maka artinya adalah waktu 1 second akan di bagi 5, jadi setiap concurrent user akan memiliki jeda 0.2 second.
user 1 start pada detik 0
user 2 start pada detik 0.2
user 3 start pada detik 0.4
dan seterusnya...


Bila menginginkan simulasi concurrent user berjalan secara serentak pada detik 0, maka tinggal isi bagian Ramp-Up dengan 0. Ramp-Up 0 second ini akan berefek menambah beban pada PC/Laptop yang merunning JMeter karena akan menggenerate banyak HTTP Request pada waktu yg sama.

Sampler HTTP Request

Selanjutnya kita masukan sebuah Sampler HTTP Request pada Thread Group yg ada.


Pada Sampler HTTP Request ada beberapa yang perlu dilengkapi isinya, diantaranya adalah Server Name or IP, Port Number, Implementation, Protocol, Method, Path, dan Body Data. Request Body untuk API Login kali ini adalah username dan password seperti berikut:


HTTP Header Manager

Jangan lupa tambahkan HTTP Header Manager pada Sampler HTTP Request agar kita bisa menambahkan properties pada header HTTP request. 


Pada skenario kali ini yang di perlukan hanya Content-Type application/json saja.


Listener

Bagian akhir adalah menambahkan Listener View Result pada Thread Group agar kita bisa melihat hasil proses. Listener yang paling biasanya dipakai adalah View Result Tree.


Kita bisa menjalankan concurrent test dengan klik button Start pada bagian toolbar. Hasil nya bisa dilihat pada View Result Tree.


Terdapat 5 buah HTTP Request, kita bisa melihat detail Request dan Response dari masing-masing HTTP Response. Simbol pada HTTP Request berwarna hijau merupakan tanda jika respon yang di dapat adalah bukan HTTP Response error. Apabila response yang di terima adalah 401, 503, dll maka simbol pada HTTP Request akan berwarna merah.

Dengan di lakukan nya Concurrent Test ini kita bisa mengetahui apakah sistem/aplikasi yang kita develop bisa menghandle jumlah concurrent user seberapa banyak dalam satu detik.