ABSTRAK
Kegiatan pengujian dimulai selama pengembangan sistem dan mencakup semua tahap yang sudah
ditentukan oleh masing - masing model pengujian. Beberapa pengembangan sistem, pengujian yang
dilakukan setelah fase coding, namun mungkin pada akhirnya akan menyebabkan perangkat
lunak tersebut akan menemukan banyak bug, sehingga perangkat lunak tersebut tidak dapat
digunakan dengan maksimal.
Pada tulisan ini akan dibandingkan model iterative testing dan model based testing untuk
melakukan pengujian pada perangkat lunak. yang bertujuan untuk melihat lebih dalam
keunggulan dan kelemahan masing masing model pengujian, sehingga pengembang sistem dapat
menentukan model pengujian yang lebih baik untuk model ini.
Model based testing memiliki dampak yang signifikan terhadap kualiats pengujian terhadap
sistem. Namun banyak industri masih bergantung pada metode pengujian yang bersifat tradisional.
keprihatinan terbesar terhadap model based testing adalah kebutuhan pengetahuan formal dan
biaya awal yang tinggi untuk memperkenalkan model ini.[1].
Pengujian iteratif dapat diterapkan di seluruh proses pengembangan perangkat lunak. karena
perubahan lebih mudah dan lebih murah untuk mengimplementasikan dalam tahap awal
pembangunan. Langkah awal dalam proses iteratif adalah untuk mengembangkan prototipe.
Prototipe harus dievaluasi oleh kelompok kerja ataupun kelompok yang tidak terkait langsung
dengan pengembangan perangkat lunak yang bertujuan untuk agar tidak terjadi bias pendapat.
Proses harus diulang sampai masalah pengguna telah berkurang pada tingkat yang memadai.
INTISARI
Untuk membangun sebuah perangkat lunak salah satu tahapan yang harus dilakukan
adalah melakukan perancangan sistem, untuk itu dibutuhkan suatu metode yang akan
digunakan untuk melakukan perancangan perangkat lunak yang akan dibangun. Ada
beberpa metode yang dapat digunakan untuk melakukan perancangan perangkat
lunak, untuk menentukan metode yang digunakan maka banyak parameter yang
digunakan untuk melakukan pemilihan metode. Pada tulisan ini akan dibandingkan
dua metode yaitu Metode Iterative Testing dengan Model Based Testing untuk
melakukan pengujian terhadap perangkat lunak yang akan dibangun.
Menurut Myers [2], pengujian perangkat lunak adalah proses atau serangkaian
proses, yang dirancang untuk memastikan bahwa kode komputer melakukan apa
yang dirancang untuk melakukan apa yang sudah dirancang dan tidak melakukan
sesuatu yang tidak diinginkan. Software pengujian menjadi penting untuk perusahaan
untuk menjamin kualitas produk terlepas dari apakah metodologi yang digunakan.
Perangkat lunak otomatisasi pengujian adalah salah satu pendekatan utama yang
telah diterapkan untuk mengurangi biaya pengujian dan waktu pengujian dan
verifikasi hasil pengujian.
Secara umum pengujian bertujuan untuk memberikan informasi kepada
stackholder tentang kualitas produk atau jasa yang diuji. Pengujian juga dapat
memberikan pandangan selain itu tujuan lainnya adalah memahami resiko dari
implementasi perangkat lunak tersebut. Pengujian perangkat lunak tidak terbatas
hanya pada proses eksekusi sebuah program atau aplikasi tetapi juga menemukan bug
pada perangkat lunak yang di uji.
Pada 1970-an pertengahan, Goodenough dan Gerhart mengemukakan
pertanyaan yang mungkin paling penting dalam pengujian perangkat lunak : Apa
kriteria uji untuk pengujian perangkat lunak? Sejak itu sejumlah besar cakupan kriteria
telah diajukan dan diselidiki untuk menguji kemampuan mendeteksi kesalahan, sering
juga disebut sebagai "efektivitas".[3]
Kegiatan pengujian harus dimulai pada siklus awal pengembangan sistem dan
melakukan semua tahapannya. Namun, dalam beberapa buku teks rekayasa perangkat
lunak, sistem life cycle pengembangan sistem menunjukkan bahwa pekerjaan uji
dilakukan setelah akhir fase coding. [4]
Pengujian Iteratif adalah pengujian yang diulangi, atau iterasi beberapa kali. Pengujian
iteratif bertujuan untuk meningkatkan kualitas desain yang dirancang.
Sedangkan model based testing (MBT) adalah : teknik untuk generate secara otomatis
pengujian kasus menggunakan model dari spesifikasi kebutuhan dan skenario
perangkat lunak . Untuk menggunakannya, beberapa jenis model perangkat lunak
dibuat dalam bentuk model formal (seperti metode formal, UML diagram, dll)
tujuannya untuk menggambarkan perilaku perangkat lunak atau perilaku sistem.
Tulisan ini akan menyajikan proses perbandingan metode pengujian
perangkat lunak model iterative testing dengan model based testing yang bertujuan
untuk memperoleh model yang baik dalam menentukan model pengujian dalam
pengembangan perangkat lunak. adapun cara yang dilakukan adalah dengan merinci
tentang bagaimana iterative dan model based melakukan proses pengujian. pada
bagian 2, penjelasan tentang model based testing dan iterative testing. pada bagian 3,
menyajikan hasil dan pembahasan dibagian 4, penutup.
PEMBAHASAN
Untuk implementasi model based testing tersebut digambarkan sebagai berikut :[6]
Model adalah salah satu metode automated testing yang melakukan pengujian
berdasarkan model-model sistem, bisa Class Diagram, use case diagram, ER diagram.
Tetapi source terbesarnya adalah spesifikasi kebutuhan. Karena langkah pertama
MBT adalah membuat model baru yang sudah memiliki seluruh perilaku SUT
(System Under Test) dari model-model sistem sebelumnya.
Kelebihan MBT sendiri adalah dapat mengenerate test case secara otomatis dari
model yang telah dibuatnya. Dengan kata lain proses pengotomasian terjadi pada
praproses pengujian.
2. Iterative Testing
Iteratif desain adalah metodologi desain berdasarkan proses siklus
prototyping, menguji, menganalisa, dan memperbaiki pekerjaan yang sedang berjalan.
Dalam desain iteratif, interaksi dengan sistem yang dirancang digunakan sebagai
bentuk penelitian untuk menginformasikan dan berkembang proyek, sebagai versi
yang berurutan, atau iterasi dari desain diimplementasikan.[7]
Pengembangan dengan iterative merupakan sebuah pendekatan pada
pengembangan software yang lebih memusatkan gagasan pengembangan dalam
bentuk siklus, dari pada melakukan semuanya secara sekaligus. Metode ini tidak
sesuai pada semua jenis software namun dapat sangat bermanfaat dan sangat
menguntungkan pada pengaturan tertentu. Merupakan hal yang penting untuk
dipahami, bahwa pemgembangan iterative bukanlah merupakan sebuah
pengembangan yang tidak terencana atau spontan. Faktanya, proses pengembangan
software terstrukturisasi dengan baik.
Pada pengembangan iterative, memulainya dengan tahapan perencanaan
project, kemudian bergerak pada tahapan pengembangan lainnya dan pada akhirnya
merilis produk.
Sejalan dengan rilis produk, terdapat hasil yang diperoleh dari pengujian
produk (product testing) dan pengujian pada pengguna (user testings). Hasil tersebut
akan digabungkan dengan rilis selanjutnya. Dimana rilis software pada
pengembangan iterative dapat berupa rilis software di tahapan awal pengembangan,
bukan rilis produk pada publik.[8]
Pengujian merupakan teknik yang digunakan untuk memvalidasi proses,
harus didistribusikan dan dilakukan pada setiap tahap dari siklus pengembangan
perangkat lunak.
Sistem pengembangan dan desain uji harus dilakukan secara bersamaan. uji desain
harus disertakan disetiap tahapan siklus hidup, dan pengukuran harus terjadi pada
setiap akhir fase.
Pengembangan proyek dimulai dengan menspesifikasikan dan mengimplementasikan
arsitektur / prototype dari perangkat lunak yang telah dirancang sebelumnya.
Komponen perangkat lunak diciptakan dari kebutuhan bisnis yang
diidentifikasi, dan kemudian mengidentifikasi persyaratan lebih lanjut. Proses ini
kemudian diulang, sampai menghasilkan rancangan terbaik dari perangkat lunak
untuk setiap siklus dari model.
Pada iterative model pengujian yang dilakukan dengan langkah sebagai
berikut :[9]
Spesifikasi output dari setiap proses desain sistem adalah dokumen acuan untuk
perancang sistem dalam melakukan proses desain sistem dari fase berikutnya, dan
untuk penguji melakukan proses uji desain dari fase ini.
Sebagai contoh, ketika penguji bekerja di unit proses uji desain, programer secara
bersamaan melakukan coding modul (unit) program setelah modul spesifikasi
diselesaikan. Ketika sebuah modul telah dikodekan dan uji pekerjaan desain selesai,
penguji dapat melakukan unit testing pada modul.
4. Perbandingan Model
4.1 Iterative Testing
Rencana uji untuk proyek terdiri dari empat lapisan pengujian utama: Coding,
Integrasi, Jaminan Mutu dan Pengujian Penerimaan User. Masing-masing lapisan
dibangun bertahap untuk memastikan banyaknya kemungkinan kesalahan yang telah
ditemukan dan diperbaiki.
Rincian pengujian dengan model iterative testing adalah sebagai berikut:
Gambar 4 : pengujian dengan model iterative testing
Run
Pengujian
Output yang
Output Hasil
diharapkan
Pengujian
Membandingkan Hasil
Pengujian Object
dan cakupan
kriteria
Pengujian
- Perbaiki Model
Berhasil dan
-GenerateKembali
Terjadi Kesalahan
-Stop Pengujian
-Perhitungkan
Keandalan
Maka dari form diatas selanjutnya pengembang sistem dapat membuat model
berikut :
Dengan adanya model yang telah dibangun, maka batasan sistem yang
dibangun juga harus diperjelas, dan yang pasti umumnya fasilitas CRUD
merupakan bagian yang harus tersedia untuk tiap tiap entitas.
Untuk membangun sebuah form dengan fasilitas CRUD tentu harus ada validasi
pada form tersebut.
Validasi untuk form dalam pengembangan model merupakan bagian yang
penting, karena ini adalah dasar untuk menghasilkan coding yang dibuat.
Sebagai gambaran misalnya ketika form di submit apakah sudah dibisa dipastikan
input yang diberikan oleh user sudah benar? Maka dari itu perlunya dilakukan
validasi form.
Validasi form terdiri dari 3 kategori, yaitu :[11]
a. Single elemen
b. Multiple elemen
c. Entity association
Single elemen untuk validasi yang terjadi pada form hanya pada elemen saja.
Misalnya sebuah textfield tidak boleh kosong atau nilai yang dimasukkan harus
bersifat integer dan harus lebih besar dari nol. Model kategori seperti ini harus
telah dicapai dan disepakati bersama.
Multiple elements
Untuk melakukan validasi yang dapat mengecek bahwa semua atribut telah terisi
dengan baik dan benar, misalnya setelah user melakukan input data, maka user
harus memberikan centang pada checkbox sebagai persetujuan bahwa data yang
diisikan sudah benar.
Entity association mengacu pada hubungan kelas yang ada dalam domain
tersebut. Misalnya hubungan satu-ke-banyak.
B. Pengujian Kasus
Setiap pengujian kasus didefinisikan secara terpisah atau perbagian oleh file
XML, dimana XML berisi informasi yang dibutuhkan untuk melakukan input data
yang dibutuhkan. Proses pengujian dilakukan dengan menggunakan oracle
sebagai tools pengujian untuk mendapatkan output yang diharapkan. Karena ini
adalah aplikasi berbasis web maka inputan akan dilakukan dari browser ditangani
oleh Junit, sedangkan input untuk melakukan pengujian akan dilakukan oleh
JwebUnit. Jadi Oracle berisi database dan HTTP.
File XML akan digunakan untuk menguji menyimpan product baru. Elemen
dataset XML digunakan oleh DBUnit untuk mengatur database. Inputan elemen
XML berubah menjadi perintah JBUnit . Html elemen XML digunakan oleh
JWebUnit untuk memeriksa HTTP respon. Database XML elemen yang
digunakan oleh DBUnit untuk memeriksa keadaan akhir dari database. keadaan
akhir tergantung pada pengujian operasi CRUD.
5. Seleksi Kriteria Pengujian
Seleksi kriteria pengujian membantu pengembang untuk mengontrol pilihan
pengujian.
Mark Utting dan Bruno Legeard mengklasifikasikan kriteria seleksi menjadi enam
bagian :[12]
Struktur model cakupan kriteria
Cakupan kriteria data
Kesalahan kriteria model
Kriteria berbasis kebutuhan
Pengujian spesifikasi kasus secara jelas
Metode pengujian dengan statistik
Pada seleksi kriteria pengujian ini akan digunakan struktur model cakupan kriteria
dan kriteria berbasis kebutuhan, cakupan kriteria data.
Struktur model cakupan kriteria, kebutuhan awal yang harus dipenuhi dalam
membangun sistem menggunakan model based testing adalah tersedianya
model, untuk aplikasi berbasis web model dibentuk dari permasalahan yang
ada dan berdasarkan data inputan dari user dan pengguna sistem. Model
dapat dibentuk misalnya dengan menggunakan UML.
Kriteria berbasis kebutuhan, dalam aplikasi berbasis web kebutuhan dasar
yang harus tersedia adalah CRUD, pengujian yang dapat dilakukan misalnya
pada button Update, ketika user mengklik button Update maka akan
ditampilkan secara detail data untuk satu entity yang dapat di update.
Cakupan kriteria data, penanganan data harus jelas, mana saja data yang
dianggap perlu, misalnya ketika menginputkan data identitas, semua data
atribut dianggap perlu maka dalam aplikasinya ketika user menginputkan data
pada form data dibuat data tidak boleh ada yang kosong.
Pengujian Positif
Database Html Menampilkan
Membuat data baru,
C1 tidak merubah data yang List page, list entity baru
lain
Entity page, nilai entity
R1 Tidak berubah
ditampilkan
Berubah untuk record List page, update entitiy
U1
tertentu ditampilkan
Delete record tertentu,
List page, entitiy dihapus
D1 tidak merubah data yang
dari list
lain
Pengujian Negatif
Database Html Menampilkan
C2 Tidak berubah entity, pesan error ditampilkan
C3 Tidak berubah List, tidak ada perubahan pada list
R2 Tidak berubah List, tidak ada perubahan pada list
List, tidak ada perubahan pada
U2 Tidak berubah
list, error message ditampilkan
U3 Tidak berubah Entity, error message ditampilkan
U4 Tidak berubah List, tidak ada perubahan pada list
D2 Tidak berubah List, error message ditampilkan
D3 Tidak berubah List, tidak ada perubahan pada list
2 Saran
Model itetative testing sebaik tidak digunakan untuk pengembangan sistem yang skala
ukuran proyek yang cukup besar karena waktu yang tidak terencana dan biaya lebih
mahal, lebih sulit dalam perawatan sistem.
DAFTAR PUSTAKA
[1] C. Torens, L. Ebrecht, K. Lemmer Starting Model-Based Testing based on Existing
Test Cases used for Model Creation (periodical style), IEEE International Conference
on Computer And Information Technology, 11th 2011.
[2] Myers, G.J.: The Art of Software Testing. Ed. John Wiley & Sons, Inc., Hoboken,
New Jersey. (2004).
[3] Atul Gupta Pankaj Jalote An approach for experimentally evaluating effectiveness and
efficiency of coverage criteria for software testing Published online: 8 January 2008 Int J
Softw PP.145160.
[4] B.Y. Tsai*, S. Stobart, N. Parrington and B.Thompson Iterative Design and
Testing within the Software Development Life Cycle School of Computing and
Information Systems, University of Sunderland, , (1997) pp.295309, Software
Quality Journal 6.
[5] Bhaswati Sadhukhan Model Based Testing Practices (periodical style-Accepted for
Publication), Idea, Approach & Solution, Global Business Services (GBS),
IBM(I) Pvt. Ltd, Kolkata, India.
[6] I. Schieferdecker, C. E. Vector Model-Based Testing IEEE Software Published
by the IEEE Computer Society pp.14-18, 2012.
[7] E. Zimmerman, Play as Research: The Iterative Design Process Final Draft: July 8,
2003.
[8] http://www.snyders.us/qa-iterative.htm
[9] B. Campbell,Dr. G. Ray Managing Iterative Testing in an Agile DevelopmentProject
Version 1.3 April 9, 2002.
[10] A. C. D. Neto, R. Subramanyan, M. Vieira and G. H. Travassos Characterization
of Model-based Software - Testing Approaches , Seimens Corporate Research,
August-2007.
[11] E. Escott, P. Strooper, P. King, and I. J. Hayes, Model-DrivenWeb Form
Validation with UML and OCL, in Proceedings of the 7th Model-Driven Web
Engineering Workshop, 2011.
[12] M. Utting, B. Legeard Practical Model-Based Testing: A Tools Approach [Kindle
Edition], 1 edition, November 27, 2006.