proposal tugas akhir implementasi dan analisis software performance testing pada toko online...

Upload: muhammad-enka

Post on 17-Oct-2015

486 views

Category:

Documents


6 download

DESCRIPTION

proposal tugas akhir S1 Teknik Informatika Fakultas Teknik Informatika Universitas Telkom. nama: Muhammadnim: 1103100010

TRANSCRIPT

Implementasi dan Analisis Performance testing pada Aplikasi Toko Online Menggunakan Cloud Based Testing Tools

Proposal Tugas AkhirKelompok Keahlian : Software Engineering, Information System and Data Engineering (SIDE)

Muhammad 113100010

Program Studi Sarjana Teknik InformatikaDepartemen InformatikaFakultas Teknik Universitas TelkomBandung2013

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

MuhammadNIM : 113100010

Proposal ini diajukan sebagai usulan pembuatan Tugas Akhir pada Program Studi Sarjana Teknik Informatika Departemen InformatikaFakultas Teknik Universitas Telkom

Bandung, 8 Oktober 2013Menyetujui

Calon Pembimbing 1

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

Calon Pembimbing 2

Bayu Munajat, ST.,10870713-3

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

MuhammadNIM : 113100010

Proposal ini diajukan sebagai usulan pembuatan Tugas Akhir pada Program Studi Sarjana Teknik Informatika Departemen InformatikaFakultas Teknik Universitas Telkom

Bandung, 8 Oktober 2013Menyetujui

Calon Pembimbing 1

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

AbstraksiPenggunaan 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.

PENDAHULUAN1.1. Latar belakang masalahSaat 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)[footnoteRef:1] merupakan proses pembentukan baseline yang pasti dilakukan pada setiap performance testing dan volume test hanya diterangkan oleh Du Plessis (2008)[footnoteRef:2]. [1: Performance testing Guidance for Web Applications, hal. 21] [2: White Paper Performance test Methodology, hal. 11]

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 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 masalahBerdasarkan 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. TujuanDari 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 pengujian1.4. Metodologi penyelesaian masalahMetodologi yang digunakan untuk menyelesaikan permasalahan pada tugas akhir ini adalah sebagai berikut :

1. Studi literaturPada 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 PengujianTahapan 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 implementasiSetelah 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 pengujianSetelah 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 laporanMerupakan 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 kegiatanBulanIIIIIIIVVVI

Minggu123412341234123412341234

Pengumpulan Data

Pengujian

Implementasi solusi

Pengujian solusi

Pembuatan Laporan

TINJAUAN PUSTAKA2.1. Toko onlineAtau 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 TestingIEEE 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 Criteria2.3.1. Response TimeMerupakan 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 UserConcurency 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 : (1)(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. ThroughputAdalah 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 (3)Di mana F adalah throughput, Nvu adalah jumlah virtual user, dan T adalah performance testing time [2].2.3.4. Resource UtilizationSesuai 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/secUntuk menemukan disk bottleneck, digunakan rumus berikut:(4)

2.3.4.4. NetworkUntuk 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 testingAdalah 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 TestingBaseline 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 testingLoad 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 condition2.4.3. Stress testingStress 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 dataOutput 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 testingMerupakan 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 TestingCloud 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 testing2.6. Testing toolsSaat 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 LoadRunnerb. LoadStormc. LoadUId. Apache Jmetere. Loadsterf. Rational Performance testerg. Visual Studio Team Foundation Serverh. CloudtestDari 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 SISTEM3.1. Metodologi RisetPenulis 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 testingDari 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 pengujian3.1.1. Project AssessmentMerupakan 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 Assessment[footnoteRef:3] [3: Diambil dengan perubahan dari white paper Performance test Methodology [1]]

Project Assessment

Bussiness problem yang harus diselesaikan Jumlah penggunaan 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. PlanningSetelah 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.1.3. ScriptingPada 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 TestingJalankan 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 AnalysisTahap 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 solutionBerdasarkan 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 solutionSetelah 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 ApproachAda 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 testing3.2.1.1. Planning phaseLangkah-langkah yang dilakukan pada planning phase meliputi:a. Identifikasi kriteria kelayakanKriteria 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 scenarioScenario 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 modelKey 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 levelPertama, 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 metrikIdentifikasikan 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 metric3.2.1.2. Execute phaseHal 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 testing3.2.2.1. Planning phasea. Identify objectivesTentukan 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 scenarioPada 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 workloadDilakukan 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 phasePada fase ini, seluruh aktivitas yang terjadi dilakukan secara berulang-ulang. Aktivitas-aktivitas tersebut adalaha. Identify metricProses 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 caseHasil 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 loadSebelum melakukan pengujian formal, harus dipastikan bahwa test environment terkonfigurasi sesuai dengan rancangan pengujian yang ada dan mampu menghasilkan hasil pengujian yang diharapkan.d. Analyze resultDilakukan 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].