BAB 2 LANDASAN TEORI Pada bab ini dijelaskan mengenai teori-teori yang digunakan sebagai landasan teori dalam pembahasan di bab berikutnya. Teori-teori tersebut terdiri dari teori umum dan teori khusus.
2.1
Teori-teori Umum Pada sub bab ini dibahas mengenai beberapa teori umum yang digunakan dalam
melakukan penelitian untuk mendukung konsep testing.
2.1.1
Software Development Life Cycle Software Development Life Cycle adalah suatu proses atau flow dalam pengembangan
software. SDLC mendeskripsikan secara detail bagaimana pengembangan software mulai dari tahap awal yaitu pengumpulan informasi sampai tahap akhir yang disebut sebagai proses maintenance. Proses SDLC ini bertujuan untuk meningkatkan kualitas dari software itu sendiri [11]. Ada beberapa tahapan dalam SDLC yang dapat digambarkan seperti berikut ini. Requirement
Design
Building
Testing
Maintenance
Gambar 1 Tahapan SDLC Penjelasan dari tahapan SDLC yaitu [1]: 1. Requirement, yaitu tahap pengumpulan informasi sebanyak yang dibutuhkan mengenai detil dan spesifikasi software yang dibutuhkan oleh client.
4
5 2. Design, yaitu tahap perencanaan dan pemilihan bahasa pemrograman yang akan digunakan seperti java, php, .net dan yang lainnya. Dalam tahap ini juga dipilih database yang akan digunakan seperti oracle, mysql, sql server atau yang lainnya sesuai dengan kebutuhan projek. Untuk mempermudah biasanya design disajikan dalam bentuk UML. 3. Building, yaitu tahap pembangunan software dengan membuat code atau program. 4. Testing, yaitu tahap verifikasi dan validasi terhadap program yang telah dibuat dalam tahapan sebelumnya. Verifikasi dan validasinya dilakukan sesuai dengan spesifikasi yang telah disepakati diawal bersama client. 5. Maintenance, yaitu tahap pemeliharan dan support terhadap penggunaan aplikasi setelah proses implementasi.
2.1.1.1 Metode Waterfall Dalam proses SDLC ada beberapa model yang biasa digunakan. Salah satunya adalah model waterfall. Model waterfall sering juga disebut sebagai linear sequential model, model ini sangat sederhana sehingga mudah dimengerti dan digunakan. Dalam model waterfall ini setiap fase nya harus selesai terlebih dahulu supaya kita bisa melanjutkan ke fase berikutnya. Model waterfall dapat digambarkan seperti berikut ini:
Requirement Analisis
System Design
Implementation
Testing
Deployment
Maintenance
Gambar 2 Metode Waterfall Penjelasan mengenai metode waterfall yaitu: 1. Requirement Analysis
6 Tahap ini adalah tahap pengumpulan informasi mengenai kebutuhan software yang akan dikembangkan. Mulai dari kebutuhan user sampai batasan software. Biasanya tahap ini dilakukan dengan wawancara, survey atau diskusi. Hasilnya akan dianalisi dan disimpan dalam bentuk dokumen untuk acuan ketika tahap implementation. 2. System Design Tahap ini bertujuan untuk memberikan gambaran tentang apa yang harus dikerjakan dan bagaimana tampilan software yang akan dikembangkan. Pada tahap ini juga di spesifikasikan kebutuhan hardware dan sistem serta arsitektur sistem secara keseluruhanBiasanya tahap ini dilakukan sebelum koding 3. Implementation Pada tahap ini dilakukan koding atau pembuatan kode program. Biasanya proses koding ini dibagi berdasarkan modul yang ada dibutuhkan. Kemudian modul-modul itu akan digabungkan sehingga terbentuklah suatu software. 4. Testing Di tahap ini dilakukan pengujian untuk mengetahui apakah software sudah bekerja sesuai fungsinya dan sesuai dengan kebutuhan user. 5. Deployment Tahap deployment adalah tahap instalasi software yang telah selesai dibangun di pihak user. Sehingga software tersebut bisa digunakan sesuai dengan kebutuhan. 6. Maintenance Tahap terakhir dalam waterfall adalah tahap pemeliharaan. Dalam tahap ini dilakukan perbaikan-perbaikan terhadap software yang telah diinstall Metode waterfall ini merupakan metode yang digunakan dalam pengujian menggunakan manual testing dan automated testing. Proses testing dilakukan pada tahap keempat dalam waterfall yaitu setelah proses code oleh programmer telah selesai. Jika dalam metode waterfall, tepatnya pada tahap requirement analysis terjadi kesalahan maka design yang dihasilkan juga akan salah, program yang dibuat juga salah sehingga dihasilkan produk yang salah juga. Maka harus melakukan tahap waterfall kembali dari awal.
7
Requirement
Mistake in Requirement
Design
Design to meet Requirement
Bulid
Bulid to meet Design
Testing
Maintenance
Wrong Product
Start New Project with new Requirement
Gambar 3 Metode Waterfall jika terjadi kesalahan di tahap requirement Sedangkan jika kesalahan terjadi pada saat tahap design maka, sistem analis atau business analis harus melakukan proses re-design untuk memperbaiki semua defect yang ditemukan. Requirement
Requirement
Design
Design to meet Requirement
Bulid
Bulid to meet Design
Testing
Maintenance
Wrong Product
Re-design to correct defects
Gambar 4 Metode Waterfall jika terjadi kesalahan di tahap design
2.1.2
Software Testing Life Cycle Software Testing Life Cycle adalah serangkaian aktivitas yang dilakukan sebagai salah
satu langkah sertifikasi dalam pengembangan software. Langkah-langkah STLC adalah seperti gambar dibawah ini [18].
8
Gambar 5 Langkah-langkah STLC Penjelasan Software Testing Life Cycle dijelaskan secara ringkas dengan penjabaran dibawah ini: 1. Requirement Analysis Dalam fase ini team tester atau Quality Assurance (QA) mempelajari semua requirement dari aplikasi yang akan ditest. Team tester sebaiknya berinteraksi dengan client yang bersangkutan seperti business analyst, technical lead, system architecture dan orang-orang lainnya yang berhubungan dengan pengembangan software atau aplikasi tersebut supaya QA yang akan melakukan proses testing benar-benar mengerti detail dari aplikasi tersebut. 2. Test Planning Pada fase ini senior qa manager akan menentukan estimasi effort dan biaya yang dibutuhkan untuk projek yang akan dikerjakan. Dalam tahap ini juga harus dilakukan finalisasi dari test plan, mempersiapkan tools yang dibutuhkan untuk proses testing dan training. 3. Test Case Development Pada fase ini hal penting yang harus dipersiapkan adalah test case dan test script. Test case dan test script itu harus di review dan dipastikan siap untuk dieksekusi. 4. Environment Setup Pada fase ini dilakukan setup untuk semua software dan hardware yang dibutuhkan untuk proses testing. 5. Test Execution Pada fase ini tester akan menjalankan semua test case yang telah dipersiapkan. Jika pada tahap ini ditemukan bugs atau error tester harus melaporkannya kepada developer untuk diperbaiki sehingga bisa dilakukan proses retest. 6. Test Cycle Closure
9 Pada tahap akhir ini team yang melakukan testing akan melakukan pertemuan dan diskusi untuk menganalisa strategi yang harus dilakukan saat proses implementasi nantinya, belajar dari pengalaman yang diperoleh selama proses testing dan menemukan ide untuk perbaikan aplikasi kedepannya. Untuk lebih jelas nya berikut ini digambarkan life cycle dari STLC:
Gambar 6 Life cycle STLC Sama seperti SDLC, STLC juga memiliki hirarki yaitu: 1. Test Planning – Mempersiapkan strategi dan perencanaan 2. Test Development – Mempersiapkan testing environment 3. Test Excecution – Mempersiapkan test cases dan mengeksekusi test case tersebut. 4. Result Analysis – Menganalisa hasil dan laporan bug 5. Bug Tracking – Menganalisa bugs yang ditemukan dan error dari aplikasi. 6. Reporting – Mengumpulkan data dari end user.
2.1.3
Software Testing Software testing adalah proses yang dilakukan untuk mengidentifikasi kebenaran,
kelengkapan, dan kualitas dari suatu perangkat lunak atau software. Software testing termasuk proses mencari dan menemukan error dari suatu software yang sedang dikembangkan sebelum software tersebut di-implementasikan ke end users [1]. Software testing juga diartikan sebagai suatu seni yang mengevaluasi suatu produk, program atau
10 sistem sebelum memutuskan apakah produk, program atau sistem tersebut sudah sesuai dengan permintaan atau belum [4]. Testing mungkin bukan metode yang paling efektif untuk meningkatkan kualitas, namun dengan melakukan testing sebelum pengimplementasian software sangat memberikan kontribusi yang besar untuk peningkatan kualitas software. Ada tiga teknik testing yang sering digunakan, yaitu [4]:
2.1.3.1 White Box Testing White box testing adalah salah satu metode pengujian dengan menggunakan kode program yang bertujuan untuk menganalisis apakah software yang dikembangkan masih error atau tidak. Jika dalam proses testing ditemukan error atau modul yang tidak sesuai dengan proses bisnis maka setiap baris dari kode programnya akan diperiksa dan diperbaiki. Setelah itu akan dilakukan compile ulang dan di test kembali [9]. Kelebihan white box testing ini adalah memiliki sifat correctness program kebenaran dalam mendefinisikan algoritma sehingga dapat diketahui secara langsung bagian-bagian yang kurang dalam pengembangan software. White box testing juga dapat menentukan kualitas dari suatu koding karena dilakukan secara langsung menggunakan kode programnya. Tetapi ada juga kekurangan dari white box testing ini sendiri. Yaitu orang yang melakukannya harus benar-benar mengerti programming, ketika muncul error maka proses testing berhenti karena tidak dapat lanjut ke tahap selanjutnya sebelum error diperbaiki [9].
2.1.3.2 Black Box Testing Black box testing adalah pengujian perangkat lunak yang terfokus pada spesifikasi fungsional dari perangkat lunak. pengujian ini bertujuan untuk mengetahui apakah semua fungsi perangkat lunak telah berjalan semestinya sesuai dengan kebutuhan fungsional yang telah didefinisikan. Jika menggunakan metode black box testing seorang tester tidak akan berhubungan secara langsung dengan control flow, data flow, dan code program. Tester hanya memperhatikan kesesuaian antara output dari input yang diberikan. Input disini berupa test case yang telah dipersiapkan sebelum proses pengujian berdasarkan spesifikasi dari software yang dikembangkan[10].
2.1.3.3 Grey Box Testing Grey Box Testing adalah metode pengujian yang merupakan kombinasi dari white box testing dan black box testing. Grey box testing mengacu pada teknik pengujian sistem dengan pengetahuan yang terbatas (limited knowledge) dari internal sistem. Grey box testing memiliki akses ke dokumen desain rinci dengan informasi di luar dokumen persyaratan.
11 Grey box testing yang dihasilkan berdasarkan informasi tersebut sebagai state-based models atau architecture diagrams of the target system. Dalam pengujian suatu software ada beberapa tahapan yang harus dilalui yaitu: 1. Unit Testing Unit testing merupakan proses testing yang dilakukan pada unit basic kode program. Testing dilakukan dengan memeriksa kode program pada even, procedur dan function. Unit testing bertujuan untuk memastikan masing-masing unit berjalan sesuai dengan fungsinya. Seorang tester atau programmer dapat memeriksa kode program secara terpisah dari bagian lain. Pengujian dapat langsung dilakukan setiap kali kode program selesai dikerjakan. Testing dapat dilakukan dengan menjalankan program baris per baris. Dalam tahap ini juga biasanya dilakukan component testing, yaitu testing terhadap fungsi-fungsi yang lebih kompleks. 2. Integration Testing Integration testing adalah tahapan testing yang dilakukan setelah unit testing. Pada tahap ini tester harus memeriksa apakah semua unit test sudah diintegrasikan dan sudah bekerja sebagai suatu kombinasi. Setiap fungsi yang telah diintegrasikan harus dipastikan sudah berjalan sesuai dengan fungsi nya. Dan yang terpenting tidak mengganggu fungsi yang lainnya. 3. System Testing Pada tahap testing ini, aplikasi harusnya sudah bisa berfungsi sesuai dengan aplikasi yang nantinya akan digunakan oleh end user. Karena itu data yang digunakan untuk testing harusnya sudah menggunakan data yang menggambarkan keadaan yang sebenarnya. Dalam tahap ini juga harus dipastikan semua konfigurasi yang berhubungan dengan komputer sudah berjalan dengan baik dan benar. 4. Acceptance Testing Tahap acceptance testing biasanya dilakukan oleh end user. Jadi di tahap ini user yang akan menggunakan aplikasi akan melakukan testing secara langsung untuk memastikan software dibangun sesuai dengan permintaan di awal. Tahap ini merupakan simulasi dari penggunaan nyata dari software yang dikembangkan. Tahap ini juga merupaka salah satu tahap final sebelum user menyetujui penggunaan software tersebut. 5. Regression Testing
12 Tahap ini merupakan bagian penting setelah semua tahap lain dilakukan. Regression test ini mencakup pengujian ulang terhadap unit, komponen, proses atau keseluruhan aplikasi setelah perbaikan kesalahan-kesalahan yang ditemukan selama proses testing. Regression testing bertujuan untuk memastikan semua masalah atau error yang ditemukan sudah diperbaiki dan tidak menimbulkan efek buruk terhadap fungsi yang lain. Selain itu tahap ini juga bertujuan untuk memantau output yang dihasilkan. 6. Stress Testing Stress testing ini biasanya dilakukan oleh pihak pengembang atau developer. Tujuan dari stress test ini adalah untuk melihat apakah software yang dibagun tersebut mampu menangani kebutuhan sumberdaya yang tidak normal. Bagaimana jika nantinya software akan menggunakan data yang sangat besar apakah akan berpengaruh terhadap performansi dan fungsionalitas dari software itu sendiri. Pada saat ini harus dipastikan apakah software tetap berjalan dengan baik jika dihadapkan dengan beban berat. Sampai mana kapasitas dari software tersebut. Biasanya stress test ini dijalankan dengan tools atau software lain. 7. Penetration Testing Penetration Testing adalah pengujian yang bertujuan untuk menguji kerentanan (vulnerability) dalam menentukan risk level, impact dan mitigation. Biasanya tahap penetration test ini dilakukan dengan menggunakan 3 konsep dasar testing yaitu Black box testing, white box testing dan Grey box testing yang mengikuti standard internasional dalam pengolahan resiko teknologi dan informasi. Dengan adanya penetration test diharapkan dapat menemukan kelemahan sari setiap komponen sistem seperti perangkat jaringan, router, server, aplikasi dan konten lainnya. Biasanya testing ini dilakukan oleh perusahaan yang telah menyediakan layanan untuk penetration testing.
2.1.4
Manual Testing Manual testing adalah testing yang membutuhkan resource atau sumber daya manusia.
Manual testing dilakukan oleh manusia yang duduk di depan komputer untuk mengekseskusi step by step dari setiap test scenario yang telah disediakan untuk pengujian suatu software. Bisa dikatakan manual testing adalah proses testing yang masih sangat primitif. Manual testing membutuhkan usaha yang sangat besar dalam proses nya dan juga membutuhkan banyak sumber daya. Karena itu proses nya cenderung lama dan butuh biaya yang tidak sedikit [1].
13 Tujuan dari manual testing ini adalah untuk memastikan suatu aplikasi atau software benar benar bebas dari error dan bisa bekerja dengan baik sesuai dengan spesifikasi fungsi yang disepakati di awal. Biasanya scenario test untuk proses manual testing ini dibuat terlebih dahulu sebelum proses testing dimulai untuk digunakan sebagai acuan ketika proses testingnya berlangsung. Dan biasanya scenario testnya sudah mencakup hampir semua bisnis proses dari software tersebut [1]. Dalam proses manual testing harus dilakukan juga dokumentasi dari semua defect yang ditemukan dalam proses testing yang dilakukan. Mulai dari defect tersebut ditemukan sampai pada akhirnya defect tersebut di perbaiki oleh pihak developer dan dilakukan kembali proses retest oleh tester. Jadi proses manual testing ini mencakup pengecekan kualitas dari suatu software sampai software tersebut benar-benar minim dari error dan siap digunakan oleh user [1].
2.1.5
Automated Testing Automated testing adalah testing yang dilakukan dengan bantuan tools. Dengan
demikian automated testing mengurangi sumber daya dan juga biaya karena testing dilakukan secara otomatisasi. Tujuan dari automated testing ini adalah untuk mengurangi test case yang harus dieksekusi secara manual, tapi bukan berarti automasi testing ini juga menghilangkan proses manual testing. Proses manual testing memang pasti selalu dibutuhkan tetapi dengan adanya automated testing proses testing bisa dilakukan lebih cepat [1]. Apa beberapa kelebihan automasi testing dan kelebihan itulah yang menyebabkan banyak orang memilih untuk menggunakannya. Seperti prosesnya lebih cepat, bisa dijalankan 24 jam tanpa bantuan manusia, bisa dilakukan tanpa mengganggu proses testing yang lain dan bisa merekam atau menyimpan proses testing yang kita lakukan sebelumnya sehingga mempermudah proses regresi test [1]. Ada langkah-langkah yang harus diikuti untuk melakukan proses automated testing seperti: pemilihan tools untuk proses testing, menentukan scope untuk proses automasi, merencanakan proses automasi, eksekusi test scenario dan proses maintenance dari automasi testing itu sendiri [1].
2.1.6
Selenium Selenium adalah salah satu tools yang tidak berbayar yang dapat digunakan untuk
automated testing aplikasi berbasis web. Selenium bisa diinstal di browser Mozilla firefox dan bisa digunakan untuk testing program yang dikembangkan menggunakan berbagai bahasa pemrograman seperti java, csharp, pyton, ruby, php, perl dan javascript.
14 Selenium itu sendiri terbagi menjadi dua bagian besar, yaitu selenium version 1.0 atau yang lebih sering dikenal sebagai Selenium RC dan Selenium version 2.0 atau disebut juga Selenium Web Driver. Selenium RC yaitu selenium yang dikembangkan sendiri oleh tim Seleniumnya sendiri. Salah satu Selenium version 1.0 yang paling familiar dan banyak digunakan adalah Selenium IDE. Selenium IDE ini adalah plugin yang dapat diinstal di browser Mozilla firefox yang langsung dapat digunakan untuk proses testing. Beberapa tahun terakhir ini tim selenium juga mulai mengembangkan plugin yang sama untuk browser IE. Sedangkan untuk Selenium version 2.0 sudah dikembangkan oleh orang ketiga atau perusahaan diluar tim selenium. Tim dari pihak ketika ini berusaha mengembangkan penggunaan selenium lebih baik lagi. Mereka mengembangkan web driver untuk bisa menggunakan selenium di browser lain seperti chrome, opera, dan bahkan sampai penggunaan untuk mobile.
2.1.6.1 Arsitektur Selenium Arsitektur selenium bisa digambarkan seperti berikut ini:
Client Language
Selenium Transalator
Selenium Runtime
Web Driver / Selenium RC
Browser
Gambar 7 Arsitektur Selenium Penjelasan gambar diatas sebagai berikut: 1. Client Languages: bahasa pemrograman yang digunakan untuk membangun aplikasi. 2. Selenium Translator: Memparsing perintah perintah dalam bahasa pemrograman ke dalam bahasa internal selenium. 3. Selenium Runtime: Bahasa internal selenium diproses oleh selenium runtime, kemudian diterjemahkan ke dalam bahasa browser. 4. Web Drivers: Untuk menerjemahkan ke dalam bahasa browser, selenium runtime butuh web driver.
5. Browser: Browser yang digunakan untuk menjalankan aplikasi. 2.1.6.2 Cara Menginstall Selenium Dalam pembuatan skripsi ini, Selenium yang akan digunakan adalah Selenium IDE, karena itu akan dibahas lebih lanjut mengenai selenium IDE termasuk cara untuk instalasinya. Berikut ini langkah-langkah menginstall selenium IDE dan FireBug:
15 1. Install selenium dari url: http://www.seleniumhq.org/download/ 2. Untuk keamanan di firefox akan muncul pop up, klik allow.
Gambar 8 Langkah pertama dalam instalasi selenium
3. Pilih versi terbaru dan klik tombol Install Now.
Gambar 9 Langkah kedua dalam instakasi selenium
16
4. Tunggu sampai instalasi selesai kemudian klik Restart Now.
Gambar 10 Langkah ketiga dalam instalasi selenium
5. Setelah selesai restart, jalankan selenium dengan klik tools atau gunakan Ctrl+Alt+S.
Gambar 11 Langkah keempat dalam instalasi selenium
17
6. Selenium akan tampil seperti berikut ini:
Gambar 12 Tampilan Selenium 7. Untuk menginstal FireBug buka url: https://getfirebug.com/downloads
Gambar 13 Langkah pertama menginstall firebug
18 8. Klik Add to Firefox.
Gambar 14 Langkah kedua menginstall firebug
Gambar 15 Langkah ketiga menginstall firebug
19
Gambar 16 Langkah keempat menginstall firebug
9. Tunggu sampai firefox selesai menginstall add ons, kemudian klik Install Now.
Gambar 17 Langkah kelima menginstall firebug
20
Gambar 18 Langkah keenam menginstall firebug
10. Tunggu sampai instalasi selesai, kemudian tekan F12 untuk membuka FireBug.
Gambar 19 Tampilan firebug
21
Gambar 20 Tampilan selenium dan firebug
2.2
Teori-teori Khusus Dalam penulisan skripsi ini ada beberapa jurnal yang digunakan sebagai referensi,
jurnal-jurnal tersebut di rangkum dalam tabel dibawah ini. Table 1 Rangkuman Jurnal Referensi No 1
Judul
Metode yang digunakan
Automated Software
Testing,
A study of State of
Hasil
metode Systematic Mapping,
Hasilnya
diklasifikasikan
Systematic Literature Review
ditampilkan
dalam
dan Survey.
graphs,
bar
dan
bentuk
buble
dan
tables.
graphs
Practice [Dudekula
Penelitian mengenai keuntungan dan
Mohammad
Rafi
kekurangan
dan Katam Reddy
berdasarkan
Kiran
Mapping,
Moses,
2011]
AST
ini
ditemukan
metode
Systematic
Systematic
Literature
Review yang kemudian juga dibantu dengan web survey.
2
Pengujian Perangkat
Lunak
Metode White Box dan Black
Pengujian
adalah
Box
menemukan error pada perangkat lunak
Menggunakan
pengguna. Pengujian perangkat lunak
Metode White Box
juga
dan
mengenai perangkat lunak secara
Box
obyektif
dikirim
untuk
Dengan
Black
sebelum
proses
memberikan
dan
kepada
pandangan
independen,
yang
22 [Abdul Rouf, 2011]
bermanfaat dalam operasional bisnis untuk memahami tingkat risiko pada implementasinya
3
Automated
Web
Application Using
Search
Based
Software
Alshahwan
and
Harman,
2011]
Are
Software
3 algoritma pengujian yaitu Near Miss Seeding (NMS),
Constant Seeding (SCS), dan SCS
ditambah
Dynamic
dengan
Mined
Value
Debugging
Automated
Debugging
Techique
ada sebanyak 540 percobaan. Dari hasil
percobaannya
penulis
menunjukan bahwa metode DMV dapat
mengurangi
biaya
dan
meningkatkan efektifitas pengujian
menggunakan tools untuk melakukan proses debug secara automatisasi
Techniques Actually
aplikasi sehingga secara keseluruhan
aplikasi web.
Seeding (DMV). Automated
Penulis menjalankan setiap versi alat sebanyak 30 kali terhadap keenam
NMS ditambah dengan Static
Engineering [Nadia
4
Based
Testing (SBST).
Testing
Mark
Search
dapat membantu developer karena Helping
developer
tidak perlu
Programmers
analisa
[Chris Parnin and
kesalahan yang muncul saat debug,
Alessandro
hanya saja dibutuhkan pembelajaran
Orso,
2011]
lebih
untuk
melakukan mengetahui
yang lebih lagi mengenai penggunaan software debugging supaya lebih berguna.
5
Invariant-Based
Metode
ATUSA,
yaitu
Automatic Testing
pengimplementasian
sebuat
of
Web
tool yang bisa melakukan
mengevaluasi tipe varian yang dapat
[Ali
pengecekan setiap komponen
digunakan
Mesbah, Arie van
yang harus di test, sebuah
untuk
Deursen
dan
pludgin untuk mem-validasi
skalability,
Roest,
secara spesifik, dan membuat
effort dan level automasi untuk
test
pendekatan testing
Modern
Application
Danny 2011]
suite
selama
proses
Penulis menjabarkan tiga studi kasus yang
terdiri
dari
dalam
enam
aplikasi
mengukur
subjek,
AJAX
kemampuan,
membutuhkan
manual
crawling 6
Exploiting
Monitoring Hardware
Hardware Advances Software and (NIER
Hasil memory
for Testing
Debugging Track)
yang yang
meningkatkan
didapatkan
adalah
dibutuhkan
untuk
pemantauan
yang
efektif secara signifikan lebih kecil jika
dibandingkan
pemantauan
dengan mengunakan
23 [Mary Lou Soffa,
instrumentasi, sehingga teknik ini
Kristen R. Walcott
sangat berguna untuk memori yang
dan Jason Mars,
terbata
2011] 7
Automated
Metamorphic Testing
Hasil yang didapatkan adalah aplikasi
Metamorphic Testing
dari
on
testing
pada
the
domain automatisasi dari model fitur
of
ternyata efisien dan sangat efektif
Feature
Models
dalam mendeteksi kesalahan dengan
[Sergio
Segura,
waktu
Robert
M.
membutuhkan manusia. Yang terbaik
Hieronsb,
David
dalam penelitian ini adalah, ini adalah
Benavides
dan
pendekatan automasi yang pertama
Ruiz-
untuk functional test pada analisa
Analyses
Antonio
Cort´es, 2010] 8
metamorphic
Suite
cepat
tanpa
model fitur.
EvoSuite: Automatic
yang
Test
Generation
EvoSuite dengan pendekatan
Alat
pencarian
nilai
kompilasi
dengan
menggabungkan
optimal
teknik
EvoSuite
memerlukan
kode
sumber
hasil Java
(bytecode) sebagai masukan. Hasil
for Object-Oriented
teknik
Software [Gordon
pencarian
Fraser dan Andrea
search), eksekusi simbolik
kelompok test dalam format Java unit
Arcuri, 2011]
dinamis (dynamic symbolic
test (JUnit). EvoSuite bekerja secara
execution), dan transformasi
otomatis tanpa memerlukan campur
tingkat
tangan dari pengguna. EvoSuite akan
hybrid
uji
transformation).
seperti
kompilasi kode Java akan dianalisa
(hybrid
dan
(testability
kemudian
menganalisa diberikan
akan
dihasilkan
kelas-kelas satu
persatu
yang untuk
kemudian dihasilkan kelompok uji yang sesuai
2.2.1
Automated Software Testing, A study of State of Practice Dalam thesis yang berjudul Automated Software Testing (AST) ini penulis
menguraikan bahwa tujuan dari penulisan thesis nya adalah untuk mengelompokkan perbedaan pemahaman mengenai Automated Software Testing, Mengidentifikasi keuntungan dari Automated Software Testing, Mengidentifikasi kekurangan dan tantangan dari Automated Software Testing dan untuk mengidentifikasi bagaimana perbandingan keuntungan dan kekurangan dari automated software testing itu sendiri.
24 Dalam pembuatan thesis ini sendiri penulis menggunakan metode Systematic Mapping, Systematic Literature Review dan Survey. Hasilnya diklasifikasikan dan ditampilkan dalam bentuk buble graphs, bar graphs dan tables. Penelitian mengenai keuntungan dan kekurangan AST ini ditemukan berdasarkan metode Systematic Mapping, Systematic Literature Review yang kemudian juga dibantu dengan web survey. Penemuan terbesar dalam penelitian menggunakan Systematic Mapping dalam 227 jenis penelitian yang berhubungan dengan AST yaitu:
Kebanyakan penelitian AST mengutamakan unit testing level yang juga diikuti oleh sistem testing dan functional testing. Dan tidak banyak yang membahas tentang acceptance testing dan regression testing
Dalam penelitian AST ada 6 kategori yang diutamakan yaitu: Test Generation and Selection (Kategori A), Test Execution and Result Collection(Kategori B), Result Evaluation and Test Quality Analysis(Kategori C), Kombinasi Kategori A, B dan C (Kategori D), Kombinasi Kategori A dan B (Kategori E) dan Kombinasi Kategori B dan C (Kategori F).
Dari beberapa aspek yang diteliti ditemukan kebanyakan paper berhubungan dengan kategori A, diikuti oleh kategori C. Perbedaaan yang ditemukan dalam tahap ini diteliti kembali pada kategori B, D, E dan F.
Berdasarkan teknologi yang digunakan ada 21 sub aspect dengan bahasa pemrograman yang berbeda yang digunakan dalam AST, yaitu Java, C, C++, Scripting language, UML, TTCN, Ada, UNIX, SQL, XML, Smaltalk, .Net, FORTRAN, COBOL, Sulu, Petrinet, Perl, Lustre, Lotus, Phyton dan IF Language.
Berdasarkan penelitian yang dilakukan kebanyakan didominasi oleh bahasa pemrograman Java, diikuti C, C++, Scripting Language dan UML.
Sedangkan dengan metode Systematic Literature Review ditemukan kekurangan dan kelebihan dari ATS yaitu: 1. Kekurangan:
Automated Testing tidak sepenuhnya dapat menggantikan proses manual testing
Masih ada kegagalan dalam mencapai target.
Kesulitan dalam memantain automation test
Proses dari automasi testing membutuhkan lebih banyak waktu
Harapan yang salah
25
Strategi testing automasi yang tidak sesuai.
Skill yang kurang mengenai tools yang digunakan untuk automasi testing.
2. Kelebihan:
Meningkatkan kualitas produk
Proses testing yang lebih baik
Jaminan hasil test yang lebih baik
Mengurangi waktu yang digunakan untuk testing
Hasil testing lebih terpercaya
Meningkatkan daya tahan software
Mengurangi sumber daya manusia
Mengurangi biaya
Mendeteksi kesalahan
Sedangkan hasil dari survey adalah dari 164 responden 70 persen diantaranya memberikan respon yang valid. Lebih dari 50 orang mengatakan bahwa keuntungan dari AST adalah bisa mendeteksi kesalahan dan meningkatkan daya tahan software. 24 persen mengatakan kurang setuju terhadap AST dan 30 persen mengatakan tidak setuju dengan AST [4].
2.2.2
Pengujian Perangkat Lunak Dengan Menggunakan Metode White Box
dan Black Box Pengujian adalah proses untuk menemukan error pada perangkat lunak sebelum dikirim kepada pengguna. Pengujian Software adalah kegiatan yang ditujukan untuk mengevaluasi atribut atau kemampuan program dan memastikan bahwa itu memenuhi hasil yang dicari, atau suatu investigasi yang dilakukan untuk mendapatkan informasi mengenai kualitas dari produk atau layanan yang sedang diuji (under test), Pengujian perangkat lunak juga memberikan pandangan mengenai perangkat lunak secara obyektif dan independen, yang bermanfaat dalam operasional bisnis untuk memahami tingkat risiko pada implementasinya. Software testing adalah teknik penting untuk perbaikan dan pengukuran kualitas sistem perangkat lunak, Pengujian perangkat lunak juga memberikan pandangan mengenai perangkat lunak secara obyektif dan independen, yang bermanfaat dalam operasional bisnis untuk memahami tingkat risiko pada implementasinya [9].
26 2.2.3
Automated Web Application Testing Using Search Based Software
Engineering Berdasarkan pengamatan penulis terhadap 399 paper mengenai SBST hanya ditemukan satu paper yang membahas masalah pengujian aplikasi web dan tidak satu pun paper yang membahas penciptaan test data dengan menggunakan metode optimasi. Padahal kondisi saat ini menunjukan bahwa aplikasi web sangat penting perannya dalam kehidupan sehari-hari. Penulis memberikan contoh Amazon, pedagang online paling terkenal di Amerika Serikat yang meningkat jumlah penjualannya sebanyak 29,5 % pada tahun 2009. Estimasi kerugian yang akan dialami oleh Amazon jika layanan mereka tidak berfungsi dalam satu menit sebesar $25.000 pada tahun 2001. Di dalam paper dijelaskan metode pengujian web secara otomatis dengan pendekatan Search Based Software Testing (SBST). SBST adalah suatu pendekatan yang memformulasikan persoalan pengujian perangkat lunak menjadi persoalan pencari nilai optimal. Penulis memperkenalkan 3 algoritma pengujian yaitu Near Miss Seeding (NMS), NMS ditambah dengan Static Constant Seeding (SCS), dan SCS ditambah dengan Dynamic Mined Value Seeding (DMV). Ketiga algoritma yang disebutkan menunjukan sumber nilai yang digunakan sebagai inisialisasi. NMS menggunakan nilai berdasarkan alur eksekusi pengujian, SCS menggunakan konstanta, dan DMV menggunakan nilai yang dinamis. Penulis membandingkan efektifitas dan efisiensi ketiga algoritma dengan penilaian terhadap cakupan alur pengujian kode, penilaian kecocokan, waktu eksekusi, dan kemampuan menemukan kesalahan. Dalam pengujiannya, penulis melibatkan 6 aplikasi web berbasis PHP yaitu FAQForge (aplikasi mengelola pertanyaan yang sering ditanyakan), Schoolmate (aplikasi administrasi sekolah), Webchess (aplikasi permainan catur), PHPSysInfo (aplikasi pengamatan sistem), Timeclock (aplikasi pencatat waktu perkerja), and PHPBB2 (aplikasi forum online). Dalam pengujiannya penulis menciptakan alat berbasis teknologi PHP dan Java yang dinamakan Search based Web Application Tester (SWAT). Alat SWAT terdiri dari 3 versi yaitu versi NMS, SCS, dan DMV. Dalam pengujiannya penulis menggunakan sumber kode aplikasi sebagai masukan yang akan diproses oleh alat SWAT. Alat SWAT selanjutnya akan menghasilkan masukan yang akan digunakan untuk menjalankan aplikasi yang sedang diuji. Alat SWAT selanjutnya memantau hasil pengujian aplikasi untuk memperoleh tingkat efektifitas dan efisiensi aplikasi. Penulis menjalankan setiap versi alat sebanyak 30 kali terhadap keenam aplikasi sehingga secara keseluruhan ada sebanyak 540 percobaan. Dari hasil percobaannya penulis menunjukan bahwa metode DMV dapat mengurangi biaya dan meningkatkan efektifitas pengujian aplikasi web [17].
27 2.2.4
Are Automated Debugging Techniques Actually Helping Programmers? Selama hampir 30 tahun para peneliti memimpikan bagaimana suatu software dapat
membantu developer untuk melakukan debug secara otomatis dan memperbaiki defect pada kode program secara otomatis. Dalam paper ini penulis meneliti beberapa programmer yang mencoba menggunakan metode automatisasi ini dan ternyata menorehkan hasil yang positif dan negatif. Dalam situasi tertentu tools membantu developer untuk menyelesaikan pekerjaannya lebih cepat dibandingkan tidak menggunakan tools sama sekali, tetapi untuk menjalankan tools ini dibutuhkan developer yang lebih berpengalaman dan mampu membuat kode program yang lebih sederhana. Beberapa orang mungkin menganggap bahwa melakukan proses debug dan pengujian dengan menggunakan tools tidak sepenuhnya bisa menolong manusia, tetapi cukup membantu dalam mengevaluasi algoritma. Hanya ketika suatu algoritma sudah stabil maka tools tersebut bisa digunakan. Jadi bagaimana jika ternyata cara debug secara manual jauh lebih baik dika dibandingkan dengan automatisasi? Karena salah satu kelemahan penggunaan tools dalam debug kode program adalah tidak bisa menemukan semua defect secara detil. Berdasarkan pengalaman penulis paper ini, ketika penulis mencoba bekerja sama dengan 68 developers maka disimpulkan bahwa menggunakan tools untuk melakukan proses debug secara automatisasi dapat membantu developer karena developer tidak perlu melakukan analisa lebih untuk mengetahui kesalahan yang muncul saat debug, hanya saja dibutuhkan pembelajaran yang lebih lagi mengenai penggunaan software debugging supaya lebih berguna. Untuk itu dibutuhkan penelitiian yang lebih lagi untuk menghasilkan tools yang benar benar dapat membantu developer untuk melakukan debug [8].
2.2.5
Invariant-Based Automatic Testing of Modern Web Application AJAX-based Web 2.0 application sangat bergantung pada client/server yang
asynchronous, dan side klien yang dimanipulasi DOM tree. Hal ini lah yang membuat AJAX tidak jauh beda dengan aplikasi web yang tradisional yang mudah error dan susah untuk di test. Karena itu penulis paper ini mengusulkan suatu metode untuk menguji aplikasi AJAX secara automatisasi mulai dari fungsi kecil sampai fungsi utamanya. Pendekatan yang dilakukan adalah ATUSA, yaitu pengimplementasian sebuat tool yang bisa melakukan pengecekan setiap komponen yang harus di test, sebuah pludgin untuk mem-validasi secara spesifik, dan membuat test suite selama proses crawling. Penulis menjabarkan tiga studi kasus yang terdiri dari enam subjek, mengevaluasi tipe varian yang dapat digunakan dalam aplikasi AJAX untuk mengukur kemampuan, skalability, membutuhkan manual effort dan level automasi untuk pendekatan testing [5].
28 2.2.6
Exploiting Hardware Advances for Software Testing and Debugging
(NIER Track) Jurnal ini mebahas tentang penerapan dan kesiapan dari mekanisme monitoring hardware untuk mengawasi penerapan dari software engineering dan menghasilkan suatu terobosan untuk meningkatkan pemahaman potensi dan fitur baru ini. Hasil yang didapatkan adalah memory yang dibutuhkan untuk meningkatkan pemantauan yang efektif secara signifikan lebih kecil jika dibandingkan dengan pemantauan mengunakan instrumentasi, sehingga teknik ini sangat berguna untuk memori yang terbatas. Teknik ini juga dapat digunakan untuk menghitung semua pengeluaran tambahan secara signifikan jika kurang dari instrumentasi. Selain itu penulis juga mengaktifkan teknik lokalisasi kesalahan yang sangat efisien [14].
2.2.7
Automated Metamorphic Testing on the Analyses of Feature Models Pada jurnal ini dibahas mengenai hubungan automatisasi metamorphic testing pada
model fitur. Data testing di generate berdasrkan study kasus yang ada. Produk yang dihasilkan akan diuji untuk mendapatkan output yang diharapakan dari sejumlah analisis terhadap model fitur. Untuk mengevaluasi pendekatan yang dilakukan penulis memeriksa keefektivitasan alat yang digunakan untuk mendeteksi kesalahan saat menggunakan mutasi testing. Dua defect ditemukan dalam perilisan FaMa, yaitu framework software open source yang diintegrasikan dengan beberapa software berbayar. Defect lainnya ditemukan pada SPLOT, yaitu fitur model online yang digunakan oleh komunitas. Penulis juga menampilkan bagaimana performansi dari generator yang berhubungan dengan fitur model. Pada akhirnya penulis menjelaskan bagaimana pendekatan yang dilakukan dapat memperbaiki defect dengan menggunakan inisial test case dari data test yang digenerate untuk meningkatkan pendeteksian error. Hasil yang didapatkan adalah aplikasi dari metamorphic testing pada domain automatisasi dari model fitur ternyata efisien dan sangat efektif dalam mendeteksi kesalahan dengan waktu yang cepat tanpa membutuhkan manusia. Yang terbaik dalam penelitian ini adalah, ini adalah pendekatan automasi yang pertama untuk functional test pada analisa model fitur. Dari sudut pandang metamorphic testing, pekerjaan ini cukup sederhana dan mempermudah pendeteksian kesalahan dengan effort yang tidak terlalu besar. Penulis juga menampilkan aplikasi baru untuk metamorphic testing dimana hubungan metamorphic digunakan untuk menghitung output yang dihasilkan dari test yang berbeda. Hal ini memungkinkan bagi peneliti baru untuk lebih mengeksplorasi aplikasi baru dari metamorphic testing dalam domain yang sama dengan masalah yang berbeda. Dalam konteks ini penulis merencanakan untuk bekerja dalam defenisi beberapa pedoman umum
29 untuk menentukan hubungan metamorphic dalam struktur data yang sama seperti model variable dan konfigurasi [16].
2.2.8
EvoSuite: Automatic Test Suite Generation for Object-Oriented
Software Kasus uji dapat dihasilkan secara otomatis tetapi ada permasalahan mengenai cara pembuktian bahwa hasil yang didapatkan sesuai dengan keinginan. Kesalahan terkadang dapat ditemukan secara otomatis jika kesalahan mengakibatkan program rusak, jalan buntu, atau melanggar spesifikasi yang benar. Kebanyakan kasus program tidak memiliki spesifikasi yang benar, dan kesalahan tidak menyebabkan program berhenti ataupun jalan buntu sehingga diperlukan mekanisme untuk menghasilkan data test dan pengecekan secara otomatis sehingga pengguna dapat melakukan pembuktian secara manual. Paper ini mempersembahkan suatu alat untuk menghasilkan kasus uji untuk kelaskelas yang ditulis dalam bahasa pemrograman Java yang dinamakan EvoSuite. Alat EvoSuite menghasilkan kasus uji dengan cakupan yang luas, sederhana, dan menyediakan pengujian.
EvoSuite
menggunakan
pendekatan
pencarian
nilai
optimal
dengan
menggabungkan teknik teknik seperti pencarian hybrid (hybrid search), eksekusi simbolik dinamis (dynamic symbolic execution), dan transformasi tingkat uji (testability transformation). EvoSuite bertujuan untuk menghasilkan keseluruhan kelompok kasus uji yang sesuai dan pengujian berbasis mutasi dimana kesalahan artifisial (mutasi) sengaja dimasukan ke dalam eksekusi program. Alat EvoSuite memerlukan hasil kompilasi kode sumber Java (bytecode) sebagai masukan. Hasil kompilasi kode Java akan dianalisa dan kemudian akan dihasilkan kelompok test dalam format Java unit test (JUnit). EvoSuite bekerja secara otomatis tanpa memerlukan campur tangan dari pengguna. EvoSuite akan menganalisa kelas-kelas yang diberikan satu persatu untuk kemudian dihasilkan kelompok uji yang sesuai [15].