Muhammad
113100010
Lembar Persetujuan
Muhammad
NIM : 113100010
Calon Pembimbing 1
Dana S. Kusumo, Ph.D,
02780291-1
Muhammad
NIM : 113100010
Calon Pembimbing 1
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.
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:
Cp=( C+ 3 ) C (2)
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:
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
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
[2] Y. Pu and M. Xu, "Load Testing for Web Applications," The 1st International
Conference on Information Science and Engineering, pp. 2954-2957, 2009.
[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.
[8] IEEE, IEEE Std 610.12-1990 IEEE Standard Glossary of Software, IEEE
Software Engineering Standards Collection, 1990.
[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].