Anda di halaman 1dari 24

Implementasi dan Analisis Performance

testing pada Aplikasi Toko Online


Menggunakan Cloud Based Testing Tools

Proposal Tugas Akhir

Kelompok Keahlian : Software Engineering, Information


System and Data Engineering (SIDE)

Muhammad
113100010

Program Studi Sarjana Teknik Informatika


Departemen Informatika
Fakultas Teknik
Universitas Telkom
Bandung
2013

Lembar Persetujuan

Implementasi dan Analisis Performance


testing pada Aplikasi Toko Online
Menggunakan Cloud Based Testing Tools

Performance testing Implementation and Analysis on Online


Store Application with Cloud Based Testing Tools

Muhammad
NIM : 113100010

Proposal ini diajukan sebagai usulan pembuatan Tugas Akhir


pada Program Studi Sarjana Teknik Informatika Departemen
Informatika
Fakultas Teknik
Universitas Telkom

Bandung, 8 Oktober 2013


Menyetujui

Calon Pembimbing 1
Dana S. Kusumo, Ph.D,
02780291-1

Bayu Munajat, ST.,


10870713-3
Calon Pembimbing 2
Lembar Persetujuan

Implementasi dan Analisis Performance testing


pada Aplikasi Toko Online Menggunakan Cloud
Based Testing Tools

Performance testing Implementation and Analysis on Online Store


Application with Cloud Based Testing Tools

Muhammad
NIM : 113100010

Proposal ini diajukan sebagai usulan pembuatan Tugas Akhir pada


Program Studi Sarjana Teknik Informatika Departemen Informatika
Fakultas Teknik
Universitas Telkom

Bandung, 8 Oktober 2013


Menyetujui

Calon Pembimbing 1

Dana S. Kusumo, Ph.D,


02780291-1
Abstraksi
Penggunaan aplikasi web terutama toko online saat ini sudah
menjadi hal umum. Pada setiap aplikasi web, performansi adalah hal yang
sangat penting. Kemampuan aplikasi web dalam menangani dan
memproses request dari user menjadi hal yang berpengaruh terhadap
reliability dari aplikasi web tersebut. Terlebih pada toko online di mana
transaksi jual beli pasti menggunakan data dan informasi sensitif yang
menuntut reliability yang tinggi.
Performance testing merupakan salah satu cara pengujian untuk
mengukur tingkat performansi suatu aplikasi. Pengujian ini berguna untuk
mengetahui kesalahan-kesalahan yang berkaitan dengan performansi
pada suatu aplikasi dan membantu developer untuk memperbaiki dan
meningkatkan performansi aplikasi tersebut sampai kepada tingkat
performansi yang diharapkan.
Kata kunci: performance testing, load testing, stress testing, soak
testing, performance metric, key scenario.
PENDAHULUAN
1.1. Latar belakang masalah
Saat ini, penggunaan toko online sudah menjadi hal umum. Selain
situs-situs yang mengkhususkan menyediakan toko online untuk orang-
orang yang ingin menjual barang, perusahaan-perusahaan menengah ke
atas juga sudah mulai memiliki toko online masing-masing yang menjual
produk-produk mereka sendiri.
Pada transaksi yang berkaitan dengan jual beli, tentunya situs-situs
toko online ini perlu memastikan bahwa sistem yang mereka miliki
memiliki performansi yang bagus untuk menangani banyaknya user yang
mengakses situs tersebut. Penggunaan resource hardware yang sesuai
dengan demand diperlukan untuk mendapatkan hasil yang memuaskan.
Overestimating sebuah sistem bisa berakibat resource yang terbuang sia-
sia sementara underestimating sistem bisa berakibat kekurangan
resource yang berakibat pada sistem crash, overload, dan lain
sebagainya. Penurunan performansi seperti melambatnya response time
karena bertambahnya jumlah user aktif sampai ke server down atau
sistem crash bisa berakibat fatal pada transaksi jual beli dikarenakan
informasi yang sangat sensitif.
Berdasarkan permasalahan di atas, penulis ingin
mengimplementasikan satu set metodologi pengujian untuk menguji
performansi dari web application, terutama toko online. Secara
keseluruhan, uji performansi terdiri dari baseline testing, load testing,
stress testing, soak testing, dan volume testing [1]. Namun penulis
membatasi hanya melakukan load testing, stress testing dan soak testing.
Hal ini berdasarkan studi literatur, penulis menemukan bahwa dua
pengujian yang paling sering dibahas dan dilakukan adalah load testing
dan stress testing, sementara soak test (endurance test) merupakan
pengujian yang menggabungkan load testing dengan pengkondisian
stress testing. Baseline testing menurut Meier et al. (2007)1 merupakan
proses pembentukan baseline yang pasti dilakukan pada setiap
performance testing dan volume test hanya diterangkan oleh Du Plessis
(2008)2.
Penggunaan load testing bertujuan untuk mengetahui performansi
toko online dalam keadaan normal maupun pada kondisi load tertentu.
Kondisi load ini dipengaruhi oleh jumlah user aktif maupun jumlah thread
yang bekerja secara bersamaan. Stress testing berguna untuk mengukur
kemampuan maksimal web application bekerja, dengan cara dibebani
hingga batas maksimum web / sebelum aplikasi crash. Pengukuran ini
berguna untuk mengetahui perubahan kondisi setiap kali beban
bertambah dan mengetahui error-error yang terjadi selama penambahan
beban ke server. Sementara soak testing atau endurance testing
1 Performance testing Guidance for Web Applications, hal. 21

2 White Paper Performance test Methodology, hal. 11


digunakan untuk menguji ketahanan aplikasi web untuk bekerja dalam
periode waktu yang panjang. Pengujian ini digunakan untuk mengetahui
error-error yang berkaitan dengan ketahanan sistem seperti memory leak
dan connection time-out. Untuk ketiga pengujian di atas, faktor terbesar
yang mempengaruhi adalah concurency baik user maupun thread. Kedua
hal tersebut juga yang menjadi input pada performance testing.
Permasalahan yang muncul pada saat melakukan performance
testing adalah pembuatan virtual user. Load testing yang dilakukan secara
lokal membutuhkan sangat banyak resource yang tentu memakan waktu
dan biaya yang besar. Berdasarkan hal tersebut, mulai bermunculan
performance testing tools yang ditanamkan di cloud. Tools ini yang
nantinya akan penulis gunakan untuk melakukan performance test untuk
aplikasi web, terutama toko online.
1.2. Perumusan masalah
Berdasarkan latar belakang di atas, maka didapatkan permasalahan
utama sebagai berikut:
1. Bagaimana merancang test plan, test case dan test scenario
untuk ketiga jenis pengujian tersebut (load testing, stress testing,
soak testing)?
2. Bagaimana mengukur performansi aplikasi toko online
berdasarkan hasil pengujian?
3. Bagaimana mengukur objektifitas atau memvalidasi hasil dari
pengujian yang dilakukan?
4. Apakah hasil pengujian ini bisa mewakili performansi aplikasi
tersebut di dunia nyata?
5. Bagaimana memberikan solusi terhadap permasalahan yang
ditemukan dari analisis hasil pengujian dan memvalidasi solusi
tersebut?
Adapun batas permasalahan untuk tugas akhir ini adalah sebagai
berikut:
1. Aplikasi yang diuji hanyalah aplikasi toko online.
2. Behavior yang diuji pada load testing adalah response time,
throughput, dan resource utilization.
3. Menggunakan cloud-based testing tools saja dalam eksekusi
pengujian.
1.3. Tujuan
Dari permasalahan di atas, didapatkan bahwa tujuan yang ingin
dicapai dari tugas akhir ini adalah:
1. Melakukan pengujian dan analisis terhadap performansi aplikasi
toko online
2. Mendapatkan behavior aplikasi dalam keadaan-keadaan tertentu
yang mungkin muncul.
3. Memberikan dan mengimplementasikan solusi dari
permasalahan yang didapatkan melalui analisis hasil pengujian
1.4. Metodologi penyelesaian masalah
Metodologi yang digunakan untuk menyelesaikan permasalahan
pada tugas akhir ini adalah sebagai berikut :

1. Studi literatur
Pada tahapan ini, kegiatan yang dilakukan adalah mengumpulkan
materi dan referensi yang berkaitan dengan performance testing dan
melakukan pendalaman terhadap materi performance testing. Hal lain
yang dilakukan adalah mengumpulkan dan mempelajari dokumentasi dari
sistem informasi i-Gracias.
2. Pengumpulan data (project assessment)
Pada tahapan ini dilakukan pengumpulan informasi dari software
requirement dan arsitektur sistem. Termasuk di dalamnya adalah
penentuan test environment, tools, testing requirement, permasalahan
waktu, dan hal-hal yang harus dimonitor dari project tersebut.
3. Tahap Pengujian
Tahapan ini terdiri dari perencanaan pengujian (planning),
pembuatan test case dan test scenario berdasarkan test plan, penulisan
script pengujian (scripting) berdasarkan test case dan test scenario,
eksekusi pengujian pada clous based tools, dan analisis hasil pengujian.
Pada tahapan pengujian ini, eksekusi pengujian diulang beberapa kali
agar hasil pengujian yang didapat tidak bias dan bisa diukur validitasnya.
4. Penentuan solusi dan implementasi
Setelah hasil pengujian selesai dianalisa dan error-error serta hasil
pengukuran performansi aplikasi diketahui, tentunya akan terlihat apa
saja yang harus diperbaiki atau ditambah untuk menangani masalah
performansi yang muncul. Dari sanalah penulis akan mencoba memberi
solusi yang langsung diimplementasikan ke aplikasi yang bersangkutan.
5. Validasi solusi dan hasil pengujian
Setelah keseluruhan solusi selesai diimplementasikan, perlu
diadakan pengujian hasil solusi tersebut untuk menyatakan bahwa solusi
yang diberikan dan permasalahan yang muncul dalam pengujian sebelum
implementasi solusi adalah valid. Pengujian dilakukan dengan
perencanaan yang sama dengan test sebelumnya.
6. Pembuatan laporan
Merupakan tahap terakhir dalam tugas akhir ini. Pada tahap ini
dilakukan penyusunan laporan berdasarkan hasil yang didapat dan hasil
analisis dalam buku laporan tugas akhir.

1.5. Jadwal kegiatan

Bulan I II III IV V VI

Minggu 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

Pengump
ulan
Data

Pengujia
n

Impleme
ntasi
solusi

Pengujia
n solusi

Pembuat
an
Laporan
TINJAUAN PUSTAKA
2.1. Toko online
Atau online shopping merupakan bagian dari e-commerce berupa
aplikasi web yang memungkinkan konsumen untuk membeli barang
langsung melalui internet. Penggunaan toko online mengharuskan user
untuk terkoneksi ke internet dan memiliki metode pembayaran yang valid.
Beberapa metode pembayaran yang valid adalah paypai dan kartu kredit,
namun beberapa toko online terutama yang masih bersifat lokal masih
menggunakan metode pembayaran transfer uang antar rekening bank
atau pembayaran saat menerima barang (Cash on Delivery).
Dalam pelaksanaan bisnisnya, toko online terbagi menjadi Bussiness
to Customer (B2C) dan Bussiness to Bussiness (B2B). Contoh dari toko
online B2C adalah Amazon dan Ebay. Sementara contoh dari toko online
B2B adalah Alibaba.
Pada toko online, informasi yang dikirimkan dari user pada saat
pembayaran merupakan informasi private yang sensitif, seperti alamat,
nomor rekening, nomor telepon. Untuk memastikan informasi-informasi ini
aman, security merupakan isu toko online yang paling diperhatikan. Tidak
ada user yang ingin tertipu oleh scammer, karenanya saat ini banyak
sekali sertifikasi untuk menyatakan bahwa suatu toko online terjamin
keamanan dalam melakukan transaksi di dalamnya. Hal lain yang perlu
diperhatikan adalah performansi aplikasi dari toko online tersebut.
Bottleneck yang terjadi ketika banyak user melakukan transaksi akan
membuat transaksi terhambat.
2.2. Software Testing
IEEE Std 610.12 (IEEE, 1990) mendefinisikan software testing
sebagai:

(1) The process of operating a system or component under


specified conditions, observing or recording the results, and
making an evaluation of some aspect of the system or
component. (2) The process of analyzing a software item to
detect the differences between existing and required
conditions (that is, bugs) and to evaluate the features of the
software item.
Dari definisi tersebut didapatkan bahwa software testing adalah
suatu proses menjalankan software dalam keadaan tertentu, kemudian
membandingkan hasil yang didapat dengan hasil yang diinginkan untuk
mengetahui apakah ada kekurangan dan kesalahan yang perlu diperbaiki
dari software tersebut. Menurut Galin (2009, Chapter 9), dari definisi
kedua dapat disimpulkan bahwa software testing tidak harus dilakukan
dengan menjalankan software tersebut.
Secara umum, tujuan dan target dari software testing adalah untuk
mendapatkan sebanyak mungkin error yang ada pada software yang diuji
untuk dikoreksi agar mencapai tingkat di mana kualitasnya layak.
Software testing terdiri dari banyak jenis test yang keseluruhannya secara
umum memiliki tujuan yang sama namun dengan objektif yang berbeda-
beda. Sebagai contoh, unit testing memiliki tujuan untuk menguji software
pada poin yang paling rendah yaitu setiap unit dari suatu software.
Functional test memiliki objektif untuk menguji setiap fungsionalitas yang
ada pada suatu software, sementara performance test memiliki objektif
menguji performansi / kinerja dari suatu software.
Secara konsep, software testing terbagi menjadi dua, Black box
testing dan Clear box (White box) testing.
- Black box testing atau bisa juga disebut functionality testing
mengidentifikasi bug dari output yang didapat. Jika output yang
didapatkan benar, maka black box testing tidak memperhatikan
apakah terjadi kesalahan pada internal software tersebut (code,
arsitektur, dsb).
- Clear box (White box) testing atau bisa juga disebut structural
testing merupakan kebalikan dari black box testing. Ia
mendeteksi bug dengan cara memeriksa internal software
tersebut (code review, dll).
Baik black box testing maupung white box testing bisa dilakukan
menggunakan tools. Penggunaan tools dalam software testing disebut
juga automated testing karena pada saat pengujian, tester tidak
menjalankan software yang akan diuji namun menjalankan tools yang
secara otomatis akan melakukan pengujian terhadap software target uji
menggunakan script yang dibuat berdasarkan test case dan test scenario.
2.3. Performance testing Criteria
2.3.1. Response Time
Merupakan rentang waktu dari saat user mengirimkan request ke
server hingga server selesai merespon request tersebut. Pada aplikasi
web, response time didefinisikan sebagai jumlah network time (N1, N2,
N3, N4) dan jumlah application time (A1, A2, A3, A4)[3]. Keterangan lebih
lanjut ada pada gambar berikut:

Gambar 1: response time pada aplikasi web [2]

2.3.2. Concurrency User


Concurency adalah jumlah user ataupun thread yang mengakses
resource dalam waktu bersamaan. Concurency user di sini adalah jumlah
keseluruhan user yang mengakses aplikasi dalam waktu bersamaan. User
yang dihitung adalah user aktif, meskipun user non aktif tetap mengambil
jumlah resource namun jumlahnya relatif sedikit dibandingkan dengan
user aktif.
Pu dan Xu (2009) menyatakan bahwa rata-rata concurency user bisa
dirumuskan sebagai berikut :
( n L )
C= (1)
T

Cp=( C+ 3 ) C (2)

Di mana C adalah rata-rata concurency user, n adalah jumlah login


session, L adalah rata-rata login session, dan T adalah waktu yang
diperiksa (waktu pengujian). Pada formula (2), jika C berdistribusi Poison,
maka Cp adalah jumlah maksimum concurency user.
2.3.3. Throughput
Adalah jumlah request yang ditangani dalam satu detik. Pada
software testing, throughput merupakan batasan jumlah request yang
mampu ditangani aplikasi tiap satuan waktu. Jika request yang masuk
melebihi throughput suatu aplikasi, maka hal ini akan menyebabkan
queue. Pada web engineering hal ini lah yang menyebabkan terjadinya
bottleneck. Hasil analisis throughput pada performance testing disebut
dengan Transaction Per Second (TPS) [3].
Throughput ketika tidak terjadi bottleneck dapat didefinisikan
sebagai
( Nvu R )
F= (3)
T

Di mana F adalah throughput, Nvu adalah jumlah virtual user, dan T


adalah performance testing time [2].
2.3.4. Resource Utilization
Sesuai dengan nama, resource utilization adalah ukuran tingkat
penggunaan dari tiap-tiap resource hardware pada sistem. Ada banyak
metrik yang bisa diukur untuk menentukan, namun setidaknya ada 4
hardware yang pasti diukur:
2.3.4.1. CPU
Pengukuran penggunaan CPU bisa digunakan untuk menentukan
seberapa efektif pengujian yang kita lakukan. Penggunaan CPU yang
terlalu tinggi, bahkan mencapai 100% menjadikan CPU tidak dapat
mengeksekusi proses-proses tambahan. Pada best practice, diusahakan
agar kerja CPU tidak melebihi 80% untuk tiap prosesor. Pengukuran CPU
juga dapat dengan mudah menunjukkan server mana yang berpotensi
mengalami bottleneck.
2.3.4.2. Memory
Pengukuran ini digunakan untuk menemukan memory leak.
Memory leak dapat ditemukan dengan memonitor memory (byte yang
tersedia), Process (private bytes), ataupun proses (working sets) [4].
Ketika terjadi memory leak, proses baik private bytes maupun working
sets mengalami peningkatan, sementara byte memory yang tersedia
mengalami penurunan.
2.3.4.3. Disk
Permasalahan yang mungkin muncul pada disk bukan hanya
space. Sebagai kriteria performansi, hal yang mempengaruhi dari disk
adalah waktu akses / time. Beberapa unit pengukuran untuk membantu
pengukuran penggunaan disk ini adalah sebagai berikut:
- Average disk queue length
- Average disk read queue length
- Average disk write queue length
- Average disk sec/read
- Average disk sec/transfer
- Disk read/sec
- Disk write/sec
Untuk menemukan disk bottleneck, digunakan rumus berikut:

IOs per disk=


[ Read+ ( 4 Writes ) ]
Number of Disk (4)

2.3.4.4. Network
Untuk aplikasi web, resource ini merupakan resource terpenting
yang harus diperhatikan. Hal-hal yang harus diperhatikan adalah
- Network latency waktu yang dibutuhkan untuk mengirimkan
data melalui koneksi jaringan.
- Network round trip client server request dan response yang
dibuat oleh aplikasi tersebut.
- Data transfer jumlah informasi yang dipindahkan dari web
server ke browser dan sebaliknya.
2.4. Software Performance testing
Adalah jenis pengujian untuk mengukur kinerja dari suatu software.
Performance test terdiri dari beberapa test yang masing-masing memiliki
tujuan dan metode pengujian yang berbeda-beda.
2.4.1. Baseline Testing
Baseline testing adalah aktivitas membuat baseline untuk
performance test dengan cara menjalankan satu set pengujian untuk
mendapatkan data performance metrik. Data ini digunakan untuk
mengevaluasi efektivitas dari perubahan yang akan dilakukan pada
sistem yang bertujuan menambah performansi sistem.
Pada aplikasi web, baseline digunakan untuk menentukan apakah
performansi suatu sistem mengalami kenaikan atau penurunan, dan untuk
menemukan deviasi di antara versi sistem [5]. Kelebihan dari baseline
testing ini adalah pengukuran dilakukan hanya dengan satu proses atau
transaksi spesifik. Yang dari sana bisa didapatkan standar pengujian untuk
keseluruhan performance testing.
2.4.2. Load testing
Load testing adalah pengujian sistem pada satu load condition. Load
condition ini bisa merupakan jumlah user yang mengakses aplikasi secara
bersamaan maupun jumlah proses yang dilakukan secara online. Qiang
et.al (2013) menyatakan bahwa load testing merupakan pengujian suatu
aplikasi dalam satu load condition dengan cara mengirimkan request dan
mengukur respon dari aplikasi tersebut. hal ini digunakan untuk
mengidentifikasi maksimum kapasitas yang bisa ditangani oleh aplikasi
dan juga potensi terjadinya bottleneck dan penyebab penurunan
performansi.
Macam-macam input dari load testing adalah sebagai berikut:
- Performance-critical usage scenario
- Workload models
- Performance acceptance criteria
- Performance metric
- Feedback dari desainer atau developer aplikasi.
- Feedback dari end user
- Feedback dari operasional aplikasi web tersebut.
Sementara output dari load testing yang bisa didapatkan adalah
- Update untuk test plan dan test design untuk keseluruhan
performance testing
- Macam-macam hasil pengukuran performansi seperti
throughput, response time, dan resource utilization.
- Potensi terjadinya bottleneck.
- Behavior aplikasi pada bermacam-macam load condition
2.4.3. Stress testing
Stress testing adalah pengujian yang menempatkan sistem pada
kondisi ekstrim. Pengujian ini mengukur availability dan reliability sistem
pada kondisi tersebut. Kondisi ekstrim di sini bisa berupa sangat
banyaknya jumlah user yang mengakses dan mengirimkan request ke
sistem, beban sistem (data yang diproses) sangat banyak, ataupun
kurangnya jumlah resource untuk menangani proses. Inti dari stress
testing ini adalah untuk memaksa sistem hingga ke breaking point untuk
menemukan bug yang membuat breaking point tersebut berbahaya.
Stress testing berguna untuk menemukan kesalahan yang berkaitan
dengan masalah prioritas, sinkronisasi, dan resource loss.
Input dari stress testing ini adalah sebagai berikut:
- Hasil dari stress test sebelumnya
- Karakteristik / skenario penggunaan aplikasi.
- Peak load capacity yang didapat dari load testing
- Arsitektur hardware dan network dan data
Output dari stress testing yang mungkin adalah
- Hasil pengukuran aplikasi dalam stress condition (kondisi
ekstrim)
- Hal-hal yang terjadi dalam stress condition.
- Informasi yang dapat digunakan untuk mengukur availability dan
reliability.
2.4.4. Soak testing
Merupakan versi extend dari load testing, soak testing adalah load
testing yang dilakukan dalam periode waktu yang relatif panjang. Hal ini
dilakukan untuk mengamati perubahan behavior sistem dalam kondisi
tersebut. Sebagai contoh pada saat sistem diuji dengan load testing
dalam waktu satu jam, behavior sistem masih normal sesuai dengan yang
diperkirakan, namun dalam waktu tiga jam, behavior sistem bisa berubah.
Permasalahan seperti memory leak, connection time-out ataupun
database growth bisa terjadi.
Untuk soak test, semakin lama waktu yang digunakan semakin
banyak problem yang terlihat. Gunakan waktu selama mungkin, atau
hentikan ketika sudah terlihat trend spesifik dari object test yang diamati
[1].
2.5. Cloud Testing
Cloud testing adalah software testing yang menggunakan
infrastruktur cloud. Cloud testing dikembangkan berdasarkan
permasalahan yang muncul ketika mengadakan testing seperti budget
dan waktu yang terbatas, keterbatasan hardware resource, banyaknya
jumlah test case, dan lain sebagainya. Dengan cloud, biaya pengujian bisa
berkurang dengan berkurangnya jumlah hardware, masalah distribusi
geografis teratasi, dan kebutuhan virtual user dengan variasi requirement
dan behavior bisa dengan mudah ditangani.
Jenis-jenis testing yang menggunakan cloud testing adalah sebagai
berikut:
- Stress testing
- Load testing
- Performance testing
- Compability testing
- Functional testing
- Browser performance testing
- Latency testing
2.6. Testing tools
Saat ini, tester seringkali menggunakan software khusus (bukan
software yang diuji) untuk mengontrol dan mengeksekusi pengujian.
Software-software ini membantu tester untuk melakukan monitoring
terhadap hasil testing yang dilakukan. Pada dasarnya performance test
untuk aplikasi web harus dilakukan menggunakan tools. Hal ini
dikarenakan kebutuhan virtual user yang digunakan pada load testing dan
stress testing. Performance testing tools yang terkenal di antaranya:
a. HP LoadRunner
b. LoadStorm
c. LoadUI
d. Apache Jmeter
e. Loadster
f. Rational Performance tester
g. Visual Studio Team Foundation Server
h. Cloudtest
Dari contoh di atas, yang sudah ditanamkan pada infrastruktur
cloud adalah HP LoadRunner, LoadStorm, Cloudtest, Visual Studio Team
Foundation Server. Tools lain yang sudah merupakan cloud-based tools
adalah blitz spirent.
PERANCANGAN SISTEM
3.1. Metodologi Riset
Penulis menggunakan metode testing yang digunakan sebagaimana
dipaparkan oleh Du Plessis (2008) terdiri dari 7 step sebagai metodologi
riset. Dari step tersebut kemudian ditambahkan step implementasi solusi
yang didapat dari analisis hasil pengujian. Gambaran dari keseluruhan
metodologi riset ada pada gambar berikut:

Gambar 2 : Blok umum metodologi performance testing

Dari blok umum di atas, blok planning phase, execution phase dan
implement solution phase bisa dipecah menjadi bagian-bagian yang lebih
kecil. Planning phase terdiri dari planning dan scripting, execution phase
terdiri dari eksekusi pengujian dan analisa hasil, dan implement solution
phase terdiri dari pembuatan solusi berdasarkan kesalahan yang
ditemukan pada analisa hasil pengujian dan implementasi solusi tersebut
pada aplikasi yang diuji. Setelah melalui fase implement solution,
dilakukan pengujian ulang dari fase planning hingga eksekusi untuk
memvalidasi apakah solusi yang diberikan sudah bisa menangani
permasalahan yang muncul selama uji performansi sebelum solusi
tersebut diimplementasikan. Keseluruhan detail aktifitas pada metodologi
ini ada pada gambar 3.
Gambar 3: Flowchart metodologi pengujian

3.1.1. Project Assessment


Merupakan tahap pencarian informasi yang mendetail mengenai
software yang akan diuji. Informasi yang dicari mulai dari requirement
software, requirement untuk testing, apa yang ingin dicapai dari testing,
test environment, dan lain sebagainya. Detail dari poin-poin requirement
yang didapatkan dari project assessment ada pada tabel berikut:
Tabel 1: Detail key project Assessment3

Project Assessment
Bussiness problem yang harus - Jumlah penggunaan
diselesaikan sistem
- Response time yang
layak
- Proses bisnis yang akan
diuji
- Baseline
Arsitektur - System components
(hardware & software).
Test Environtment - Kelayakan
- Hardware
- Software
Tools yang akan digunakan - Compability
- Tools requirement
Monitoring - Objek yang harus
dimonitor
- Apa saja yang bisa
dimonitor?
- Monitoring requirement
Available time - Available time vs
required time
- Expectation
management
Testing requirements - Akses ke sistem
- Hardware requirement
- Software requirement
- Data requirement

3.1.2. Planning
Setelah seluruh informasi dan requirement terkumpul pada tahap
sebelumnya, informasi tersebut digunakan untuk membuat performance
test plan. Pada tahap ini dilakukan identifikasi scenario yang akan
digunakan, termasuk perencanaan load condition yang terdiri dari jumlah
virtual user yang akan digunakan, aktivitas / transaksi yang akan
dilakukan oleh virtual user dan persebarannya, waktu pengujian, target
metrik yang ingin dikumpulkan sebagai hasil pengujian, dan kriteria
kelayakan (performance accepted criteria). Dari test plan yang dihasilkan
dibuat test case dan test scenario untuk diimplementasikan pada tools
yang menjadi dasar automated testing. Penentuan input dari tiap-tiap
jenis testing dan target output juga merupakan bagian dari planning.

3 Diambil dengan perubahan dari white paper Performance test Methodology [1]
3.1.3. Scripting
Pada tahap ini dilakukan persiapan test environment, tools, dan
resource yang dibutuhkan untuk mengeksekusi test. Pada tahap ini juga
dilakukan penulisan script dari test case ke tools yang digunakan.
Penulisan script ini merupakan permulaan dari eksekusi test dan untuk
setiap perubahan yang terjadi pada sistem, dilakukan penulisan dan
running individual script untuk memonitor perubahan secara langsung.
Script ini nantinya yang akan digunakan pada tools untuk melakukan
automated testing.
3.1.4. Execute Testing
Jalankan dan monitor test yang sudah direncanakan menggunakan
tools dengan script yang sudah dibuat pada tahapan-tahapan
sebelumnya. Pada tahap ini juga dilakukan validasi pengujian, data
pengujian dan kumpulan hasil pengujian. Untuk tiga jenis performance
test, masing-masing memiliki perbedaan pada cara pengujian dan desain,
lebih lanjut akan diterangkan pada subbab 3.2.
3.1.5. Result Analysis
Tahap ini merupakan penentuan apakah sebuah skenario test
dengan satu konfigurasi akan diulang atau tidak. Test akan diulang ketika
masih ada hasil yang di luar batas kelayakan dan belum semua informasi
didapatkan. Jika kedua faktor tadi sudah dipenuhi, maka pengujian bisa
dikatakan selesai dan pengujian bisa dilanjutkan ke jenis pengujian
selanjutnya. Pengujian dikatakan selesai seluruhnya ketika ketiga jenis
pengujian sudah selesai dilakukan.
3.1.6. Create and implement solution
Berdasarkan hasil analisis pengujian, ditentukan kesalahan-
kesalahan yang muncul selama pengujian. Kemudian dibuatlah solusi
untuk menangani masalah-masalah tersebut. Pada saat pembuatan solusi,
dilakukan kerjasama dengan pihak developer untuk
mengimplementasikan solusi yang sudah dibuat ke sistem tersebut
langsung ke aplikasi yang diuji.
3.1.7. Test the solution
Setelah mengimplementasikan solusi, perlu dilakukan pengujian
terhadap sistem yang telah mengalami perubahan. Skenario pengujian
yang dilakukan sama seperti pengujian yang pertama dilakukan. Hal ini
dilakukan untuk memvalidasi bahwa solusi yang sudah diimplementasikan
berhasil mengurangi atau menghilangkan kesalahan-kesalahan yang
muncul selama fase pengujian sebelumnya.
3.2. Testing Approach
Ada perbedaan pada langkah-langkah yang dilakukan pada load
testing dan stress testing dalam planning phase dan execute phase.
Stress testing memerlukan iterasi berkali- pada bagian-bagian yang ada
pada execute phase sementara load test melakukan pengulangan untuk
satu load condition berdasarkan analisa hasil.
3.2.1. Load testing
3.2.1.1. Planning phase
Langkah-langkah yang dilakukan pada planning phase meliputi:
a. Identifikasi kriteria kelayakan
Kriteria kelayakan ini ditentukan untuk test object sebagaimana
dijelaskan pada bab 2, yaitu Response time, Throughput, Resource
Utilization, dan Concurency User (Maximum user load). Hal lain yang bisa
dijadikan object test adalah metrik yang terkait dengan bisnis proses
seperti berapa jumlah order yang bisa ditangani dalam waktu tertentu.
b. Identifikasi key scenario
Scenario adalah urutan-urutan aksi yang mungkin dilakukan oleh
user untuk melakukan suatu aktivitas / transaksi tertentu. Key scenario
adalah scenario khusus yang memiliki target performansi tertentu,
scenario yang umum terjadi, scenario yang memiliki efek tertentu pada
performansi dan scenario yang memiliki resiko tinggi atas terjadinya error.
Untuk mendapatkan key scenario, dilakukan langkah-langkah
berikut :
1) Identifikasi seluruh skenario yang mungkin muncul
2) Identifikasi seluruh aktivitas yang terlibat dalam skenario
tersebut.
3) Dari seluruh skenario tersebut, identifikasi skenario yang paling
sering dieksekusi atau yang paling memberi pengaruh terhadap
resource.
c. Pembuatan workload model
Key scenario yang didapat pada langkah sebelumnya digunakan
untuk membuat workload model. Workload adalah distribusi load pada
seluruh skenario yang teridentifikasi.
d. Menentukan load condition berdasarkan target load level
Pertama, tentukan target load level untuk setiap distribusi
workload yang teridentifikasi. Penentuan ini dilakukan untuk memastikan
bahwa pengujian yang dilakukan dapat digunakan untuk memprediksi
atau membandingkan hasil dari bermacam-macam load condition. Setelah
itu, ditentukan load condition yang akan digunakan untuk menguji sistem.
e. Identifikasi metrik
Identifikasikan metrik berdasarkan target dari pengujian. Adapun
metrik bisa termasuk salah satu dari kelompok metrik berikut:
- Network-specific metric
- System-related metric
- Platform specific metric
- Application-specific metric
- Service-level metric
- Bussiness metric
3.2.1.2. Execute phase
Hal yang dilakukan pada execute phase untuk load testing adalah
eksekusi pengujian dan analisa hasil yang didapat untuk menentukan
apakah perlu dilakukan pengujian ulang dengan load condition yang sama
ataukah dilanjutkan ke skenario berikutnya.
3.2.2. Stress testing
3.2.2.1. Planning phase
a. Identify objectives
Tentukan outcome yang diingingkan dari stress testing. Beberapa
hal yang diinginkan ketika mengadakan stress testing adalah untuk
melihat behavior sistem ketika mengalami kondisi ekstrim. Dari behavior
yang diamati, dapat disimpulkan apakah secara fungsionalitas sistem
mengalami perubahan, dan jika ada perubahan yang mengarah kepada
catastrophic failure, pihak developer bisa membangun pertahanan dari
kesalahan tersebut.
b. Identify key scenario
Pada stress testing, identifikasi key scenario dilakukan dengan cara
menentukan dan memilih skenario yang paling penting bagi aplikasi
tersebut. Untuk toko online, skenario paling penting adalah skenario
pembelian.
c. Identify workload
Dilakukan dengan cara mengidentifikasi pendistribusian work
(proses) yang terjadi. Cara lain adalah dengan mengidentifikasi peak user
load / maksimum user yang mampu ditangani oleh sistem. Hal ini bsia
didapatkan dari hasil load testing.
3.2.2.2. Execute phase
Pada fase ini, seluruh aktivitas yang terjadi dilakukan secara
berulang-ulang. Aktivitas-aktivitas tersebut adalah
a. Identify metric
Proses mengidentifikasi metrik-metrik yang dibutuhkan
berdasarkan permasalahan yang mungkin muncul pada tahap identify
objective. Metrik ini akan bertindak sebagai indikator dari objektif dari
pengujian yang dilakukan.
b. Create test case
Hasil dari tahapan-tahapan di atas digunakan untuk membuat test
case, yang dibuat berdasarkan objektif pengujian, karakteristik workload,
test data, test environment, dan metrik yang berhasil diidentifikasi. Setiap
test case hendaknya memiliki hasil yang diharapkan untuk mengukur
apakah test case bisa dikatakan pass, fail atau inconclusive setelah
eksekusi pengujian.
c. Simulate load
Sebelum melakukan pengujian formal, harus dipastikan bahwa test
environment terkonfigurasi sesuai dengan rancangan pengujian yang ada
dan mampu menghasilkan hasil pengujian yang diharapkan.
d. Analyze result
Dilakukan perbandingan antara hasil yang didapatkan dari
pengujian dengan batas kelayakan pada metric. Jika hasil yang didapatkan
belum mencapai performance level yang diharapkan, lakukan pencarian
terhadap penyebab masalah tersebut dan gunakan problem yang
ditemukan untuk membuat solusi agar performance level yang diharapkan
dapat tercapai.
DAFTAR PUSTAKA

[1] J. Du Plessis, "Performance Testing Methodology," Micro to Mainframe,


Parktown, 2008.

[2] Y. Pu and M. Xu, "Load Testing for Web Applications," The 1st International
Conference on Information Science and Engineering, pp. 2954-2957, 2009.

[3] J. Colantonio, joecolantonio, 5 July 2011. [Online]. Available:


http://www.joecolantonio.com/performance-testing-what-is-throughput/.
[Diakses 7 November 2013].

[4] J. Colantonio, joecolantonio, 5 October 2011. [Online]. Available:


http://www.joecolantonio.com/performance-test-basics-%E2%80%93-what-
is-resource-utilization/. [Diakses 7 October 2013].

[5] J. Meier, C. Farre, P. Bansode, S. Barber dan D. Rea, Performance Testing


Guidance for Web Applications, Microsoft Corporation, 2007.

[6] G. Qiang, W. Wang, G. Wu, X. Li, J. Wei dan H. Zhong, Migrating Load
Testing to the Cloud: A Case Study, IEEE Seventh International Smposium
on Service-Oriented System Engineering, pp. 429-434, 2013.

[7] D. Galin, Chapter 9 : Software Testing - Strategies, dalam Software Quality


Assurance From theory to implementation, Harlow, Pearson Education
Limited, 2009, p. 180.

[8] IEEE, IEEE Std 610.12-1990 IEEE Standard Glossary of Software, IEEE
Software Engineering Standards Collection, 1990.

[9] V. Shinde, Top 15 Performance Testing Tools Comprehensive List of In-


Demand Tools with Download Link, [Online]. Available:
http://www.softwaretestinghelp.com/performance-testing-tools-load-testing-
tools/. [Diakses 5 October 2013].

[10] D. Galin, Chapter 10: Software testing - Implementation, dalam Software


Quality Assurance from Theory to Implementation, Harlow, Pearson
Education, 2009, pp. 216-251.

[11] Agile Support Team, AgileLoad "your load testing solution", 12 Juni 2013.
[Online]. Available:
http://www.agileload.com/agileload/blog/2013/06/12/performance-test-
workload-modeling. [Diakses 7 Oktober 2013].

[12] Software Performance Testing, 15 February 2002. [Online]. Available:


http://en.wikipedia.org/wiki/Software_performance_testing. [Diakses 3
October 2013].

Anda mungkin juga menyukai