Pembangunan Kakas Pembangkit Kasus Uji Unit Testing Berdasarkan xUnit Framework
LAPORAN TUGAS AKHIR
Disusun sebagai syarat kelulusan tingkat sarjana
Oleh: Dyah Ayuni Wijayanti / 13504028
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA INSTITUT TEKNOLOGI BANDUNG 2008
Lembar Pengesahan Program Studi Sarjana Teknik Informatika Pembangunan Kakas Pembangkit Kasus Uji Unit Testing Berdasarkan xUnit Framework
Tugas Akhir Program Studi Sarjana Teknik Informatika ITB
Oleh Dyah Ayuni Wijayanti / 13504028
Telah disetujui dan disahkan sebagai laporan tugas akhir di Bandung, pada tanggal 27 Maret 2009
Pembimbing
Yani Widyani, S.T., M.T. NIP. 132164562
ii
RINGKASAN Pada Tugas Akhir ini dibangun sebuah kakas pembangkit kasus uji untuk proses unit testing berdasarkan model kasus uji pada xUnit Framework. Unit testing adalah proses paling awal dari rangkaian pengujian perangkat lunak yang dilakukan selama masa pengembangan perangkat lunak. Terdapat framework yang mampu mengotomatisasi proses unit testing yaitu xUnit framework. xUnit Framework ini memiliki implementasi dalam berbagai macam bahasa pemrograman misalnya JUnit untuk bahasa Java. Penggunaan xUnit Framework ini masih tergantung pada bahasa pemrograman, belum ada kakas bantu yang mampu menerima masukan kasus uji dalam bentuk yang general tanpa tergantung bahasa pemrograman.
Pada tahap awal, untuk mendapatkan model general dari kasus uji, dilakukan analisis beberapa contoh kasus uji pada empat xUnit framework yaitu JUnit untuk bahasa Java, CUnit untuk bahasa C, PHPUnit untuk bahasa PHP, dan JSUnit untuk bahasa JavaScript. Dari analisis ini kemudian didapatkan sebuah model general kasus uji untuk unit testing. Selain itu, dilakukan pula analisis proses konversi kasus uji general ke dalam sebuah bahasa pemrograman. Analisis ini menghasilkan sebuah model file konfigurasi yang digunakan untuk membantu proses konversi ke sebuah bahasa pemrograman. Model kasus uji general serta file konfigurasi yang dirumuskan kemudian diimplementasikan dalam pembangunan kakas pembangkit kasus uji untuk unit testing bernama GXUnit.
GXUnit menerima masukan berupa komponen kasus uji yang didapat dari masukan pengguna kemudian membangkitkan kasus uji general dalam bentuk dokumen XML. Kasus uji dalam dokumen XML ini dapat dikonversi ke bahasa pemrograman Java dan selanjutnya kasus uji ini dapat dijalankan dengan memanfaatkan JUnit sehingga kemudian pengguna bisa mendapatkan laporan hasil pengujiannya.
Kesimpulan yang dapat diambil dari tugas akhir ini adalah model kasus uji general berhasil disusun melalui analisis terhadap beberapa kasus uji dan model kasus uji general ini berhasil dimanfaatkan dalam implementasi kakas pembangkit kasus uji unit testing GXUnit. Pengguna dapat memanfaatkan kakas GXUnit untuk membangkitkan kasus uji general dalam bentuk XML, mengkonversinya ke dalam bahasa Java serta menjalankan pengujian dengan memanfaatkan JUnit.
Kata Kunci : Software Testing, Unit Testing, xUnit Framework, Kasus Uji.
iii
KATA PENGANTAR Assalamu’alaikum Warahmatullaahi Wabarakatuh Puji syukur penulis panjatkan kepada Allah SWT atas limpahan berkah, rahmat, dan kesabaran
yang diberikan-Nya
sehingga
pengerjaan Tugas
Akhir
yang berjudul
“Pembangunan Kakas Pembangkit Kasus Uji Unit Testing Berdasarkan xUnit Framework” ini dapat diselesaikan dengan baik.
Selama masa pengerjaan Tugas Akhir, telah banyak pihak yang senantiasa memberikan dukungan kepada penulis. Oleh karena itu, pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada: 1. Ibu Yani Widyani, S.T., M.T. selaku dosen pembimbing yang telah memberikan banyak bantuan, arahan, dan bimbingan yang sangat berharga sehingga penulis dapat menyelesaikan Tugas Akhir ini dengan baik. 2. Ibu Fazat Nur Azizah, S.T., M.Sc. selaku dosen penguji pada presentasi proposal, seminar, dan sidang Tugas Akhir atas berbagai kritik, saran, dan masukan yang telah diberikan. 3. Ibu Dra. Christine Suryadi, M.T. selaku dosen penguji pada pra sidang dan sidang Tugas Akhir atas berbagai kritik, saran, dan masukan yang telah diberikan. 4. Bapak Dr. Ir. Munawar Ahmad ZA selaku dosen wali yang telah menemani perjalanan panjang penulis selama empat tahun lebih di Teknik Informatika ITB. 5. Seluruh dosen program studi Teknik Informatika ITB yang telah memberikan banyak pengetahuan serta didikan yang sangat berharga pagi penulis. 6. Segenap staf Tata Usaha Akademik dan Tata Usaha Laboratorium, terutama Pak Ade, Bu Nurhayati, Pak Rasidi, Bu Titi, Pak Maman, dan Pak Wawan atas bantuan administrasi selama pengerjaan Tugas Akhir. 7. Bapak Soebono Yekti P., Ibu Sri Rahayu Titi S., adik Nurcahyo Bagus P. atas perhatian, kasih sayang, dukungan, dan doa yang tak ternilai harganya. 8. Muhammad Randy Desmond Ibrahim Nasution atas segala bantuan, semangat, dan kesabaran yang senantiasa menyertai penulis selama pengerjaan Tugas Akhir. 9. Teman-teman “geng kribo”, Muhamad Fajrin Rasyid, Ilham Fatoni, Fitrasani, dan Ivan Kurniawan yang telah menjadi sahabat baik bagi penulis sejak awal perkuliahan hingga saat ini. 10. Teman-teman satu bimbingan, Bhimantyo, Wisnu, dan Aqsa atas kerjasama dan tukar sharing yang banyak membantu penulis.
iv
11. Teman-teman seperjuangan wisuda April 2009: Riyani, Vania, Simon, Philip, Sila, Sherry, Alifia, Abigael, Diah Eka, Robbi, Yudhie, Andzarrahim, Zufri, Catherine, Igor, Herianto, Stefanus, Eka, Erry, Ray, Shinta, Rachmat, Kania, Julian. 12. Teman-teman Laboratorium RPL, Rindhu Astry, Vicky Nugraha, Reisha, Tina, dan asisten Lab RPL lainnya. 13. Rekan “plurker”, Zakka Fauzan, Gahayu Handari, Mia Kamayani, Dendy Duta, Ditto, Lafrania, Rabindra, Amir, Petra atas segala obrolan plurk yang selalu bisa menghibur penulis. 14. Teman-teman Surabaya, Dana Satriya, Carol Dewita, Mega Kusaladewi, Aditya Rachmadi atas segala semangat dan bantuannya. 15. Dyah, Paul, Ratih, Redya, Angela, Amalia, Mira, Ade Jamak, Iqbal, Ido, Pradita, Ryan Sosiawan, Rian Permata, Rangga, Yudha, Tessa, Heryanto, Anne, Dadan, Manda yang telah menjadi teman baik penulis selama perkuliahan di Teknik Informatika ITB. 16. Seluruh teman IF 2004 yang telah memberikan kenangan berharga dan selalu menyertai penulis dalam suka dan duka selama masa perkuliahan. 17. Teman-teman ITB, HMIF, dan Informatika ITB yang tidak dapat disebutkan satu persatu. 18. Semua pihak yang telah memberikan bantuan dalam berbagai bentuk yang membantu penulis menyelesaikan Tugas Akhir ini.
Semoga Tugas Akhir ini dapat memberikan manfaat bagi banyak pihak, baik penulis maupun pembaca. Penulis menyadari bahwa penyusunan Tugas Akhir ini tidak lepas dari kekurangan. Oleh karena itu, kritik serta saran membangun dari pembaca sangat diharapkan untuk bekal perbaikan di masa yang akan datang.
Wassalamu’alaikum Warahmatullaahi Wabarakaatuh
Bandung, Maret 2009
Penulis
v
DAFTAR ISI
RINGKASAN ............................................................................................................. iii KATA PENGANTAR ................................................................................................. iv DAFTAR ISI................................................................................................................ vi DAFTAR GAMBAR ................................................................................................... ix DAFTAR TABEL ........................................................................................................ x BAB I PENDAHULUAN.......................................................................................... I-1 1.1
Latar Belakang .......................................................................................................... I-1
1.2
Rumusan Masalah ..................................................................................................... I-2
1.3
Tujuan ....................................................................................................................... I-2
1.4
Batasan Masalah ....................................................................................................... I-3
1.5
Metodologi ................................................................................................................ I-3
1.6
Sistematika Pembahasan ........................................................................................... I-4
BAB II TINJAUAN PUSTAKA ............................................................................ II-1 2.1
Software Testing...................................................................................................... II-1 2.1.1 Pengertian ........................................................................................................ II-1 2.1.2 Tujuan Software Testing .................................................................................. II-1 2.1.3 Metode Pengujian Perangkat Lunak ................................................................ II-2 2.1.4 Proses Pengujian Perangkat Lunak .................................................................. II-3 2.1.4.1 Unit Testing .............................................................................................. II-3 2.1.4.2 Integration Testing ................................................................................... II-5 2.1.4.3 System Testing .......................................................................................... II-6 2.1.4.4 User Acceptance Testing .......................................................................... II-6
2.2
xUnit Framework .................................................................................................... II-7 2.2.1 Tujuan .............................................................................................................. II-7 2.2.2 Fitur Utama ...................................................................................................... II-8 2.2.3 Struktur Dasar Pengujian ................................................................................. II-8
2.3
XML........................................................................................................................ II-9 2.3.1 Dokumen Well-Formed ................................................................................... II-9 2.3.2 Dokumen Valid.............................................................................................. II-10
BAB III ANALISIS ................................................................................................ III-1 3.1
Analisis Model Kasus Uji ...................................................................................... III-1
vi
3.1.1 Model Umum Kasus Uji pada bahasa Java (JUnit) ........................................ III-1 3.1.2 Model Umum Kasus Uji pada bahasa C (CUnit) ........................................... III-6 3.1.3 Model Umum Kasus Uji pada bahasa PHP (PHPUnit) ................................ III-10 3.1.4 Model Umum Kasus Uji pada bahasa JavaScript (JSUnit) .......................... III-14 3.2
Analisis Model Umum Kasus Uji ........................................................................ III-18 3.2.1.1 Perbandingan Kasus Uji ........................................................................ III-18 3.2.1.2 Model Umum Kasus Uji dalam XML ................................................... III-21
3.3
Konversi Model Umum Kasus Uji ke Bahasa Pemrograman .............................. III-25 3.3.1 Kode Program yang akan Diuji .................................................................... III-25 3.3.2 Inisialisasi Variabel yang Digunakan ........................................................... III-26 3.3.3 Prosedur Pengujian ....................................................................................... III-27 3.3.4 Pembentukan Test Suite ................................................................................ III-29 3.3.5 Format File Konfigurasi ............................................................................... III-31
BAB IV ANALISIS dan PERANCANGAN PERANGKAT LUNAK .............. IV-1 4.1
Kebutuhan Perangkat Lunak .................................................................................. IV-1 4.1.1 Deskripsi Umum Sistem ................................................................................. IV-1 4.1.2 Spesifikasi Kebutuhan Perangkat Lunak ........................................................ IV-2 4.1.3 Model Use Case.............................................................................................. IV-3 4.1.3.1 Diagram Use Case ................................................................................... IV-3 4.1.3.2 Definisi Aktor .......................................................................................... IV-4 4.1.3.3 Definisi Use Case .................................................................................... IV-4 4.1.3.4 Skenario Use Case................................................................................... IV-5
4.2
Model Analisis ....................................................................................................... IV-6 4.2.1 Realisasi Use Case Tahap Analisis................................................................. IV-6 4.2.2 Kelas Analisis ................................................................................................. IV-7
4.3
Model Perancangan ................................................................................................ IV-7 4.3.1 Batasan Perancangan ...................................................................................... IV-7 4.3.2 Perancangan Rinci Struktur Kelas .................................................................. IV-8 4.3.3 Kelas Perancangan .......................................................................................... IV-8 4.3.4 Perancangan Antarmuka ................................................................................. IV-9 4.3.4.1 Perancangan Antarmuka ManageKasusUji ............................................. IV-9 4.3.4.2 Perancangan Antarmuka CreateKasusUji ............................................. IV-11 4.3.4.3 Perancangan Antarmuka UpdateKasusUji ............................................ IV-11 4.3.4.4 Perancangan Antarmuka DeleteKasusUji ............................................. IV-12 4.3.4.5 Perancangan Antarmuka KonversiKasusUji ......................................... IV-12 4.3.4.6 Perancangan Antarmuka RunningKasusUji .......................................... IV-13
vii
BAB V IMPLEMENTASI DAN PENGUJIAN.....................................................V-1 5.1
Implementasi ........................................................................................................... V-1 5.1.1 Lingkungan Implementasi ............................................................................... V-1 5.1.2 Batasan Implementasi ...................................................................................... V-2 5.1.3 Implementasi Perangkat Lunak ....................................................................... V-2 5.1.4 Implementasi Antarmuka................................................................................. V-3
5.2
Pengujian ................................................................................................................ V-5 5.2.1 Tujuan Pengujian ............................................................................................. V-5 5.2.2 Lingkungan Pengujian ..................................................................................... V-5 5.2.3 Langkah Pengujian .......................................................................................... V-5 5.2.4 Hasil dan Evaluasi Pengujian .......................................................................... V-5
BAB VI PENUTUP ................................................................................................ VI-1 6.1
Kesimpulan ............................................................................................................ VI-1
6.2
Saran ...................................................................................................................... VI-2
DAFTAR REFERENSI .............................................................................................. xi Lampiran A Acuan Teknis........................................................................................xii
viii
DAFTAR GAMBAR
Gambar II-1 Tingkatan pengujian perangkat lunak beserta proses pengujiannya[PEZ08] ... II-3 Gambar III-1 Diagram Class pada JUnit [WEB06].............................................................. III-2 Gambar III-2 Struktur CUnit ................................................................................................ III-6 Gambar IV-1 Arsitektur GXUnit.......................................................................................... IV-1 Gambar IV-2 Diagram Use Case GXUnit............................................................................ IV-3 Gambar IV-3 Sequence Diagram Analisis ManageKasusUji dan CreateKasusUji untuk skenario normal .................................................................................................................... IV-6 Gambar IV-4 Diagram Kelas Analisis CreateKasusUji ....................................................... IV-7 Gambar IV-5 Rancangan Antarmuka ManageKasusUji ...................................................... IV-9 Gambar IV-6 Diagram Kelas Perancangan Keseluruhan ................................................... IV-10 Gambar IV-7 Rancangan Antarmuka Create Kasus Uji .................................................... IV-11 Gambar IV-8 Antarmuka UpdateKasusUji untuk memilih file kasus uji ........................... IV-12 Gambar IV-9 Antarmuka DeleteKasusUji ......................................................................... IV-12 Gambar IV-10 Antarmuka KonversiKasusUji ................................................................... IV-13 Gambar IV-11 Antarmuka Running Kasus Uji .................................................................. IV-13 Gambar V-1 Implementasi Antarmuka Create Kasus Uji ..................................................... V-4 Gambar V-2 Implementasi Antarmuka Delete Kasus Uji ..................................................... V-4
ix
DAFTAR TABEL
Tabel II-1 Contoh Anggota xUnit Framework ...................................................................... II-7 Tabel III-1 Perbandingan Komponen Penyusun Test Case ............................................... III-18 Tabel III-2 Komponen Wajib dalam Kasus Uji.................................................................. III-20 Tabel IV-1 Spesifikasi Kebutuhan Fungsional Perangkat Lunak......................................... IV-2 Tabel IV-2 Spesifikasi Kebutuhan Non-Fungsional Perangkat Lunak ................................ IV-3 Tabel IV-3 Definisi Aktor .................................................................................................... IV-4 Tabel IV-4 Definisi Use Case .............................................................................................. IV-4 Tabel IV-5 Skenario ManageKasusUji dan CreateKasusUji ............................................... IV-5 Tabel IV-6 Kelas Analisis .................................................................................................... IV-7 Tabel IV-7 Daftar Kelas Perancangan .................................................................................. IV-8 Tabel V-1 Daftar Rinci Kelas Implementasi ......................................................................... V-2 Tabel V-2 Hasil Implementasi Antarmuka ............................................................................ V-3 Tabel V-3 Hasil Pengujian .................................................................................................... V-6
x