• Tidak ada hasil yang ditemukan

PENGUJIAN PERANGKAT LUNAK DENGAN METODE PENCARIAN BERBASIS ALGORITMA GENETIKA

N/A
N/A
Protected

Academic year: 2022

Membagikan "PENGUJIAN PERANGKAT LUNAK DENGAN METODE PENCARIAN BERBASIS ALGORITMA GENETIKA"

Copied!
93
0
0

Teks penuh

(1)

PENGUJIAN PERANGKAT LUNAK DENGAN METODE PENCARIAN BERBASIS ALGORITMA

GENETIKA

Skripsi

Oleh Macia Hauna 1113091000065

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERISTAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA

2017

(2)

Skripsi

Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Komputer (S.Kom)

Oleh Macia Hauna 1113091000065

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERISTAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA

2017

(3)

ii

(4)
(5)

iv

PERNYATAAN ORISINALITAS Dengan ini saya menyatakan bahwa:

1. Skripsi ini merupakan hasil karya asli saya yang diajukan untuk memenuhi salah satu persyaratan memperoleh gelar Strata 1 di UIN Syarif Hidayatullah Jakarta.

2. Semua sumber yang saya gunakan dalam penulisan ini telah saya cantumkan sesuai dengan ketentuan yang berlaku di UIN Syarif Hidayatullah Jakarta.

3. Apabila di kemudian hari terbukti karya ini bukan hasil karya asli saya atau merupakan hasil jiplakan karya orang lain, maka saya bersedia menerima sanksi yang berlaku di UIN Syarif Hidayatullah Jakarta.

Jakarta, November 2017

Macia Hauna

(6)

v tangan di bawah ini:

Nama : Macia Hauna NIM : 1113091000065 Program Studi : Teknik Informatika Fakultas : Sains dan Teknologi Jenis Karya : Skripsi

demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Islam Negeri Syarif Hidayatullah Jakarya Hak Bebas Royalti Noneksklusif (Non-exclesusive Royalty Free Right) atas karya ilmiah saya yang berjudul:

PENGUJIAN PERANGKAT LUNAK DENGAN METODE PENCARIAN BERBASIS ALGORITMA GENETIKA

beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Noneksklusif ini Universitas Islam Negeri Syarif Hidayatullah Jakarta berhak menyimpan, mengalihmedia/ formatkan, mengelola dalam bentuk pangkalan data (database), merawat, dan mempublikasikan tugas akhir saya selama tetap mencantumkan nama saya sebagai penulis/ pencipta dan sebagai pemilik Hak Cipta. Demikian pernayataan ini saya buat dengan sebenarnya.

Jakarta, November 2017 Macia Hauna

(………)

(7)

vi

KATA PENGANTAR

Assalamu’alaikum Warahmatullah Wabarakatu.

Puji syukur penulis panjatkan kepada Allah SWT karena rahmat dan karunianya penulis dapat menyelesaikan penelitian hingga akhir penulisan skripsi. Proses penyelesaian skripsi ini tidak lepas dari berbagai bantuan, dukungan, saran dan kritik yang telah penulis dapatkan, oleh karena itu pada kesempatan ini penulis ingin mengucapkan terima kasih kepada:

1. Kedua orang tua penulis, bapak dan ibu atas segala doa, kasih sayang dukungan, pengertian dan nasehat yang tidak pernah lelah diberikan kepada penulis. Terima kasih sebanyak-banyaknya hingga saat ini penulis dapat menyelesaikan skripsi ini;

2. Kepada kakak penulis, Kacaca dan kepada keenam adik penulis, Savana, Fidau, Sacci, Runa, Dokhma dan Elena, yang selalu menyemangati dan menghibur penulis;

3. Bapak Dr. Agus Salim, M.Si., selaku Dekan Fakultas Sains dan Teknologi UIN Syarif Hdayatullah Jakarta;

4. Ibu Arini, MT., selaku ketua Program Studi Teknik Informatika, serta Bapak Feri Fahrianto, M.Sc. selaku sekretaris Program Studi Informatika;

5. Bapak Rizal Broer Bahaweres M.Kom., selaku Dosen Pembimbing I dan Ibu Siti Ummi Masruroh, M.Sc., selaku Dosen Pembimbing II yang telah membimbing, meluangkan waktu, memotivasi, memberi kritik dan saran yang membangun dari awal hingga penulis dapat menyelesaikan skripsi;

6. Seluruh Dosen, Staf Karyawan Fakultas Sains dan Teknologi, khusunya Program Studi Teknik Informatika yang telah memberikan bantuan dan kerjasama dari awal perkuliahan hingga sekarang.

7. Kepada sahabat-sahabat penulis, Resisca Audia Deyani, sahabat sepembimbingan dan senasib dari awal semester satu, yang selalu saling mendukung dan memberi semangat. Sahila Diniswara sahabat dari satu

(8)

vii

Tami, Rais dan Anto, penulis ucapkan terima kasih yang sebanyak- banyaknya atas kerja sama, susah-senang dan juga kenang-kenangan yang berharga dari awal masa perkuliahan hingga akhir.

Penulis mohon maaf atas segala kekurangan dan apabila ada salah kata bagi semua pihak. Penulis menyadari bahwa penulisan skripsi ini masih jauh dari kesempurnaan, namun penulis berharap skripsi ini dapat memberikan manfaat bagi penulis, pembaca, dan perkembangan ilmu pengetahuan khususnya di bidang Teknik Informatika.

Jakarta, November 2017

Macia Hauna

(9)

viii Nama : Macia Hauna

Program Studi : Teknik Informatika

Judul : Pengujian Perangkat Lunak Dengan Metode Pencarian Berbasis Algoritma Genetika

ABSTRAK

Tahap terkecil pengujian atau unit testing merupakan tahap awal pengujian setelah coding selesai dibangun. Pada tahap ini dibutuhkan sekumpulan test data untuk membentuk test case untuk pengujian. Proses perancangan sekumpulan data untuk pengujian disebut dengan test data generation. Menurut Mahadik & Thakore proses test data generation secara manual menghabiskan waktu sekitar 50% dari total waktu pembangunan perangkat lunak. Berdasarkan penelitian yang dilakukan menggunakan metode pencarian berbasis algoritm genetika dapat menghasilkan test case yang lebih optimal dengan waktu pengujian yang lebih efisien. Tujuan dari penelitian ini adalah melakukan pengujian secara otomatis menggunakan metode pencarian berbasis algoritma genetika. Menggunakan metode pencarian berbasis algoritma genetika menghasilkan 14 test case dalam waktu 30s atau 0.5 menit untuk kode program sebanyak 89 line of code. Berdasarkan parameter pengujian code coverage keberhasil pengujian adalah 78% dan parameter mutant analysis adalah 70%. Berdasarkan nilai akurasi dari kinerja mesin pencari maka didapatkan nilai akurasi sebesar 63%.

Kata kunci : metode pencarian, test data generation, test cases algoritma genetika

Jumlah Pustaka : 34 (Tahun 2011-2017)

Jumlah halaman : VI BAB + xvii halaman + 62 halaman + 14 lampiran

(10)

ix ABSTRACT

The smallest phase of testing or unit testing is the initial stage of testing after coding completed. At this stage it takes a set of test data to form a test case for testing. The process of designing a set of data for testing is called test data generation. According to MAhadik & Thakore manually generating test data is time consuming, it takes around 50% time of the total software life-cycle. Based on research conducted search based software testing using genetic algorithm can generate more optimal test cases with a more efficient testing time. The purpose of this research is to perform test data generation automatically using search based testing-genetic algorithm yields 14 test cases in 30s or 0.5 minutes for the program’s source code of 89 line of code. Based on coverage code parameter the testing result is 78% and the mutant analysis parameter is 70%. The value of the accuracy of search engine for performance testing the accuracy is 63%.

Keyword : search-based testing, test data generation, test cases, genetic algorithm

Reference : 34 (Year 2011-2017)

Pages : VI chapter + xvii pages + 62 pages + 14 attachments

(11)

x

DAFTAR ISI

LEMBAR PERSETUJUAN ... Error! Bookmark not defined.

LEMBAR PENGESAHAN ... Error! Bookmark not defined.

PERNYATAAN ORISINALITAS ... iv

PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI ... v

KATA PENGANTAR... vi

ABSTRAK... viii

ABSTRACT ... ix

DAFTAR ISI ... x

DAFTAR GAMBAR ... xii

DAFTAR TABEL ... xiii

DAFTAR GRAFIK ... xiv

DAFTAR ISTILAH ... xv

DAFTAR LAMPIRAN ... xvi

BAB I PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 5

1.3. Batasan Masalah ... 6

1.4. Tujuan Penelitian ... 6

1.5. Manfaat Penelitian ... 7

1.6. Metode Penelitian ... 7

1.7. Sistematika Penulisan ... 8

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI ... 10

Pengujian Perangkat Lunak ... 10

2.1.1 Definisi Pengujian Perangkat Lunak ... 10

2.2. Unit Testing ... 11

2.1.1. Path Testing ... 11

2.3. Search Based Software Testing ... 12

2.4. Test data Generation... 14

2.5. Definisi Test data, Test cases dan Test Suites ... 15

2.6. EvoSuite ... 15

2.6.1. EvoSuite Test Suite Generation ... 16

(12)

xi

2.8.1. PIT Mutation Testing ... 19

2.9. CodePro AnalytiX ... 20

2.10. Framework JUnit ... 20

2.11. Triangle Program ... 21

2.12. Tinjauan Pustaka ... 22

BAB III METODOLOGI PENELITIAN ... 26

3.1. Kerangka Berfikir ... 26

3.2. Metode Pengumpulan Data ... 27

3.3. Metode Simulasi (Nomor 11-15 pada Gambar 3.1) ... 27

BAB IV ANALISA DAN IMPLEMENTASI SIMULASI ... 30

4.1. Analisa Source code ... 30

4.2. Pengujian Manual Menggunakan Framework JUnit ... 32

4.3. Pengujian Otomatis Menggunakan CodePro AnalytiX ... 33

4.4. Pengujian Otomatis Metode Pencarian Berbasis Algoritma Genetika ... 34

4.4.1. Code Pre-Processing ... 35

4.4.2. Proses Test Data Generation ... 39

4.4.3. Menghasilkan Test Case Menggunakan EvoSuite ... 45

4.4.4. Menghitung Nilai Precision dan Recall... 48

BAB V HASIL DAN PEMBAHASAN ... 49

5.1 Hasil Pengujian Manual dengan Framework JUnit ... 49

5.2 Hasil Pengujian Otomatis dengan CodePro AnalytiX ... 50

5.3 Hasil Pengujian SBST Menggunakan EvoSuite ... 52

5.4 Hasil Akhir Percobaan ... 54

BAB VI KESIMPULAN DAN SARAN... 58

6.1 Kesimpulan ... 58

6.2 Saran ... 59

DAFTAR PUSTAKA ... 60

LAMPIRAN ... 63

(13)

xii

DAFTAR GAMBAR

Gambar 1. 1 Level Pengujian ... 1

Gambar 1. 2 Grafik Biaya dan Tahap Pengujian ... 2

Gambar 1. 3 Interaksi Antara Metode Pencarian dan Pengujian ... 3

Gambar 1. 4 Grafik Publikasi SBST ... 3

Gambar 1. 5 Laporan Hasil Kinerja EvoSuite ... 4

Gambar 2. 1 V Model Siklus Pengujian ... 10

Gambar 2. 2 Siklus Unit testing ... 11

Gambar 2. 3 (a) struktur dasar if-then-else (b) struktur dasar loop ... 12

Gambar 2. 4 Test Data Generator Model ... 14

Gambar 2. 5 Cara Kerja EvoSuite... 17

Gambar 2. 6 Pseudocode Algoritma Genetika EvoSuite ... 17

Gambar 2. 7 Gambar Segitiga ... 21

Gambar 3. 1 Metodologi Penelitian ... 26

Gambar 4. 1 Arsitektur Pengujian Manual ... 32

Gambar 4. 2 Hasil Menjalankan Test Case Manual ... 32

Gambar 4. 3 Arsitektur Pengujian Otomatis ... 33

Gambar 4. 4 Hasil Menjalankan Test Case Otomatis ... 34

Gambar 4. 5 Arsitektur Pengujian Otomatis Dengan Metode Pencarian Berbasis Algoritma Genetika ... 34

Gambar 4. 6 Flowgraph Triangle ... 38

Gambar 4. 7 Tampilan EvoSuite Pada Eclipse ... 46

Gambar 4. 8 Proses Test Data Generation EvoSuite ... 47

Gambar 4. 9 Hasil Test cases Otomatis SBST ... 47

Gambar 4. 10 Hasil Menjalankan Test Case SBST ... 48

Gambar 5. 1 (a) Source Code Triangle (b) Test Case Manual ... 49

Gambar 5. 2 Hasil Mutant Analysis Test Case JUnit ... 50

Gambar 5. 3 (a) Source Code Triangle (b) Test Case Otomatis ... 51

Gambar 5. 4 Hasil Mutant Analysis Test Case Otomatis ... 52

Gambar 5. 5 (a) Source Code Triangle (b) Test Case Otomatis SBST ... 53

Gambar 5. 6 Hasil Mutant Analysis Test Case SBST ... 54

(14)

xiii

Tabel 2. 2 Klasifikasi EvoSuite ... 15

Tabel 2. 3 Klasifikasi JUnit ... 20

Tabel 2. 4 Test case Triangle ... 21

Tabel 2. 5 Studi Literatur ... 23

Tabel 4. 1 Detail Program Triangle ... 31

Tabel 4. 2: Proses Tokenizing 1 ... 35

Tabel 4. 3: Proses Tokenizing 2... 36

Tabel 4. 4: Proses Tokenizing 3... 36

Tabel 4. 5: Proses Tokenizing 4... 36

Tabel 4. 6: Proses Tokenizing 5... 37

Tabel 4. 7: Test Data ... 39

Tabel 4. 8: Populasi Awal ... 40

Tabel 4. 9: Evaluasi Nilai Fitness ... 41

Tabel 4. 10: Inverse Fitness ... 41

Tabel 4. 11: Nilai Probabilitas ... 42

Tabel 4. 12: Fitness Kumulatif ... 42

Tabel 4. 13: Kromosom Hasil Seleksi... 42

Tabel 4. 14: Populasi Baru Hasil Corssover ... 43

Tabel 4. 15: Keturunan Hasil Mutasi ... 44

Tabel 4. 16: Populiasi Generasi Baru ... 45

Tabel 4. 17: Metrik Evaluasi ... 48

Tabel 5. 1 Hasil Akhir Percobaan ... 54

(15)

xiv

DAFTAR GRAFIK

Grafik 5. 1 Hasil Perbandingan Test Cases ... 55 Grafik 5. 2 Hasil Perbandingan Waktu Pengujian ... 56

(16)

xv

LOC Line of code adalah setiap baris yang terdapat pada program Test data Nilai input untuk pengujian

Test Cases Serangkaian input data yang digunakan untuk menguji Test Suites Sekumpulasn test cases untuk mengeksekusi program Graph Representasi alur program

Node Bentuk lingkaran pada graph Edge Bentuk garis pada graph

CFG Control flow graph

Path Jalur pada CFG yang berpengaruh terhadap pengujian Kromosom kumpulan dari gen

Gen Nilai dari kromosom

Populasi Kumpulan dari kromosom-kromosom

Rank selection Memberikan nilai fitness pada setiap individu untuk seleksi Crossover Operator GA

Mutasi Operator GA untuk melakukan modifikasi kromosom CC Singkatan dari parameter pengujian code coverage MA Singkatan dari parameter pengujian mutant analysis Precision Nilai ketepatan mesin pencari

Recall Nilai keberhasilan mesin pencari menyelesaikan masalah Accuracy Nilai akurasi dari mesin pencari

(17)

xvi

DAFTAR LAMPIRAN

Lampiran 1- Source Code Triangle ... 63

Lampiran 2- Test Case Pengujian Otomatis SBST ... 66

Lampiran 3- Test Case Pengujian Otomatis ... 69

Lampiran 4- Test Case Pengujian Manual ... 74

Lampiran 5- Bobot Graph ... 75

Lampiran 6- Mutant Program Hasil PIT Mutation Test ... 76

(18)

1

Pengujian adalah proses mengeksekusi program dari sekumpulan input data sampel dan menganalisa hasil outputnya (Ali and Fairouz, 2015). Tujuan utama dalam melakukan pengujian adalah menemukan error, faults, failures dan incidents (Paul C. Jorgensen, 2014). Pengujian perangkat lunak atau software testing merupakan bagian dari software engineering life cycle yang mana dari mulai tahap analisa kebutuhan hingga tahap pemeliharaan selalu terkait dengan pengujian (Ali and Fairouz, 2015). Tahap terkecil pengujian atau sering disebut dengan unit testing merupakan tahap awal pengujian setelah coding selesai dibangun.

Sumber: (Paul C. Jorgensen, 2014), Software Testing A Craftman’s Approach 4𝑡ℎ Edition, pg. 12

Pada tahap unit test dibutuhkan sekumpulan test case yang berkaitan dengan behavior software, fungsinya untuk mengidentifikasi data masukan dan hasil yang dikeluarkan sudah sesuai dengan kebutuhan software (Paul C. Jorgensen, 2014, hal.

4). Proses perancangan test case untuk pengujian disebut dengan test data generation (Ali and Fairouz, 2015). Tujuan utama melakukan proses test data generation adalah menghasilkan test case yang dapat mencangkup keseluruhan code (Kuar and Goyal, 2011). Melakukan test data generation secara manual

Gambar 1. 1 Level Pengujian

(19)

2

UIN Syarif Hidayatullah Jakarta

membutuhkan waktu yang tidak sebentar, sekitar 50% waktu dihabiskan untuk menyelesaikan proses tersebut (Mahadik and Thakore, 2016). Banyaknya waktu yang dihabiskan untuk melakukan test data generation berdampak terhadap biaya pengujian yang akan dikeluarkan. Pada grafik di bawah menjelaskan, apabila bugs ditemukan semakin awal maka biaya yang akan dihabiskan semakin kecil, tapi jika bugs ditemukan setelah fase akhir, kemungkinan bugs yang ditemukan akan semakin banyak dan biaya akan semakin meningkat.

Gambar 1. 2 Grafik Biaya dan Tahap Pengujian

Sumber: (Kaczanowski, 2012), Practical Unit testing with JUnit and Mockito pg. 9

Berbagai pendekatan pengujian dilakukan untuk menyelesaikan masalah tersebut. Mulai dari penggunaan metode pengujian seperti Random Test Generation dan Search Based Techniques hingga tools untuk pengujian secara otomatis (Shamshiri et al., 2015).

Pada penelitian ini, penulis mencoba melakukan pendekatan penyelesaian masalah test data generation menggunakan metode pencarian (search-based techniques). Search-based technique atau search based optimization bekerja dengan merumuskan ulang permasalah sebagai ‘search problem’ yang dapat memberikan solusi yang optimal ataupun mendekati solusi optimal (Harman et al., 2012). Search-Based Software Testing (SBST) merupakan inti dari interaksi antara metode pencarian dan pengujian perangkat lunak. SBST dapat digunakan untuk mengindikasi cangkupan dari kode pemograman, sehingga menggunakan metode ini dapat menjadi pendekatan penyelesaian masalah pengujian yang lebih efektif (Mahadik and Thakore, 2016).

(20)

UIN Syarif Hidayatullah Jakarta Sumber: (SVV Lab, 2015) Mark Harman – Recent Advances in Search Based Software

Testing and Genetic Improvment

Berbagai penelitian membahas SBST sebagai pendekatan penyelesaian masalah pengujian. Tujuannya untuk mengefesiensikan waktu pengujian yang akan berdampak pada penghematan biaya selama pengujian. Berbagai publikasi terkait SBST sudah dimulai sejak tahun 1976 hingga saat ini.

Sumber: (Harman, Jia and Zhang, 2015), Achivement, Open Problem and Challenges For Search Based Software testing

Gambar 1. 3 Interaksi Antara Metode Pencarian dan Pengujian

Gambar 1. 4 Grafik Publikasi SBST

(21)

4

UIN Syarif Hidayatullah Jakarta

SBST diterapkan dengan penggunaan algoritma pencarian. Beberapa algoritma pencarian yang dapat digunakan adalah Hill Climbing, Simulated Annealing dan Genetic Algorithm (GA). Penulis akan menganalisa GA sebagai algoritma pencarian pada penelitian ini. Penulis memilih GA sebagai algoritma genetika karena beberapa penelitian menunjukan bahwa algoritma genetika dapat mengoptimasi proses perancangan test cases (Samatha, Chokkadi and Yogananda, 2012). Setelah menetukan metode dan algoritma pencarian, penulis akan melakukan simulasi menggunakan tool SBST yaitu EvoSuite.

EvoSuite merupakan tool SBST yang dirancang dengan menggabungkan metode pencarian dan GA (Shamshiri et al., 2015). Pada tahun 2016, EvoSuite memenangkan kompetisi SBST dengan mencapai nilai cangkupan pengujian tertinggi 1126.7 dari total nilai keseluruhan (Fraser and Arcuri, 2015). EvoSuite telah diterapkan beberapa kali untuk automatisasi test data generation.

Sumber: http://study.evosuite.org/2013/ISSTA2013

Pada gambar di atas EvoSuite diuji terhadap tiga pemograman: Option, Rational dan DocType. Parameter pengujian adalah branch coverage. Grafik pada gambar menunjukan EvoSuite dapat mencangkup pengujian lebih baik dibandingan dengan pengujian manual. Selain itu, penggunaan EvoSuite dapat mengefensiesi waktu pengujian. Beberapa penelitian pendukung lainnya juga telah menunjukan hasil pengujian dari EvoSuite. Diantaranya, Jason Ross Frier dalam thesis yang berjudul

“Genetic Algorithm as a Visible Method of Obtaining Branch Coverage”, Gambar 1. 5 Laporan Hasil Kinerja EvoSuite

(22)

UIN Syarif Hidayatullah Jakarta

menerapkan EvoSuite terhadap unit testing, Sharan Raj dalam thesis yang berjudul Comparing the Effectiveness of Automated Test Generation Tools EvoSuite dan Tpalus. Selain itu, Fraser & Arcuri dalam jurnalnya yang berjudul “A Large Scale Evaluation of Automated Unit Test Generation Using EvoSuite”, menerapkan EvoSuite untuk mengotomatisasi test data generation (Fraser and Arcuri, 2014).

Jurnal yang berjudul Random or Genetic Algorithm Search-Based for Object- Oriented Test Suite Generation, menerapkan dua teknik test data generation dan membandingkan hasil pengujian dengan parameter branch coverage (Shamshiri et al., 2015).

Berdasarkan hasil penjabar latar belakang tersebut, penulis akan membahas lebih lanjut dalam penelitian yang berjudul “Pengujian Perangkat Lunak Dengan Metode Pencarian Berbasis Algoritma Genetika” pada penelitian ini penulis akan menggunakan program Triangle sebagai studi kasus. Parameter pengujian yang akan dibandingkan adalah hasil test case, code coverage, mutant analysis dan waktu pengujian, waktu yang digunakan mengambil dari penelitian sebelumnya yang berjudul Comparative Anlaysis Statement, Branch, And Loop Coverage In Software Testing Using Genetic Algorithm oleh Khoirunissa, 2017 maksimal waktu pengujian yang akan penulis ambil adalah 420s atau 7 menit.

1.2. Rumusan Masalah

Perumusan masalah pada penelitian ini adalah:

1. Bagaimana cara kerja metode pencarian berbasis algoritma genetika dalam pengujian program Triangle?

2. Bagaimana hasil perbandingan antara test case manual dan test case otomatis dan test case otomatis menggunakan metode pencarian berbasis algoritma genetika dengan parameter code coverage dan mutant analysis?

3. Bagaimana hasil waktu pengujian menggunakan metode pencarian berbasis algoritma genetika?

4. Bagaimana hasil kinerja mesin pencari untuk melakukan pengujian dihitung berdasarkan rumus precision dan recall?

(23)

6

UIN Syarif Hidayatullah Jakarta

1.3. Batasan Masalah

Batasan masalah pada penelitian ini adalah:

1. Pengujian yang dilakukan merupakan pengujian tahap unit.

2. Penelitian ini menggunakan program Triangle sebagai studi kasus.

3. Tahapan penelitian yang dilakukan adalah membandingkan test case yang dibuat manual dengan JUnit, otomatis dengan CodePro Analytix dan otomatis SBST menggunakan EvoSuite.

4. Implementasi search-based testing dalam bentuk analisa dan simulasi penggunaan tool EvoSuite.

5. Menggunakan algoritma genetika sebagai algoritma pencarian, algoritma ini digunakan sebagai dasar perancangan tool EvoSuite.

6. Parameter perbandingan pengujian dilakukan dalam segi kecepatan maksimal waktu 400s atau 7 menit, code coverage dan mutant analysis.

7. IDE yang digunakan untuk menjalankan program adalah IDE Eclipse Neon.

8. Tool EvoSuite yang digunakan versi 1.0.5 dalam betuk plugin untuk IDE Eclipse.

9. Bahasa pemograman yang digunakan adalah Java.

10. Menggunakan satu algoritma pencarian.

11. Tahapan yang dilakukan adalah analisa pendekatan melakukan perancangan tool pengujian.

1.4. Tujuan Penelitian

Tujuan dari penelitian ini adalah:

1. Melakukan langkah analisa pengujian dengan metode pencarian berbasis algoritma genetika.

2. Melakukan simulasi menggunakan tool EvoSuite untuk perancangan test case secara automatis dengan metode pencarian berbasis algoritma genetika.

3. Membandingkan hasil test case manual, test case otomatis dengan test case otomatis menggunakan metode pencarian berbasis algoritma genetika dengan parameter code coverage dan mutant analysis.

(24)

UIN Syarif Hidayatullah Jakarta

4. Menghitung perbandingan persentase waktu pengujian terhadap pengujian manual, otomatis dan otomatis dengan metode pencarian berbasis algoritma genetika, dengan maksimal waktu pengujian (420s atau 7 menit).

5. Menghitung nilai precision dan recall untuk mengukur tingkat ketepatan dan keberhasilan metode pencarian.

1.5. Manfaat Penelitian

1.5.1. Manfaat Bagi Penulis

1. Memperdalam ilmu tentang pengujian perangkat lunak.

2. Dapat merancang test cases secara manual maupun otomatis.

3. Dapat melakukan analisa pada sebuah masalah dan mengambil langkah-langkah penyelesaiannya.

4. Menerapkan ilmu yang sudah didapat selama masa perkuliahan, khusunya dalam bidang software testing.

1.5.2. Manfaat Bagi Akademik

1. Mengetahui pencapaian dan kemampuan mahasiswa dalam melakukan penelitian.

2. Mengetahui kemampuan mahasiswa dalam menguasai materi perkuliahan.

1.5.3. Manfaat Bagi Pembaca

1. Memberikan pengetahuan terkait pengujian perangkat lunak dan dapat dijadikan referensi untuk penelitian selanjutnya.

1.6. Metode Penelitian

Pada penyusunan penelitian “Pengujian Perangkat Lunak Dengan Metode Pencarian Berbasis Algoritma Genetika” ini, penulis menggunakan metode pengumpulan data dan simulasi, berikut adalah langkah-langkah penelitian:

1.6.1 Metode Pengumpulan Data 1.6.1.1 Studi Pustaka

1.6.2 Metode Simulasi

Adapun tahapan yang dilakukan untuk melakukan simulasi pengujian adalah:

(25)

8

UIN Syarif Hidayatullah Jakarta

1.6.2.1 Analisa Source code 1.6.2.2 Code Pre-proccesing 1.6.2.3 Proses Pembentukan Graph 1.6.2.4 Proses Test data Generation 1.6.2.5 Menentukan Independent Path

1.6.2.6 Test data Berdasarkan Independent Path 1.6.2.7 Proses Inisialisasi Populasi

1.6.2.8 Perhitungan Evaluasi Nilai Fitness 1.6.2.9 Proses Seleksi Kromosom

1.6.2.10 Proses Crossover 1.6.2.11 Proses Mutasi

1.6.2.12 Pembentukan Populasi Generasi Baru

1.6.2.13 Generate Test Cases Menggunakan EvoSuite 1.7. Sistematika Penulisan

Secara sistematis penelitian ini ditulis ke dalam enam bab yang setiap babnya secara rinci akan menjelaskan:

BAB I PENDAHULUAN

Bab ini akan menjelaskan tentang latar belakang dalam melakukan penelitian. Penulis akan menjabarkan topik penelitian, masalah, dampak dari masalah dan solusi penyelesaian masalah.

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

Bab dua akan menguraikan landasan teori dari setiap materi yang berhubungan dengan penelitian ini, landasan teori yang akan dibahas terdiri dari pengujian perangkat lunak, unit testing, seach based testing, test data generation, dll. Pada bagian akhir dari bab ini penulis akan menjabarkan tinjauan pustaka dalam bentuk tabel studi literatur sejenis.

(26)

UIN Syarif Hidayatullah Jakarta

BAB III METODOLOGI PENELITIAN

Bab tiga menunjukan kerangka berfikir penelitian. Bab ini juga akan menjelaskan tentang metode penelitian bagaimana cara mendapakan data dan pengolahan data.

BAB IV ANALISA DAN IMPLEMENTASI SIMULASI

Bab ini akan menguraikan mengenai penyelesaian permasalahan dengan menggunakan metodologi yang dipilih, pengujian dengan metode pencarian berbasis algoritma genetika untuk test data generation dan melakukan simulasi menggunakan tool search based testing untuk menghasilkan test case secara otomatis.

BAB V HASIL DAN PEMBAHASAN

Bab ini akan menguraikan hasil analisa dari pengujian yang dilakukan secara manual, otomatis dan otomatis dengan metode pencarian berbasis algoritma genetika. Hasil analisa tersebut akan menunjukan kelebihan dan kekurangan dari metode pengujian yang digunakan.

BAB VI PENUTUP

Bab ini berisi tentang kesimpulan penelitian yang menjelaskan hasil akhir penelitian serta saran untuk perbaikan penelitian dari hasil analisa dan proses simulasi yang telah dilakukan untuk pengembangan atau penelitian selanjutnya.

(27)

10 BAB II

TINJAUAN PUSTAKA DAN LANDASAN TEORI

Pengujian Perangkat Lunak

2.1.1 Definisi Pengujian Perangkat Lunak

Pengujian adalah proses mengeksekusi sampel input data dari suatu produk (software) dan menganalisa hasil outputnya (Ali & Fairouz, 2015, hal.

23). Tujuan utama dalam melakukan aktifitas pengujian adalah untuk menemukan error, faults, failure dan incidents. Errors atau bugs adalah kesalahan yang terjadi saat proses coding. Fault adalah kesalahan yang menggabarkan hasil error dan failure terjadi saat kode program merespon ketika fault dieksekusi (Paul C. Jorgensen, 2014, hal. 3).

Sumber: (Ali and Fairouz, 2015), Software Testing Concept and Operations, hlm. 33

Gambar 2.1 menampilkan model V siklus pengujian. Dari gambar tersebut dapat dilihat setiap tahapan pembangunan perangkat lunak akan berintegrasi dengan pengujian. Pada penelitian ini, penulis berfokus pada tahap unit testing yang dilakukan setelah melakukan programming atau coding.

Berikut ini adalah gambar siklus tahap unit testing.

Gambar 2. 1 V Model Siklus Pengujian

(28)

UIN Syarif Hidayatullah Jakarta Sumber: https://onlinedigitaltechnology.com

Saat ini, hampir semua tahap pengujian sudah dilakukan secara otomatis dengan menggunakan berbagai tools pengujian. Otomatisasi pengujian perangkat lunak merupakan sebuah proses untuk mencapai satu atau lebih dari aktivitas pengujian perangkat lunak menjadi terstruktur atau otomatis. Manfaat utama dari pengujian perangkat lunak secara otomatis adalah mengurangi biaya kegagalan saat pengujian dalam mendeteksi error atau kesalahan.

2.2. Unit Testing

Menurut Paul dalam buku Software Testing A Craftman’s Approach, unit adalah bagian terkecil dari perangkat lunak yang dirancang, dibangun, dan diuji oleh satu atau sepasang programmer. Menjalankan proses unit testing dapat dilakukan dengan beberapa metode pengujian seperti Boundary Value Testing, Equivalence Class Testing, Decision Table Based Testing, Path Testing dan Control Flow Testing.

2.1.1. Path Testing

Path testing dilakukan dengan terlebih dahulu merancang graph dari source code program (Khan and Amjad, 2015). Untuk menjalankan path testing penguji perlu memperhatikan struktur yang membangun program tersebut. Berikut ini adalah contoh dua struktur dasar yang paling sering muncul dalam suatu program, yaitu kondisi if-then-else dan looping.

Gambar 2. 2 Siklus Unit testing

(29)

12

UIN Syarif Hidayatullah Jakarta

Gambar 2. 3 (a) struktur dasar if-then-else (b) struktur dasar loop

Sumber: (Paul C. Jorgensen, 2014), Software Testing A Craftsman’s Approach

Pada path testing, apabila node (bentuk lingkaran) dan edge (bentuk garis) pada graph program terlalui maka nilai path coverage nya adalah 100%, untuk menghitung nilai path coverage dapat menggunakan rumus:

Path Coverage = 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑎𝑡ℎ 𝑦𝑎𝑛𝑔 𝑑𝑖𝑒𝑘𝑠𝑒𝑘𝑢𝑠𝑖

𝑡𝑜𝑡𝑎𝑙 𝑖𝑛𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑡 𝑝𝑎𝑡ℎ 𝑥100………..…… (2.1) Nilai path coverage dapat dihitung apabila penguji sudah mengetahui independent path dari suatu graph. Nilai independent path didapatkan dengn rumus cyclometic complexity (CC). Berikut ini adalah rumus dari CC:

CC = C(G) = E – N + 2 ……… (2.2) E = jumlah edge

N = jumlah node

2.3. Search Based Software Testing

Metode berbasis pencarian Search Based Software Testing (SBST) merupakan bagian dari Search Based Software Engineering (Harman, Jia and Zhang, 2015).

SBST merupakan penggabungan antara metode pengujian dan metode pencarian (search technique).

Metode pencarian merupakan konsep pencarian sebuah informasi yang tersimpan dari berbagai sumber maupun dokumen tidak terstruktur dengan melakukan sebuah prosedur pencarian dan pengolahan data (Saha et al., 2014).

Pada penelitian ini, source code dianggap sebagai sumber dokumen untuk mencari informasi. Prosedur pencarian atau disebut dengan code pre-processing adalah

(30)

UIN Syarif Hidayatullah Jakarta

tahapan persiapan yang dilakukan untuk menyiapkan dokumen sebelum diolah, code pre-processing terdiri dari proses tokenizing.

Tokenizing adalah proses memecah souce code menjadi kata-kata (Stein, 2016). Pada penelitian ini proses tokenizing dilakukan untuk memisahkan source code dengan kata kunci yang menggambarkan struktur program karena kata kunci tersebut akan berpengaruh terhadap pengujian.

Hasil kinerja mesin pencarian dapat dinilai dengan menggunakan metrik evaluasi. Metrik evaluasi terdiri dari empat kata kunci yaitu true posistive (tp), true negative (tn), false positive (fp) dan false negative (fn) (Pang, Xue and Namin, 2013).

Tabel 2. 1 Metrik Evaluasi

Test Cases True Effective True Non-Effective

Predicted Effective tp fp

Predicted Non-Effective fn tn

Berdasarkan metrik evaluasi akan didapatkan nilai precision, recall dan accuracy. Precision adalah tingkat ketepatan antara informasi yang dicari dengan hasil pencarian yang diberikan oleh mesin pencari dan recall adalah tingkat keberhasilan dari mesin pencari dalam menemukan kembali sebuah informasi (Kausar, Nasar and Singh, 2013). Accuracy adalah tingkat kedekatan antara nilai precision dengan nilai aktual (Pang, Xue and Namin, 2013).

Berikut ini adalah rumus ketiga nilai tersebut:

Precision = 𝑡𝑝

𝑡𝑝+𝑓𝑝 ………. (2.3)

Recall = 𝑡𝑝

𝑡𝑝+𝑓𝑛 ………... (2.4)

Accuracy = 𝑡𝑝+𝑡𝑛

𝑡𝑝+𝑡𝑛+𝑓𝑝+𝑓𝑛 ……… (2.5)

Membahas tentang SBST sama dengan membahas berbagai cara kerja algoritma pencarian. Algoritma pencarian digunakan sebagai teknik optimasi untuk melakukan test data generation dan sebagai penyelesaian masalah optimasi yang ada di software enginnering (Mahadik and Thakore, 2016). Algoritma pencarian ini terdiri dari: Hill Climbing, Algoritma Genetika, Algoritma Semut, Simulated

(31)

14

UIN Syarif Hidayatullah Jakarta

Annealing, Tabu Search dan lain-lain. Pada umumnya, terdapat dua syarat yang dibutuhkan untuk mengimplementasikan algoritma pencarian, yaitu: representation dan fitness function (McMinn, 2011). Representation yang dimaksud adalah representasi masalah dan fungsi fitness untuk mengevaluasi solusi. Keuntungan dari penggunaan algoritma pencarian adalah efesiensi dari segi cangkupan uji dan waktu pengujian.

2.4. Test data Generation

Test data generation adalah proses merancang sekumpulan data untuk melakukan pengujian terhadap perangkat lunak yang baru dibangun maupun memperbaiki perangkat lunak yang sudah ada (Ali & Fairouz, 2015, hal. 143).

Sumber: https://en.wikipedia.org/wiki/Test_data_generation

Dasar untuk menghasilkan test data adalah dengan mengubah source code program menjadi control flow graph (Kumar, Singh and Gopal, 2013). Berikut ini adalah 4 tahapan melakukan proses test data generation:

1. Membangun control flow graph (CFG) dari program yang akan diuji.

2. Menentukan target path.

3. Proses mengeksekusi test case.

4. Hasil dari eksekusi test case.

Apabila pemograman yang diuji hanya terdiri dari beberapa baris atau line of code (LOC) proses generate test data akan menjadi lebih mudah. Tapi, jika sebaliknya maka proses generate test data hanya akan menghabiskan waktu.

Gambar 2. 4 Test Data Generator Model

(32)

UIN Syarif Hidayatullah Jakarta

2.5. Definisi Test data, Test cases dan Test Suites

 Test Data adalah input data yang digunakan untuk menguji

 Test Case adalah serangkaian input data yang mengidentifikasi perilaku program (Paul C. Jorgensen, 2014, hal. 4)..

 Test Suite merupakan sekumpulan test cases yang digunakan untuk menguji program, test suite membantu mengeksekusi pengujian dan melaporkan hasil eksekusi.

2.6. EvoSuite

EvoSuite adalah tool search-based testing yang dapat digunakan untuk menghasilkan test suites secara automatis. EvoSuite menggunakan metode pendekatan berbasis pencarian yang menghasilkan populasi dari test suites, (Fraser and Arcuri, 2011).

EvoSuite dapat digunakan untuk bahasa pemograman Java, tool ini secara otomatis menghasilakn test suites untuk class Java, EvoSuite dapat menargetkan berbagai cangkupan yang berbeda seperti branch coverage, line coverage, output- input coverage dll. Selain itu, EvoSuite dapat secara otomatis digunakan untuk mendekteksi kesalahan seperti broken code (kode yang rusak).

Tabel 2. 2 Klasifikasi EvoSuite Prasyarat

Statik atau Dinamik Pengujian dinamik pada Java class

Tipe Perangkat Java classes

Jenis Pengujian Unit testing pada program Java

Lingkup penggunaan Seluruh lingkungan pengembangan Java

Kebutuhan Pengetahuan JUnit unit testing untuk Java Kebutuhan pengalaman Pengetahuan dasar unit testing Input dan Output

Input Bytecode target class dan dependecies

Output JUnit test cases (versi 3 atau 4)

(33)

16

UIN Syarif Hidayatullah Jakarta

Interaksi Dapat digunakan pada commandline,

Eclipse plugin, Intellij plugin dan Maven

Panduan pengguna Manual verifikasi dari assertions untuk kesalahan fungsi

Sumber Informasi http://evosuite.org

Jenis Perangkat Prototype dalam pengembangan

Teknologi EvoSuite Metode pencarian keseluruhan test suites generation

Informasi Tool

Perizinan Lesser GPL V.3

Akses Open source

Pendukung Tidak ada

2.6.1. EvoSuite Test Suite Generation

EvoSuite menggunakan pendekatan evolusioner (algoritma genetika) untuk menghasilkan test suites, dengan membangkitkan kandidat individu (kromosom) menggunakan operator genetika yang terinspirasi dari teori evolusi alam (selection, crossover dan mutation). Kromosom tersebut akan berevolusi secara berulang-ulang untuk mencari solusi terbaik dengan menghasilkan cangkupan uji yang optimal dan membentuk test suites terbaik (Fraser and Arcuri, 2015). Berikut ini adalah langka-langkah cara kerja EvoSuite:

1. Membangkitkan secara acak sekumpulan test suite sebagai kandidat awal (kromosom)

2. Selanjutnya, test suite yang sudah dipilih secara acak akan berevolusi/

dikembangkan menggunakan algoritma genetik.

3. EvoSuite menghasilkan test suite yang optimal dengan cangkupan uji yang maksimal (Chitirala, 2015, hal. 4)

(34)

UIN Syarif Hidayatullah Jakarta Sumber: (Fraser and Arcuri, 2011), Evolutionary Generation of Whole Test Suites

2.6.2. Algoritma Genetika EvoSuite

Pada algoritma genetika populasi kromosom berkembang dengan menggunakan operasi genetika yaitu crossover dan mutasi, yang mana setiap kromosom mewakili solusi masalah yang mungkin terjadi (Fraser and Arcuri, 2011). Berikut ini adalah pseudocode dari algoitma genetika EvoSuite:

Sumber: (Fraser and Arcuri, 2013),Whole Test Suites Generation

Gambar 2. 5 Cara Kerja EvoSuite

Gambar 2. 6 Pseudocode Algoritma Genetika EvoSuite

(35)

18

UIN Syarif Hidayatullah Jakarta

Berdasarkan gambar 2.6 di atas berikut ini adalah tahapan algoritma genetika untuk melakukan proses generate test data:

1. Representasi current_population. Representasi populasi awal dipilih secara acak (baris ke-1)

2. Proses seleksi kromosom. Pilih dua parent atau induk dengan metode rank selection (baris ke-5).

3. Selanjutnya tetapkan nilai crossover probabiliti dan melakukan proses crossover terhadap induk yang terpilih (baris ke-6).

4. Hasil proses crossover selanjutnya dilakukan proses mutasi dengan menentapkan nilai mutasi probabiliti (baris ke-10).

5. Dapatkan populasi terbaik (baris ke-24).

6. Ulangi tahap 1-5 sampai mendapatkan hasil yang maksimum (baris ke-25).

2.7. Code Coverage

Evaluasi cangkupan kode adalah masalah identifikasi bagian dari sebuah program yang dijalankan. Pada umumnya code coverage digunakan untuk mengevaluasi kecangkupan uji test case terhadap kode program, menilai kualitas test case dan menganalisa pengukuran hasil test case (Ma et al., 2015). Evaluasi menggunakan code coverage terdiri dari beberapa bagian seperti branch coverage dan statement coverage (Chen et al., 2013). Melakukan evaluasi code coverage membutuhkan penggambaran struktur program, misalnya untuk branch coverage dipilih if-condition dari kode program dan dilakukan pengujian.

2.7.1. Eclemma

Eclemma adalah tool pengujian otomatis yang akan digunakan pada penelitian ini. Eclemma adalah tool yang digunakan untuk melakukan pengujian cangkupan (code coverage) terhadap test cases yang sudah dibuat. Eclemma bersifat open source untuk bahasa pemograman Java dan dapat digunakan sebagai plugin Eclipse. Pada penelitian ini Eclemma

(36)

UIN Syarif Hidayatullah Jakarta

digunakan sebagai tool untuk menguji test case dengan parameter code coverage (CC).

2.8. Mutant Analysis

Mutant Analysis merupakan suatu metode yang digunakan untuk mengevaluasi kumpulan test case dalam mendeteksi suatu error atau kesalahan (Fraser and Zeller, 2012). Menurut Paul C. Jogersen dalam buku Software Testing Craftsma’s Approach mutant analysis adalah merancang suatu program dengan memasukkan mutant (memodifikasi bagian program) sehingga terbentuk suatu mutant program.

Apabila test case dapat mengasilkan output yang tidak sesuai dengan output seharusnya, maka mutant terbunuh (killable) (Chen et al., 2013).

Mutant analysis dapat dihitung menggunakan rumus mutant score (MS).

MS = 𝑚𝑡𝑎𝑛 𝑦𝑎𝑛𝑔 𝑡𝑒𝑟𝑑𝑒𝑡𝑒𝑘𝑠𝑖

𝑠𝑒𝑙𝑢𝑟𝑢ℎ 𝑚𝑢𝑡𝑎𝑛𝑡 𝑋100%……… (2.6)

Pada penelitian ini penulis akan menggunkan tool mutant analysis yaitu PIT Mutation Test. Tool ini akan digunakan untuk menguji test case yang telah dibuat secara manual dan otomatis.

Contoh perubahan program menjadi mutant program:

if (a<b) { mutant program if (a>=) { a=a-b; a=a+b;

else else b=b-a; b=a+b;

Dari contoh di atas, perubahan yang terjadi adalah a<b menjadi a>= b dan operator (–) menjadi (+)

2.8.1. PIT Mutation Testing

PIT Mutation Testing adalah tool automatis untuk membuat program mutant, yang selanjutnya test case yang sudah dibuat akan diuji dengan parameter mutant analysis. Pada penelitian ini, penulis akan menggunakan tool ini untuk mendeteksi banyaknya mutant yang dimasukan ke dalam program dan mendapatkan hasil evaluasi test cases dengan menghitung MS.

(37)

20

UIN Syarif Hidayatullah Jakarta

2.9. CodePro AnalytiX

CodePro AnalytiX adalah tool automatis untuk melakukan test data generation, tool ini dirancang oleh perusahaan Google dan beredar secara open source (Galler and Aichernig, 2014). CodePro AnalytiX dapat diintegrasikan terhadap Rational Developer, IBM WebSphere Studio dan Eclipse. Pada penelitian ini penulis menggunakan CodePro AnalytiX sebagai plugin eclipse. CodePro AnalytiX digunakan untuk pengujian terhadap bahasa pemograman Java. CodePro AnalytiX dapat digunkan untuk:

 Menghasilkan test input data untuk pengujian

 Mengeksekusi program

 Validasi hasil

 Menghasilkan JUnit Test Cases.

2.10. Framework JUnit

JUnit adalah sebuah framework pengujian java yang bersifat open source yang digunakan untuk menulis dan menjalankan pengujian perangkat lunak secara berulang-ulang (Ali & Fairouz, 2015, hal. 342). JUnit termasuk ke dalam oracle testing tools. Untuk menggunakan JUnit pengujian harus menambahkan file.jar ke dalam library project. Berikut ini adalah klasifikasi dari JUnit.

Tabel 2. 3 Klasifikasi JUnit JUnit

Sumber Freeware

Website resmi http://www.junit.org

Akses Open source

Target bahasa Java

Bahasa Unit testing

Tahap Pengujian Oracle

(38)

UIN Syarif Hidayatullah Jakarta

2.11. Triangle Program

Triangle adalah program yang digunakan untuk mengklasifikasikan segitiga, dalam penelitian ini disebut program Triangle. Masukan dari program ini adalah tiga buah nilai dari setiap sisi segitiga (S1, S2, S3), keluaran dari program ini adalah klasifikasi bentuk segitiga seperti segitiga siku-siku, segitiga sembarang, segitiga sama kaki dan segitiga sama sisi. Program ini sering dijadikan sebagai studi kasus pengujian perangkat lunak dalam berbagai penelitian (Paul C. Jorgensen, 2014, hal. 18). Keuntungan menggunakan program ini adalah program ini relatif sederhana, mudah dipahami dan mempunyai struktur logika yang cukup rumit sehingga dapat mewakili hampir semua konsep.

Untuk menguji program, penulis merancang test case sebagai berikut:

Tabel 2. 4 Test case Triangle Test cases

(TC)

Input Data

Hasil S1 S2 S3

TC1 3 4 5 segitiga siku-siku

TC2 5 8 6 segitiga sembarang

TC3 7 3 7 segitiga sama kaki

TC4 10 10 10 segitiga sama sisi

TC5 0 0 0 bukan segitiga

Gambar 2. 7 Gambar Segitiga

(39)

22

UIN Syarif Hidayatullah Jakarta

2.12. Tinjauan Pustaka

Pada bagian tinjauan pustaka penulis mengumpulkan studi literatur sejenis yang penulis gunakan sebagai acuan penelitian. Tujuannya adalah untuk mendalami materi, mengambil kesimpulan, melihat kekurangan, dan kelebihan dari penelitian sebelumnya untuk dapat menghasilkan penelitian yang lebih baik. Pada penelitian sejenis ini, penulis akan menekankan pada metode yang digunakan, kelebihan dan kekurangannya. Berikut ini adalah pemaparan dari beberapa literatur sejenis (Tabel 2.6):

(40)

UIN Syarif Hidayatullah Jakarta

Tabel 2. 5 Studi Literatur

Judul Tahun

Pengujian Perangkat Lunak

Metode Hasil Kelebihan Kekurangan

Manual Otomatis SBSE Comparing The

Effectiveness of Automated Test Generation Tools

“EvoSuite” and “Tpalus”

(Chitirala, 2015)

2015 -   Unit

Testing

EvoSuite lebih mudah digunakan dan memberikan nilai cangkupan yang lebih tinggi sedangkan Tpalus memberikan nilai 10% lebih besar untuk parameter mutant analysis.

Melakukan

perbandingan dengan dua tools yang berbeda untuk

melakukan unit testing

EvoSuite digunakan sebagai plugin Maven sehingga

membutuhkan syntax commandline yang lebih sulit digunakan.

Genetic Algorithm As A Visible Method of Obtaining Branch Coverage

(Frier, 2017)

2017 - -  Unit

Testing

Menggunakan SBST

terhadap program yang terdiri dari 292 LOC dan 170 branch dapat mencangkup 62%, 66% dan 61% untuk 3x running. Parameter yang digunakan adalah branch coverage.

Menguji 22 class dari berbagai program dengan dengan parameter branch coverage.

Hanya menggunakan satu parameter pengujian.

Whole Test Suite Generation (Fraser and Arcuri, 2013)

2013 - -  Unit

Testing

Hasil kinerja EvoSuite dengan metode Search Based Testing dapat mencangkup pengujian yang lebih baik dengan parameter branch coverage.

Melakukan perbandingan tool pengujian lainnya.

Hanya diujikan pada satu pemograman sederhana terdiri dari 22 LOC

(41)

24

UIN Syarif Hidayatullah Jakarta

A Process Web

Application Testing Using TAO Tool Search Based Genetic Algorithm (Sudheer, Sharma and Raju, 2016)

2016 -   OOP

Testing

Penggabungan tools TAO dan Selenium Web Testing dengan meode search-based untuk proses pengujian otomatis terhadap Web Application

Melakukan pengujian otomatis terhadap web application dengan menggabungkan beberapa tools

Pegujian yang dilakukan tergolong kompleks karena menggunakan web application sebagai studi kasus dan membutuhkan tools lebih dari satu Effective Program

Analyses for Automated Software Testing and Error Diagnosis (Zhang, 2014)

2014 -  - Unit

Testing

Tool Palus dapat menghasilkan uji cangkupan yang lebih tinggi dan mendeteksi bugs lebih banyak.

Melakukan perbandingan beberapa tool untuk melakukan pengujian.

Tidak menggunakan metode search based testing.

Pengujian Perangkat Lunak Menggunakan Metode Pencarian Berbasisi Algoritma Genetika

Penulis (2017)

2017    Unit

Testing

Pengujian menggunakan metode pencarian berbasis algoritma genetika dapat menghasilkan test case yang lebih optimal. Simulasi dilakukan dengan tool EvoSuite terhadap source code Triangle menghasilkan 14 test case.

Melakukan analisa cara kerja algoritma genetika terhadap source code program.

Tidak melakukan perbandingan algoritma dan tidak membuat tool pencarian

(42)

UIN Syarif Hidayatullah Jakarta

Berdasarkan tabel 2.5 studi literatur penulis menjabarkan 5 studi literatur sejenis yang penulis gunakan sebagai acuan penelitian, yang pertama ada Chitalar dalam thesisnya yang berjudul Comparing The Effectiveness of Automated Test Generation Tools “EvoSuite” dan “Tpalus” pada penelitiannya Chitalara melakukan perbandingan dua tools dalam melakukan generate test data secara otomatis. Parameter yang digunakan adalah mutant analysis, branch coverage dan line coverage. Hasilnya tool EvoSuite memiliki nilai cangkupan yang lebih besar dengan parameter branch dan line coverage, sedangkan dengan parameter mutant analysis Tpalus 10% lebih besar.

Penelitian kedua oleh Frier dengan judul Genetic Algorithm As A Visible Method of Branch Coverage hasil penelitiannya adalah dengan menggunakn metode SBST dapat dihasilkan uji cangkupan yang lebih tinggi dengan parameter yang digunakan adalah branch coverage.

Selanjutnya ada Fraser dan Arcuri dalam jurnal Whole Test Suite Generation hasilnya menunjukan metode SBST menggunakan tool EvoSuite memberikan uji cangkupan yang lebih baik dengan parameter pengujian branch coverage.

Penelitian keempat oleh Sharma dkk, penelitian ini menerapkan metode SBST yang dilakukan terhadap object oriented programming menghasilkan JUnit test script secara otomatis.

Penelitian terakhir oleh Zhang dengan judul Effectiveness Program Anlyses for Automated Software Testing and Error Diagnosis melakukan percobaan terhadap beberapa tools automated testing dan didapatkan bahwa tool Palus menghasilkan uji cangkupan yang lebih tinggi dan mendeteksi bugs lebih banyak.

(43)

26 BAB III

METODOLOGI PENELITIAN

3.1. Kerangka Berfikir

Gambar 3. 1 Metodologi Penelitian

(44)

UIN Syarif Hidayatullah Jakarta

3.2. Metode Pengumpulan Data

Sebagai landasan dalam penyusunan skripsi ini penulis melakukan pengumpulan data yang terkait dengan penelitian seperti landasan teori, metodologi penulisan, proses analisa dan implementasi dan literatur sejenis yang menjadi acuan penelitian. Metode pengumpulan data yang dilakukan oleh penulis adalah studi pustaka.

Penulis melakukan studi pustaka dengan cara mengumpulkan data-data dan segala bentuk informasi yang memiliki keterkaitan dengan penelitian. Penulis membaca dan mempelajari buku-buku, jurnal-jurnal penelitian, baik cetak maupun secara online dari internet. Referensi-referensi terkait dari hasil studi pustaka tersebut penulis gunakan untuk mengidentifikasi masalah dan dasar dari penulisan penelitian ini. Daftar referensi yang digunakan pada penelitian ini dapat dilihat pada bagian daftar pustaka.

3.3. Metode Simulasi (Nomor 11-15 pada Gambar 3.1)

Berikut ini penulis akan menjelaskan tahapan metode pencarian berbasis algoritm genetika:

1. Analisa Source code

Program yang akan diujikan pada penelitian ini adalah program Triangle, untuk melakukan pencarian, source code program dianggap sebagai sebuah dokumen yang terdiri dari LOC yang memiliki informasi seperti class, method, if-condition dan while.

2. Code Pre-Processing (Nomor 12 pada Gambar 3.1) 2.1. Tokenizing

Tokenizing adalah tahapan memecah source code Triangle menjadi kata-kata yang diperlukan untuk pengujian. Pada penelitian ini kata kunci yang penulis cari adalah method, if-condition dan while.

2.2. Proses Pembentukan Graph

Setelah mendapatkan kata kunci yang dibutuhkan, penulis akan membentuk graph dari source code tersebut.

(45)

28

UIN Syarif Hidayatullah Jakarta

3. Test data Generation dengan Algoritma Genetika (Nomor 13 dan 14 pada Gambar 3.1)

3.1. Menentukan Independent Path

Setelah terbentuk sebuah graph, penulis menentukan independent path dengan terlebih dahulu menghitung cyclometix complexity (CC), hasil nilai CC menunjukan berapa banyak path yang ada pada graph Triangle

3.2. Test Data Berdasarkan Independent Path

Berdasarkan banyaknya path yang ada, penulis membuat test data untuk menguji path tersebut, test data yang digunakan berupa nilai integer dari S1, S2 dan S3. Setelah memberikan nilai input, penulis menghitung nilai path coverage menggunakan rumus 2.1. Path dengan nilai tertinggi akan terpilih menjadi target path pengujian.

3.3. Proses Inisialisai Populasi

Tahap ini bertujuan untuk membangkitkan populasi awal untuk menjalankan proses algoritma genetika. Pada tahap ini, penulis memilih populasi awal secara acak, populasi awal yang terpilih harus memiliki nilai path coverage di atas 20% (Satrio, Saputra and Rachmadi, 2017).

3.4. Perhitungan Evaluasi Nilai Fitness

Setiap kromosom yang telah terbentuk pada tahap inisialisasi populasi, selanjutnya dihitung nilai fitness dari kromosom tersebut. Nilai fitness pada penelitian adalah jumlah bobot dari tiap path. Bobot nilai yang digunakan diambil dari penelitian sebelumnya.

3.5. Proses Seleksi Kromosom

Proses seleksi kromsom ini dilakukan untuk menentukan induk terbaik yang selanjutnya akan digunakan pada proses crossover dan mutasi. Induk terbaik adalah induk yang memiliki nilai kumulatif fitness terbaik.

3.6. Proses Crossover

Proses ini bertujuan untuk membuat individu yang lebih baik, tahap awal pada proses ini adalah menentukan nilai probabilitas crossover (𝑃𝑐)

= ¾ atau 0.75 setelah menentukan nilai probabilitas, penulis

(46)

UIN Syarif Hidayatullah Jakarta

membangkitkan nilai acak R[i] dengan batasan nilai 1-0, apabila nilai tersebut R[i] < (𝑃𝑐) maka lakukan crossover.

3.7. Proses Mutasi

Proses mutasi pada penelitian ini menggunakan metode insertion mutation. Tahapan awal adalah menghitung panjang gen pada populasi (total gen). Selanjutnya memilih posisi gen yang dimutasikan dengan membangkitkan bilangan acak antara 1 sampai total gen (1-30), penulis menentukan probabilitas mutasi (𝑃𝑚) = 0,1. Apabila R[i] < (𝑃𝑚) maka lakukan mutasi.

3.8. Pembentukan Populasi Generasi Baru

Pembentukan populasi generasi baru dilakukan dengan menghitung ulang nilai fitness dari hasil keturunan mutasi, keturunan tersebut selanjutya diurutkan berdasarkan nilai fitness tertinggi.

(47)

30 BAB IV

ANALISA DAN IMPLEMENTASI SIMULASI

4.1. Analisa Source code

Program yang akan digunakan sebagai studi kasus adalah program Triangle atau program yang digunakan untuk mengklasifikasikan bentuk segitiga. Program ini ditulis dalam bahasa pemograman Java menggunakan IDE Eclipse Neon.

Berikut ini source code dari program Triangle:

1 import java.io.*;

2

3 //Class pertama 4 class Triangle { 5

6 // Stores the length of each side of the Triangle object. (atribut) 7 private int side1, side2, side3;

8

9 //Method konstruktor dengan parameter int s1, int s2, int s3 10 public Triangle (int s1, int s2, int s3) {

11 side1 = s1;

12 side2 = s2;

13 side3 = s3;

14 } 15

16 //Method fungsi untuk menguji segitiga siku-siku.

17 public boolean is_right () {

18 if (((side1*side1) == ((side2*side2) + (side3*side3))) ||

19 ((side2*side2) == ((side1*side1) + (side3*side3))) ||

20 ((side3*side3) == ((side1*side1) + (side2*side2)))) 21 return true;

22 else

23 return false;

24 } 25

26 //Method fungsi untuk menguji segitiga sembarang.

27 public boolean is_scalene () {

28 if ((side1 != side2) && (side1 != side3) && (side2 != side3)) 29 return true;

30 else

31 return false;

32 } 33

34 //Method fungsi untuk menguji segitiga sama kaki.

35 public boolean is_isosceles () {

36 if (((side1 == side2) && (side1 != side3)) ||

37 ((side1 == side3) && (side1 != side2)) ||

38 ((side2 == side3) && (side2 != side1))) 39 return true;

40 else

41 return false;

42 } 43

44 //Method fungsi untuk menguji segitiga sama sisi.

45 public boolean is_equilateral () {

(48)

UIN Syarif Hidayatullah Jakarta 46 if ((side1 == side2) && (side1 == side3))

47 return true;

48 else

49 return false;

50 } 51 } 52

53 //Class kedua

54 class Test_Triangle { 55

56 public static void main (String[] args) throws IOException { 57

58 // Declare stdin so data can be read from input.

59 DataInputStream stdin = new DataInputStream (System.in);

60

61 // loop exits when the user response is "n"

62 String user_response = "y";

63 while (!user_response.equals("n")) { 64

65 // Ask user for 3 dimensions of triangle.

66 System.out.println ("\nEnter side1 length: ");

67 int side1 = Integer.parseInt (stdin.readLine());

68

69 System.out.println ("Enter side2 length: ");

70 int side2 = Integer.parseInt (stdin.readLine());

71

72 System.out.println ("Enter side3 length: ");

73 int side3 = Integer.parseInt (stdin.readLine());

74

75 // Now use these values to create a Triangle object.

76 Triangle tri = new Triangle (side1,side2,side3);

77

78 // Determine what kind of triangle it is.

79 System.out.println ("\nIs triangle right-angle? "+tri.is_right());

80 System.out.println ("Is triangle scalene? "+tri.is_scalene());

81 System.out.println ("Is triangle isosceles? "+tri.is_isosceles());

82 System.out.println ("Is triangle equilateral? "+tri.is_equilateral());

83 // Ask user if they want to continue.

84 System.out.println ("\nDo you want to examine more triangles?");

85 System.out.println ("(type 'y' for yes or 'n' for no)");

86 user_response = stdin.readLine();

87 } 88 } 89 }

Berdasarkan hasil analisa source code diatas, maka didapatkan detail program sebagai berikut:

Tabel 4. 1 Detail Program Triangle

Project #Class #Branches #Loop #Method LOC

Triangle 2 5 1 6 89

(49)

32

UIN Syarif Hidayatullah Jakarta

4.2. Pengujian Manual Menggunakan Framework JUnit

Pengujian secara manual dilakukan dengan membuat skenario test case. Pada penelitian ini penulis akan membuat skenario test case menggunakan framework JUnit. Test case manual dirancang sebagai pembanding untuk test case SBST dan otomatis. Test case dirancang dengan mengabaikan metode pencarian dan hanya berdasarkan method yang ada pada kode Triangle. Penulis menggunakan IDE Eclipse Neon untuk merancang JUnit.

Berikut ini adalah tahapan merancang test case secara manual dengan JUnit:

1. Pada file Triangle.java klik kanan pilih New-Junit test case

2. Selanjutnya beri nama file test case, penulis memberi nama file TringleTest.java

3. Pilih New JUnit4 Test.

4. Merancang skenario test case.

5. Jalankan skenario test case yang sudah dibuat.

Menggunakan JUnit, penulis menghasilkan 4 test case berdasarkan method program Triangle. Keempat test case tersebut berjalan dengan baik dan tidak terdapat error.

Gambar 4. 2 Hasil Menjalankan Test Case Manual Gambar 4. 1 Arsitektur Pengujian Manual

(50)

UIN Syarif Hidayatullah Jakarta

Pengujian manual yang dilakukan dari tahap membuat test case hingga dilakukan pengujian terhadap kode Triangle dengan test case tersebut menghabiskan waktu 300s atau lima menit.

4.3. Pengujian Otomatis Menggunakan CodePro AnalytiX

Menggunakan CodePro AnalytiX penulis mencoba membuat test case secara otomatis. CodePro AnalytiX adalah tool pengujian otomatis yang tidak menggunakan metode SBST. Sehingga test case yang dihasilkan akan berbeda, untuk menggunakan tool ini penulis melakukan:

1. Pada file Triangle.java klik kanan dan pilih CodePro Tool.

2. Selanjutnya pilih ‘Generate Test Cases.’

3. Setelah proses menghasilkan test case selesai akan terbentuk folder baru bernama TriangleClassifierTest

4. Di dalam folder terbagi menjadi 3 file test cases, penulis hanya menggunakan satu file test case dengan nama TriangleTest.java

Gambar 4. 3 Arsitektur Pengujian Otomatis

(51)

34

UIN Syarif Hidayatullah Jakarta

Berikut ini adalah hasil menjalankan test case otomastis dengan CodePro AnalytiX:

Dari gambar di atas dapat dilihat bahwa menghasilkan test case otomatis dengan CodePro AnalytiX dapat menghasilkan 17 test case, setelah dijalankan ke-17 test case tersebut berjalan dengan baik atau tidak terdapat error. Menggunakan CodePro AnalytiX waktu yang dibutuhkan untuk menghasilkan 17 test case adalah 30s atau 0.5s menit.

4.4. Pengujian Otomatis Metode Pencarian Berbasis Algoritma Genetika

Pengujian ketiga adalah melakukan pengujian dengan metode pencarian berbasis algoritma genetika. Pada penelitian ini penulis akan mencoba menganalisa

Gambar 4. 4 Hasil Menjalankan Test Case Otomatis

Gambar 4. 5 Arsitektur Pengujian Otomatis Dengan Metode Pencarian Berbasis Algoritma Genetika

Gambar

Grafik 5. 1 Hasil Perbandingan Test Cases ........................................................
Gambar 1. 2 Grafik Biaya dan Tahap Pengujian
Gambar 1. 3 Interaksi Antara Metode Pencarian dan Pengujian
Gambar  2.1  menampilkan  model  V  siklus  pengujian.  Dari  gambar  tersebut  dapat  dilihat  setiap  tahapan  pembangunan  perangkat  lunak  akan  berintegrasi dengan pengujian
+7

Referensi

Dokumen terkait

Selanjutnya pada bab kedua akan dijelaskan tentang tinjauan pustaka yang mengemukakan konsep dasar pendukung sistem pencarian kembali dokumen menggunakan algoritma genetika

Algoritma genetika merupakan suatu metode pencarian yang sangat efektif untuk menyelesaikan permasalahan optimasi pada dunia industri atau manufaktur yang

Ukuran populasi (pop_size). Ukuran populasi mempengaruhi unjuk kerja yang baik dan keefektifan Algoritma Genetika. Algoritma Genetika dengan populasi yang kecil,

Penelitian ini mengkaji permasalahan optimasi Static Transmission Expansion Planning dengan menggunakan Algoritma Genetika serta mempertimbangkan rugi-rugi daya.Obyek

Penelitian ini akan membuat suatu model prediksi tingkat akurasi berbasis algoritma neural network pengujian perangakat lunak metode black-box , yaitu: dengan

Pengujian proses algoritma genetika dilakukan dengan melakukan perubahan nilai parameter yang digunakan, yaitu nilai crossover rate, nilai mutation rate maupun nilai

Penelitian ini akan membuat suatu model prediksi tingkat akurasi berbasis algoritma neural network pengujian perangakat lunak metode black-box , yaitu: dengan terlebih dahulu test

Algoritma genetika sebagai proses FFNN yang telah disesuaikan arsitekturnya untuk memetakan model COCOMO II dapat memberikan hasil akurasi yang baik berdasarkan evaluasi nilai