PERANCANGAN PENGUJIAN PERANGKAT LUNAK BERORIENTASI OBYEK: BERBASIS STATUS (STATE-BASED TESTING

)
Retno Hendrowati

alam pengembangan perangkat lunak, tahapan pengujian (testing) merupakan proses yang penting dalam menentukan tingkat kebenaran perangkat lunak. Pengujian perangkat lunak merupakan aktifitas yang sangat mahal dan dapat menghabiskan waktu. Jika proses pengujian dapat dilakukan secara otomatis, maka efisiensi pengujian akan meningkat dan biaya pengembangan perangkat lunak dapat dikurangi. Oleh karena itu pengujian otomatis harus dirancang dengan baik agar dapat menemukan klasifikasi kesalahan secara sistematis dan dapat diperbaiki dalam waktu dan usaha yang minimal. Teknologi perangkat lunak berorientasi objek telah meningkat dengan cepat dalam hal perancangan dan pemrograman. Saat ini banyak penelitian dalam teknologi informasi dalam rangka pengembangan perangkat lunak terfokus pada tahapan pengujian. Pengujian terbagi atas sejumlah aktifitas yaitu pengujian unit, pengujian integrasi dan pengujian sistem. Pengujian unit difokuskan pada pengujian bagian terkecil (blok) program. Pengujian integrasi menguji kebenaran interaksi antara bagian-bagian sistem perangkat lunak yang diuji. Proses pengujian ini mengkombinasikan dan menguji bagian-bagian sistem secara bersama-sama. Pengujian sistem dilaksanakan ketika sistem telah diinstall sesuai dengan platform dan digunakan untuk menunjukkan apakah sistem sesuai dengan kebutuhan dan sesuai dengan objektivitasnya atau bukan. Teknik pengujian dikelompokkan atas pengujian kotak putih (white box testing) dan pengujian kotak hitam (black box testing). Pengujian kotak

Jurnal Universitas Paramadina Vol.2 No. 2, Januari 2003: 175-190

Januari 2003: 175-190 putih bertujuan untuk menguji struktural program. Pengujian terhadap proses pengembangan sistem dan dokumendokumen pendukung. Pengujian sebaiknya menemukan kesalahan yang tidak disengaja dan pengujian dinyatakan sukses jika berhasil memperbaiki kesalahan tersebut. Vol. Class sering dirancang untuk menerima urutan pesan-pesan tertentu yang mengakibatkan respon class terhadap pesan-pesan tersebut menjadi berbeda-beda Hal ini selanjutnya disebut dengan perilaku (behavior) class. Proses berarti sejumlah aktivitas yang didukung oleh dokumen yang mendeskripsikan aktivitas-aktivitas. namun model menjadi kompleks karena mencakup semua karakteristik class. sedangkan pengujian kotak hitam bertujuan untuk menguji fungsional perangkat lunak. Pengujian terhadap analisis dan model perancangan. Pengujian dapat dikategorikan atas : 1. 2. Dalam sistem berorientasi objek. 2. pengujian juga bertujuan untuk menunjukkan kesesuaian fungsi-fungsi perangkat lunak dengan spesifikasinya. pengujian model analisis dan perancangan adalah hal yang sangat penting. Perilaku tersebut dapat dikendalikan dengan nilai yang ter-enkapsulasi. 2 No. Selain itu. unit terkecil adalah objek dan class. Pada tulisan ini akan dibahas bagaimana pengujian berbasis status (State-Based Testing /SBT). 1994). urutan pesan atau keduanya. dengan alasan SBT menggunakan model transisi-status dapat mencakup semua objek yang ada. sistem merupakan sekumpulan komunikasi-komunikasi antar objek.Jurnal Universitas Paramadina. Dalam pengujian berorientasi objek. Masalah yang dapat muncul adalah bagaimana menguji perilaku class terhadap semua kombinasi nilai-nilainya dan apakah kombinasi tersebut benar. 176 . Pengujian Perangkat Lunak Berorientasi Objek Pengujian adalah suatu proses pengeksekusian program yang bertujuan untuk menemukan kesalahan (Berard.

Semantic correctness. Consistency. berarti model tersebut benar secara semantik. (inheritance) yang keanekaragaman (polymorphism). 1997). Pengujian dinamik merupakan eksekusi dengan data uji untuk menemukan kesalahan dalam kode. struktur dan teknik-teknik pengembangannya. Tujuannya adalah mencari kesalahan sedini mungkin dalam proses. Siegel (1996) mendefinisikan tiga model fungsional yang digambarkan dalam struktur objek model pengujian dalam gambar 1 berikut ini : 177 . Setiap model mempunyai konstruksi atau aturan yang menjadi dasar dalam langkah-langkah pengujian. dilanjutkan pada hasil perancangannya. Bahasa pemrograman berorientasi objek mempunyai ciri-ciri adanya pembungkusan dan pewarisan (encapsulation). Model Uji (Test Model) Berbagai model pengujian perangkat lunak berorientasi objek diusulkan oleh para peneliti. dan diakhir pada hasil pemrogramannya (Rochimah. Model yang dihasilkan pada analisis dan perancangan harus diperiksa terutama dalam hal : 1. dan 2. yaitu kesesuaian kelas dengan objek turunannya maupun kesesuaian asosiasi kelas dengan kelas lainnya. Pengujian secara statik dan dinamik untuk implementasi. yaitu kesesuaian model dengan domain permasalahan di dunia nyata. Fokus pengujian perangkat lunak berorientasi objek dimulai pada hasil analisisnya. Pengujian statik merupakan inspeksi kode untuk menemukan kesalahan logic. perancangan. Dalam pengujian class. Perangkat lunak berorientasi objek berbeda dari perangkat lunak procedural (konvensional) dalam hal analisis.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” 3. tetapi kesalahan dalam kode untuk sistem yang besar dan kompleks tidak dapat dihindarkan. membutuhkan dukungan pengujian tertentu. Jika model merefleksikan dunia nyata secara akurat.

Januari 2003: 175-190 Model Uji Document. resources. Model objek untuk “Model Pengujian” 178 . component. 2 No. version. review.Jurnal Universitas Paramadina. test object. Vol. reuse. 2. infrastructure Create. test suite. derive test objcts Exception State-transition Control flow Test objects Test object 1+ Data-control-flow Derive test object Derive test object Derive test object Test object 1+ MethodException Test object 1+ Transition-path Transactionflow Data--flow Derive test object Test object 1+ Transaction Derive test object Gambar 1.

d. Pada saat tertentu. b. Verifikasi bahwa status telah merepresentasikan himpunan satus dengan benar. sehingga lebih produktif dibanding dengan model lainnya. Cek aksi yang tidak benar(invalid). Dalam beberapa metoda perancangan berorientasi objek menggunakan model State-Transition untuk merepresentasikan perilaku class. c. yaitu : a. yaitu transisi dari setiap status untuk setiap method dalam class dan cek spesifikasi perancangannya. termasuk method (operasi) yang tidak ada atau method yang tidak sesuai dengan kebutuhan selama transisi. Boris Beizer memberikan beberapa aturan untuk pengecekan model “Transisi-status”. status bersifat statik. Setiap method dalam class mengekspresikan beberapa elemen dari keseluruhan perilaku class. Untuk model dinamik objek. Cel model untuk semua kemungkinan event suatu class. e. misal dengan representasi matriks sebagai kombinasi kemungkinan status dan event. dimana pada status tersebut tidak ada lintasan atau transisi. Model “transisi-status” dapat mencakup keseluruhan perilaku class. dimana simpul menyatakan status dan busur menyatakan transisi. State (Status) suatu objek adalah kombinasi dari semua nilai atribut. perlu ditambahkan transisi dari satu status ke status lainnya dan terjadilah suatu aksi. Cek status yang tidak terjangkau dan status mati. namun mempunyai beberapa kelemahan yaitu : 179 . Cek terhadap ketetapan satu tansisi untuk setiap kombinasi “eventstate”. Model ‘transisi-status’ digambarkan dengan grafik. Lakukan pengecekan.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” State-Transition Model Transisi dalam pengujian method (operasi) suatu class menunjukkan konsep perilaku class.

Daftar status tertentu untuk objek yang diuji. Model perilaku dapat mengakibatkan hilangnya kendali dan data yang salah. 2. 2 No. Oleh karena itu perlu adanya asumsi yang sama tentang perilaku class yang didasarkan pada kebutuhan dengan asumsi yang dibuat oleh pemrogram. Standar-standar tersebut harus terdokumentasi dengan baik. Namun pemakaian “transisi-status” secara hirarki dapat mengurangi kompleksitas tersebut. c. Langkah-langkah pengujian harus dikembangkan untuk setiap kasus uji dan berisi : a. Januari 2003: 175-190 1. 180 . Tujuan pengujian harus ditetapkan dengan jelas 3. 2.Jurnal Universitas Paramadina. Setiap kasus uji harus diidentifikasi secara unik dan secara eksplisit diasosiasikan dengan class yang diuji 2. maka model menjadi kompleks. maka proses pengujian telah menemukan kesalahan. Karena model dibentuk dari spesifikasi kebutuhan. 1997) adalah : 1. Metoda perancangan kasus uji untuk perangkat lunak berorientasi objek yang diusulkan Berrard (dalam Pressman. b. Karena model mencakup seluruh perilaku class dan superclass-nya. 3. mudah menyebabkan kesalahan sehingga perlu menguji model seperti halnya menguji kode. Daftar pesan (message) dan operasi yang akan dieksekusi sebagai akibat pengujian. Jika tidak sesuai dengan standar. sekumpulan kondisi yang harus dieksekusi dan hasil yang diharapkan berdasarkan tujuan yang telah ditetapkan. Rencana Uji (Test Plan) Perancangan pengujian dilakukan dengan menyiapkan standarstandar yang harus dipenuhi dalam proses pengujian. Vol. Daftar exception yang mungkin terjadi karena objek yang diuji. Kasus uji terdiri atas sekumpulan masukan untuk pengujian. bukan dari kode.

1)}. Model objek merepresentasikan kemungkinan perilaku objek.0. e. Suatu status dapat didefinisikan sebagai nilai vektor [McG-93] : V = <a1. Teknik Pengujian Berbasis Status (State-based testing / SBT) Pengujian berbasis status adalah bentuk implementasi pengujian class. Perubahan status dapat terjadi sebagai akibat dari antar objek saling mempengaruhi. (F. dimana setiap ai merupakan nilai current dari atribut suatu objek. (T. atribut dan hubungan antar objek dalam suatu sistem. StateChart dapat digunakan untuk membantu dalam SBT.1}. Transisi sebagai konsep perilaku class. SBT juga melakukan validasi interaksi yang terjadi antara transisi dan status suatu objek. Setiap method dari suatu class mengekspresikan beberapa elemen secara keseluruhan perilaku class.0).-1). A dan B. …. (F. (F. maka himpunan status objek adalah {(T. Informasi tambahan yang membantu pemahaman dan implementasi pengujian. Hal utama dalam SBT adalah pengujian nilai yang disimpan dalam suatu objek pada suatu saat. Jika suatu objek mempunyai dua atribut. dimana A dalah Boolean dan B = {-1. An> . Nilai tersebut merepresentasikan status dari suatu objek.0). Hal ini disebut kejadian (event). Transisi merupakan perubahan dari satu status ke status lainnya yang disebabkan oleh suatu event. a2. Suatu aksi (action) dapat terjadi selama terjadi transisi dari satu status ke status lainnya. 181 . (T. Perancangan status harus didasarkan pada observasi perilaku objek.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” d. Sekelompok nilai-nilai tersebut mempengaruhi perilaku (behavior) suatu objek.1). Himpunan status S suatu objek adalah produk kartesian dari himpunan status setiap atribut. Status suatu objek adalah kombinasi dari seluruh nilai-nilai atribut yang terkandung dalam objek. Daftar kondisi eksternal (misalnya mengubah lingkungan eksternal perangkat lunak).-1).

jika ada. 2 No. Tabel status disebut juga tabel transisi status. berarti terjadi kesalahan. State Table (Tabel Status) merupakan suatu model yang digunakan untuk menggambarkan perilaku sistem. yang berisi satu definisi class lengkap dengan atribut dan operasinya (method). Vol. Implementasi Pengujian Berbasis Status Implementasi sistem pengujian ini dimulai dengan membangun model objek yang memperlihatkan struktur data statik dari sistem dunia nyatanya (gambar 2). Januari 2003: 175-190 Pengujian berbasis status terhadap suatu class dapat dilihat method yang mempengaruhi status dalam empat kemungkinan berikut ini : 1. berarti terjadi kesalahan. 3. berpindah dari status tersebut. mengubah status objek ke status yang tidak sesuai. kotak yang merupakan interseksi antara baris dan kolom menentukan status selanjutnya dan keluaran. 4. direpresentasikan dengan baris dan kolom sebagai berikut : setiap baris menyatakan status. 2. mengubah status objek ke status yang tak terdefinisi. setiap kolom menyatakan kondisi masukan/transisi. Aturan sintaks program uji adalah : <id_class> = class <definisi atribut> <definisi operasi> end. 2. Program yang akan diuji tersebut telah benar secara leksik dan sintaks. {Definisi class turunan} <id_class> = class<id_superclass> 182 . mengubah status objek ke status baru yang sesuai. Program Uji Program uji sebagai file program sumber ditulis dalam bahasa Pascal Objek.Jurnal Universitas Paramadina.

traversal Status. tgluji Setuju.init. message active. transisi Buka.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” <definisi atribut> <definisi operasi> end. close programuji nama. yaitu (Tsai. batal. objek Input. openkasusuji.validasi. jenis. uji. t1 (. keyword.parse. Pemakai Nama.scan. simpan Sistem Pengujian control antarmuka button. dimana S1 adalah current state (status awal) dan S2 adalah next state (status akhir) yang akan dicapai setelah mengeksekusi 183 . lookahead.S2> .nilai Kasus uji Status.operasi. posisi. ch init. class. token. active penguji Openprogramuji. getchar Token. telusuri.tn). baca. simpan Status. st_akhir. atribut buka.deactive. simpan Gambar 2. transisi.. nilaistatus. batal Status. destroy. batal. transisi hasiluji data uji Status.batal. batal Table status St_awal. 1997): <S1. transisi Insert. informasi st Tampil. transisi source parser nama. opendatauji. nilai.dialogbox. Model Objek Sistem Pengujian Berbasis Status Data Uji dan Kasus Uji Suatu kasus uji dapat dinotasikan dalam tiga tuple. sintaks Statusteruji.

operasi-operasi yang ada adalah tambah data (PUSH/add) dan hapus data (POP/delete). untuk menyatakan bahwa stack penuh maka dapat dilihat dari ukuran stack yang diwakili oleh fungsi size yang bernilai Boolean. Vol. sebaliknya terjadi kesalahan. Dari deskripsi tersebut dapat ditentukan status-status untuk class STACK. maka ini merupakan kasus khusus dan berarti data uji yang diberikan tidak valid. transisi.tn). berarti benar. Studi Kasus Pada studi kasus pengujian berbasis status pada program berorientasi objek diberikan deskripsi singkat tentang struktur penyimpanan data dengan STACK berikut ini Suatu class STACK (of array) untuk penyimpanan data dengan sifat operasi stack adalah first-in last-out. yaitu : delete(integer) : untuk menghapus data dari stack 184 . t1.Jurnal Universitas Paramadina. dan full. notfull. jiks 0 < ukuran < n empty . Pada saat eksekusi pengujian dengan kasus uji. Dari hasil rancangan class. penuh (full) atau di antaranya (not full). Januari 2003: 175-190 transisi t1 (atau urutan message. 2. Selain itu. Kondisi-kondisi yang terjadi pada stack adalah kosong (empty). Untuk mengakses data dalam stack. jika status hasil sama dengan status yang seharusnya dicapai. jika ukuran stack = n (missal ditentukan n adalah ukuran stack maksimum) notfull . Dengan keterangan ukuran STACK adalah : full . >. yaitu empty. 2 No.. Jika himpunan kasus uji dituliskan <status awal. dapat didefinisikan beberapa method. jika ukuran = n Digunakan atribut tambahan count untuk menyatakan ukuran relatif data dalam stack. Dari kasus uji tersebut dapat diidentifikasikan data uji.

1) ……dst Status berikut (validasi terhadap nilai status) Empty (count = 0) Notfull (count = 1) Notfull (count = 2) Notfull (count = 1) Empty (count = 1) Notfull (count=1) ……………dst Tabel 2.1) Add(‘b’..dst Fungsi yang dieksekusi initStack() Add(‘a’.2) Delete() Delete(1) Add(‘c’.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” - add(character. Contoh Perubahan Status Objek dari Class STACK Current state -empty notfull notfull notfull empty …. Empty} NotFull Add NotFull {NotFull. Full} 185 .integer) : untuk menyatakan character apa yang ditambahkan pada stack dan berapa ukuran stack akibat penambahan data tersebut - initStack() : untuk menyatakan konstruksi objek stack isEmpty() : untuk menyatakan apakah stack kosong atau tidak size() : untuk mengecek ukuran stack Dari deskripsi tersebut dapat dinyatakan dalam table contoh perubahan status berikut ini Tabel 1. Tabel status dari deskripsi sistem Transisi Status Empty NotFull Full size Empty NotFull Full isEmpty Empty NotFull Full Del_data {NotFull.

<notfull.notfull>.<full.add.delData.…>. Tujuan pengujian : menguji perilaku class STACK 2.<notfull. Procedure Constructor. Januari 2003: 175-190 isEmpty start Empty delData Sizes Full isEmpty delData add delData add NotFull isEmpty sizes add sizes Gambar 3. Const Max = 10.Jurnal Universitas Paramadina.notfull>. <notfull.full>. 186 . NotFull.sizes.->.add.isEmpty.<notfull.<notfull. isEmpty c. Identifikasi Kasus Uji : a. Top : integer.full>. Procedure Add(x :string). Sizes.isEmpty. Procedure DelData(var x : string).add.<full.…> Himpunan Kasus Uji {<empty. Daftar Status : Empty. Daftar Exception : <empty. 2 No.sizes.delData.Empty>. Daftar Method : Add.delData.notfull>.notfull>. delData. Diagram Transisi Status (state chart) Rencana Uji 1. Tab_char : array[1.add. Full b.delData.<empty. Type TStack = class Size : integer. <full.delData.Max] of char.->} Program Uji Stack Unit programuji.notfull>. Vol. 2. <empty. <full.notfull>.sizes.empty>. <empty.<full.isEmpty.empty>..

Begin If top<size then Begin Top := top+1. Function TStack. End. Implementation Procedure TStack. Begin Sizes := top.Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” Function sizes : integer. End. End. End. Tab_char[top]:=x. Top := 0.Add(x:string). end. End.Constructor. end.isEmpty : Boolean. Top := top-1. Function isEmpty : Boolean. Begin Size := max. End. End. Procedure TStack.DelData(var x:string). Procedure TStack. Var S : TStack. Dari program uji tersebut terlihat bahwa : nilai batas ukuran STACK adalah 10 (nilai batas inilah yang dijadikan atribut peubah status class) instance yang diuji adalah S 187 .Sizes:integer. Function TStack. Begin If top>0 then Begin X := tab_char[top]. Begin If top = 0 then isEmpty := true else isEmpty := false.

188 . Vol.add(‘i’) S.add(‘e’) S.Sizes S.add(‘h’) S.add(‘f’) S. 2 No. maka hasil uji adalah OK. jika pengujian benar sintaks.add(‘g’) S.add(‘c’) S. jika terjadi kesalahan dalam pengisian data uji.pas Data uji S. yaitu benar sintaks dan nilai atribut untuk uji (nilai status).add(‘a’) S. 2.add(‘j’) S. namun salah nilai atribut.Jurnal Universitas Paramadina. maka menghasilkan FAIL.add(‘d’) S. Kesalahan data uji tersebut meliputi o o o Penutup salah sintaks. maka proses pengujian gagal dan tidak menghasilkan tabel pengujian.add(‘b’) S.add(‘k’) Current state Empty NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull Fungsi eksekusi Add Add Add Sizes Add Add Add Add Add Add Add Add Next state NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull NotFull Nilai status 1 2 3 3 4 5 6 7 8 9 10 10 Hasil OK OK OK OK OK OK OK OK OK OK OK FAIL Dari table hasil pengujian tersebut bahwa : jika pengujian benar. salah nama method. salah nama objek yang diuji. Januari 2003: 175-190 Hasil Pengujian Program uji : programuji.

Perilaku status yang direpresentasikan dalam transisi status sangat membantu dalam mendeskripsikan perilaku class berdasarkan kondisi-kondisi dari nilai instance-nya. Hal ini dikarenakan rumit dan kompleksnya interpretasi setiap method dengan nilai parameter yang akan diuji. Dinamik karena penguji dapat memberikan deskripsi transisi status sesuai dengan sistem yang akan diuji. Statik. Pengujian berbasis status ini termasuk dalam pengujian unit dan semi statik-dinamik. 189 . karena implementasinya masih terbatas pada satu class program uji (yaitu STACK).Retno Hendrowati “Pengujian Perangkat Lunak Berorientasi Obyek” Dari uraian di atas dapat dinyatakan bahwa pengujian berbasis status pada perangkat lunak berorientasi objek dilakukan dengan aturanaturan dalam representasi data uji yang didasarkan pada kasus uji.

1990. A Method for Automatic Class Testing (MACT) Object Oriented Program Using A State-based Testing Method.Graw Hill Inc. Vol. Testing Object : State-based testing. First Edition. Binder. Object Oriented Modelling and Design. Siti. et al. Rochimah. RSBC corp. New York: Sam Publishing Pressman. Penerapan Method Berarah Objek pada Kasus Penjadwalan. New York: Van Nostrand Reinhold Berard. et al. Fifth European Edinburg: Conf. Borland Delphi Developer’s Guide. 1997. 1995.com. Object Oriented Software Testing an Hierarchical Approach. Software Engineering a Practitioner’s Approach.Jurnal Universitas Paramadina. 1995. Issues in the Testing of Object-Oriented Software. James. 2nd Edition. 1997. Chicago: Object Magazine. Software Testing Analysis and Review 190 . Pacheco. 1994. 2 No. 4th edition. article at www. Roger S. Berard Software Engineering Inc.toa. Xavier. The Approach for sistem testing. Boris. New York: Prentice-Hall International Siegel. Bandung: Institut Teknologi Bandung Rumbaugh. Robert V. 1991. Canada: John Wiley & Sons Inc. Shel. Singapore: Mc. Software Testing Techniques. Tsai.. 1997. Januari 2003: 175-190 Daftar Pustaka Beizer. Edward V. 1996. 2.