PERANGKAT LUNAK
MENGGUNAKAN METODE WHITE BOX TESTING DAN
BLACK BOX TESTING DENGAN STRATEGI PENGUJIAN
TOP DOWN DAN BOTTOM UP”
DISUSUN OLEH :
FAKULTAS TEKNIK
i
BAB I
PENDAHULUAN
1
menentukan apakah memenuhi standar kinerja, dan menilai perbedaan
antara hasil yang diharapkan dan aktual (Pratama, Ristianto, Prayogo,
Nasrullah, & Saifudin, 2020).
Aplikasi Financial Flow berbasis Android akan diuji. Ini
memungkinkan pengguna untuk mencatat arus kas, termasuk pembayaran
dan pendapatan yang dilakukan secara tunai selama periode waktu tertentu.
Tujuan dari program ini adalah untuk mempermudah perencanaan dan
penggunaan keuangan. Keamanan finansial dalam kehidupan sehari-hari
sangat dipengaruhi oleh perencanaan keuangan. Pengujian perangkat lunak
sangat penting karena setiap orang membuat kesalahan saat membuat
perangkat lunak, dan kekurangan di setiap perangkat lunak akan unik.
Mencatat pengeluaran kas merupakan salah satu fungsi Arus Kas (Ningrum,
Suherman, Aryanti, Prasetya, & Saifudin, 2019).
Jika ada kesalahan, informasi dapat disampaikan secara tidak benar
dan pengguna mungkin tidak mengetahui pengeluaran kas baru-baru ini.
Informasi yang salah disampaikan oleh pengguna berpotensi merugikan
tujuan keuangan mereka. Uji coba pada aplikasi Cash Flow dapat dilakukan
untuk mencegah hal tersebut. Pengujian perangkat lunak dilakukan dengan
pemeriksaan modul untuk dapat memeriksa dan menganalisis kode program
yang dibuat benar atau salah dengan menggunakan pendekatan white box
testing (Fatimah & Samsudin, 2019). Untuk menentukan tingkat kesulitan
logika digunakan teknik jalur dasar (Basis Path) (Herlambang, Rachmadi,
Utami, Hakim, & Rohmah, 2019).
Metodologi Berdasarkan uraian di atas, pendekatan yang digunakan
adalah teknik fundamental path atau disebut juga dengan basis path, dan
metode yang digunakan adalah white box method. Pengujian kotak putih
melibatkan pengujian perangkat lunak pada tingkat aliran kode program
untuk menentukan apakah input dan output sesuai dengan persyaratan yang
diperlukan. pengujian berdasarkan prosedural, pengujian desain program
struktural, pengujian berbasis logika, atau pengujian berbasis kode
(Cholifah, Yulianingsih, & Sagita, 2018) juga tersedia (Irawan, 2017). Salah
satu teknik pengujian white box, pendekatan jalur fundamental
2
membutuhkan pembuatan diagram alir untuk skrip program dan
perhitungan kompleksitas siklomatik.
Ujian ini mencoba mengevaluasi keefektifan program dan ketepatan
struktur program (Rahayuda & Santiari, 2017). Jalur dasar adalah jalur
berbeda yang berjalan melalui aliran program dan tidak dapat mengambil
rute yang sama dua kali. Menghitung kompleksitas logis dari aliran program
diperlukan untuk pendekatan pengujian rute dasar, yang juga menggunakan
ukuran sebagai referensi untuk menentukan jumlah jalur eksekusi.
3
BAB II
PEMBAHASAN
White box testing adalah pengujian perangkat lunak pada tingkat alur kode
program, apakah masukan dan keluaran yang sesuai dengan spesifikasi yang
dibutuhkan. (Cholifah, Yulianingsih, & Sagita, 2018), dan pengujian yang
didasarkan pada pengujian design program secara prosedural, secara strctural,
pengujian berbasis logika atau pengujian berbasis kode (Irawan, 2017). Metode
jalur dasar adalah salah satu metode white box testing, di mana dalam proses
pengujian diperlukan untuk membuat flow graph dari program skrip dan juga
menentukan nilai kompleksitas siklomatik. Tes ini bertujuan untuk menganalisis
kebenaran struktur program yang dibuat dan kinerja program (Rahayuda & Santiari,
2017). Basis path adalah suatu jalur unik yang melintasi alur progam dan tidak
diperbolehkan terjadinya perulangan lintasan yang sama. Pada metode pengujian
basic path mengharuskan menghitung kompleksitas logis dari alur program dan
menggunakan ukuran sebagai petunjuk untuk mendefinisikan jumlah jalur
eksekusi. Dalam white box testing menggunakan basis path terdapat beberapa
tahapan yaitu dengan membuat flow graph dari fungsi yang akan diuji, menghitung
cyclometic complexity (CC) dan melakukan unittest (Sakethi, Kurniawan, &
Tantriawan, 2014).
4
1) Fungsi Bulan
Fungsi bulan, adalah fungsi untuk mendapatkan bulan pada saat ini,
dengan parameter berupa angka, berikut merupakan cuplikan kodenya:
return "JANUARY"
case "02":
return "FEBRUARY";
case "03":
return "MARCH";
case "04":
return "APRIL";
case "05":
return "MAY";
case "06":
return "JUNE";
case "07":
return "JULY";
5
case "08":
return "AUGUST";
case "09":
return "SEPTEMBER";
case "10":
return "OCTOBER";
case "11":
return "NOVEMBER";
case "12":
return "DECEMBER";
6
Gambar 1 Flow graph fungsi bulan
7
Jalur independent yang didapat:
Jalur 1 : 1-2-3-26
Jalur 2 : 1-2-4-5-26
Jalur 3 : 1-2-4-6-7-26
Jalur 4 : 1-2-4-6-8-9-26
Jalur 5 : 1-2-4-6-8-10-11-26
Jalur 6 : 1-2-4-6-8-10-12-13-26
Jalur 7 : 1-2-4-6-8-10-12-14-15-26
Jalur 8 : 1-2-4-6-8-10-12-14-16-17-26
Jalur 9 : 1-2-4-6-8-10-12-14-16-18-19-26
Jalur 10 : 1-2-4-6-8-10-12-14-16-18-20-21-26
Jalur 12 : 1-2-4-6-8-10-12-14-16-18-20-22-24-25-26
Setelah menghitung CC maka jumlah test yang dilakukan sebanyak 13 kali, berikut
merupakan cuplikan kode yang digunakan dalam unit test:
package com.fish.cashflow;
@Test
public void jan(){ String tanggal = "01";
String hasilYangDiHarapkan = "JANUARY";
String hasilKalkulasi =Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void feb(){ String tanggal = "02";
8
String hasilYangDiHarapkan = "FEBRUARY";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void mar(){ String tanggal = "03";
String hasilYangDiHarapkan = "MARCH"; String hasilKalkulasi = Helper
.getMonthString(tanggal)
assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void apr(){ String tanggal = "04";
String hasilYangDiHarapkan = "APRIL"; String hasilKalkulasi = Helper
.getMonthString(tanggal)
assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void mei(){ String tanggal = "05";
String hasilYangDiHarapkan = "MAY"; String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void jun(){ String tanggal = "06";
String hasilYangDiHarapkan = "JUNE"; String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void jul(){
String tanggal = "07";
String hasilYangDiHarapkan = "JULY"; String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void agust(){ String tanggal = "08";
String hasilYangDiHarapkan = "AUGUST";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void sept(){ String tanggal = "09";
String hasilYangDiHarapkan =
9
"SEPTEMBER";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void okt(){ String tanggal = "10";
String hasilYangDiHarapkan = "OCTOBER";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void nov(){ String tanggal = "11";
String hasilYangDiHarapkan = "NOVEMBER";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void des(){ String tanggal = "12";
String hasilYangDiHarapkan = "DECEMBER";
String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
@Test
public void def(){ String tanggal = "-1";
String hasilYangDiHarapkan = ""; String hasilKalkulasi = Helper
.getMonthString(tanggal); assertEquals(hasilYangDiHarapkan,
hasilKalkulasi);
}
}
2) Fungsi Menambahkan Pengeluaran
Fungsi ini digunakan untuk menerima masukan pengeluaran kas dari pengguna
aplikasi dan data akan disimpan ke dalam basis data pada gawai ponsel. Berikut
cuplikan kode:
public boolean insertDataExpense(int id,String expense, String description, String date,
Stringcategory){
SQLiteDatabase db =this
new ContentValues();
10
contentValues.put(COL_1_E, id); contentValues.put(COL_2_E, expense);
contentValues.put(COL_3_E, description);contentValues.put(COL_4_E, date);
contentValues.put(COL_5_E, category);
Untuk mengidentifikasi jalur eksekusiprogram, selanjutnya dibuat flow graph. Dari source
code (kode sumber) di atas maka dibuat flow graph pada Gambar 2
package com.fish.cashflow;
import android.content.Context;
import android.support.test.InstrumentationRegistry;import
android.support.test.runner.AndroidJUnit4;
11
import org.junit.runner.RunWith;
@Before
appContext = InstrumentationRegistry
.getTargetContext();
db = new DatabaseHelper(appContext);
@Test()
category);
assertTrue(status);
@Test()
category);
assertFalse(status2);
12
}
Black Box
Pada Black Box Testing dilakukan pengujian yang didasarkan pada detail
aplikasi seperti tampilan aplikasi, fungsi-fungsi yang ada pada aplikasi, dan
kesesuaian alur fungsi dengan bisnis proses yang diinginkan oleh customer. Black-
box Testing ini lebih menguji ke Tampilan Luar(Interface) dari suatu aplikasi agar
mudah digunakan oleh Customer. Pengujian ini tidak melihat dan menguji souce
code program. Black-box Testing bekerja dengan mengabaikan struktur control
sehingga perhatianya hanya terfokus pada informasi domain.
1. Equivalence Partitioning
Cara kerja teknik ini adalah dengan melakukan partition atau pembagian
menjadi beberapa partisi dari input data.
2. Boundary Value Analysis
Teknik ini lebih fokus kepada boundary, dimana adakah error dari luar
atau sisi dalam software, minimum, maupun maximum nilai dari error
yang didapat.
3. Fuzzing
Fuzz merupakan teknik untuk mencari bug / gangguan dari software dengan
menggunakan injeksi data yang terbilang cacat ataupun sesi semi-otomatis.
4. Cause-Effect Graph
Ini adalah teknik testing dimana menggunakan graphic sebagai pacuannya.
Dimana dalam grafik ini menggambarkan relasi diantara efek dan
penyebab dari error tersebut.
13
5. Orthogonal Array Testong
Dapat digunakan jika input domain yang relatif terbilang kecil ukurannya,
tetapi cukup berat untuk digunakan dalam skala besar.
6. All Pair Testing
Dalam teknik ini, semua pasangan dari test case di desain sedemikian rupa
agar dapat di eksekusi semua kemungkinan kombinasi diskrit dari seluruh
pasangan berdasar input parameternya. Tujuannya testing ini adalah
memiliki pasangan test case yang mencakup semua pasangan tersebut.
7. State Transition
Testing ini berguna untuk melakukan pengetesan terhadap kondisi dari
mesin dan navigasi dari UI dalam bentuk grafik.
14
Gambar 1 Tampilan Form Login
Dengan memasukkan data yang tidak sesuai dengan tipe datanya maka
pengujian ini dijalankan pada Form Login. Jika pengguna memasukkan huruf "abc"
atau angka "123" atau kombinasi keduanya, seperti "abc123", dengan maksimal 50
huruf, rencana pengujian data Nama Pengguna akan valid. Jika Username diisi lebih
dari 50 huruf atau angka, data menjadi tidak valid. Jika kata sandi dimasukkan
menggunakan huruf "abc" atau angka "123" atau kombinasi keduanya "abc123",
dengan maksimal 20 huruf, rencana uji kata sandi data akan sah. Jika Password
yang dimasukkan dan data yang dimasukkan melebihi 20 huruf selain angka, maka
data tersebut menjadi tidak valid.
15
“abc123” untuk Username dan “abc123” Login masih ditampilkan.
untuk Password, lalu klik tombol Login.
16
Id Deskripsi Pengujian Hasil yang Diharapkan
A01 Pilih tombol radio Komunikasi, Inovasi, Informasi tersebut akan
Disiplin, dan Loyalitas pada tombol disimpan ke database,
radio "Cukup(2)", lalu klik Simpan. yang kemudian akan
Isikan NIP dengan "5", nama dengan ditampilkan di tabel
"dandi", dan sales dengan "80". yang berbeda.
A02 Anda hanya perlu mengklik Simpan Menjaga agar data tidak
setelah memasukkan "abc" untuk NIP, disimpan ke database.
"123" untuk Nama, dan "abc" untuk
Penjualan, dan setelah memilih tombol
radio Komunikasi, Inovasi, Disiplin, dan
Loyalitas pada tombol radio "Cukup(2)".
Data di Rencana Tes Penjualan akan akurat jika diisi menggunakan angka
"123". Sebaliknya, jika penjualan dimasukkan menggunakan huruf "abc", datanya
tidak valid. Salah satu data pada radiobutton harus dipilih untuk rencana uji
Komunikasi, Inovasi, Disiplin, dan Loyalitas. Hal tersebut dapat diuji berdasarkan
rancangan kasus uji (test case) yang dibuat pada Tabel 1 dan 2. Tabel 4
menampilkan hasil pengujian.
17
Klik tombol Sistem masih Username atau Sesuai
L02 Login setelah menampilkan form password yang
memasukkan Login meskipun salah akan
"abc123" untuk upaya login gagal. mengakibatka
Nama Pengguna n sistem
dan Kata Sandi. menampilkan
pesan “salah”
sedangkan
tampilan
masih pada
form login.
A01 Pilih radiobutton Informasi tersebut Ketika data Sesuai
Komunikasi, akan disimpan ke berhasil
Inovasi, Disiplin database, yang disimpan,
dan Loyalitas kemudian akan akan muncul
pada radiobutton ditampilkan di tabel kalimat "Data
"Cukup(2)". yang berbeda. Berhasil
Masukkan NIP Disimpan",
dengan "5", dan data
Nama dengan tersebut
"dandi", dan kemudian
Penjualan ditampilkan
dengan "80". di tabel yang
Langkah berbeda.
selanjutnya klik
Save.
A02 Anda hanya perlu Menjaga agar Muncul Sesuai
mengklik Simpan data tidak pesan error
setelah disimpan ke karena data
memasukkan database. tidak bisa
"abc" untuk NIP, disimpan.
"123" untuk
18
Nama, dan "abc"
untuk Penjualan,
dan setelah
memilih tombol
radio
Komunikasi,
Inovasi, Disiplin,
dan Loyalitas
pada tombol radio
"Cukup(2)".
Fungsi login dicoba dua kali, fungsi simpan diuji enam kali, fungsi edit diuji
satu kali, dan fungsi hapus diuji satu kali. Ada total empat fungsi yang diuji. Jadi,
total ada sepuluh tes. Satu fungsi menemukan kesalahan, sementara tiga fungsi
lainnya tidak menemukan kesalahan.
19
BAB III
PENUTUP
3.1 Kesimpulan
Tanpa memahami kode program yang digunakan, pengujian aplikasi
dengan pengujian blackbox berusaha untuk menentukan apakah program
tersebut sama dengan tugas yang dilakukannya. Berdasarkan pengujian
sistem seleksi terlaris yang digunakan, dapat disimpulkan bahwa pengujian
menggunakan pendekatan Black Box dan White Box berdasarkan
Equivalence Partitions dapat membantu dalam membuat kasus uji,
pengujian kualitas, dan menemukan kesalahan tersembunyi yang
disebabkan oleh kesalahan ketik. .
Ditemukan kesalahan saat mengedit data di aplikasi pemilihan
penjualan terbaik. Masalahnya tidak konsisten dengan pesan yang
ditampilkan, karena data disimpan dengan benar meskipun faktanya data
tidak berubah. Pengujian ini mengungkapkan bahwa formulir aplikasi untuk
sistem pemilihan penjualan terbaik memiliki celah kesalahan. Kesalahan-
kesalahan tersebut diharapkan dapat diperbaiki untuk meningkatkan
kualitas aplikasi yang dibuat.
3.2 Saran
Penggunaan pendekatan Blackbox dan Whitebox Testing tambahan, seperti
Boundary Value atau Error Guessing, untuk mengungkap masalah atau
kekurangan lebih lanjut dalam pengembangan aplikasi ini disarankan untuk
meningkatkan kualitas program akhir dan kemampuannya untuk memberi
manfaat bagi pengguna aplikasi.
20
DAFTAR PUSTAKA
Akiladevi, R., Vidhupriya, P., & Sudha, V. (2018). Software Testing Tools.
International Journal of Pure and Applied Mathematics, 118(18), 1783-
1800.
Hidayat, T., & Muttaqin, M. (2018). Pengujian Sistem Informasi Pendaftaran dan
Pembayaran Wisuda Online menggunakan Black Box Testing dengan
Metode Equivalence Partitioning dan Boundary Value Analysis. Jurnal
Teknik Informatika UNIS, 6(1), 25-29.
21
MZ, M. K. (2016). Pengujian Perangkat Lunak Metode Black Box Berbasis
Equivalence Partitions Pada Aplikasi Sistem Informasi Sekolah. Jurnal
Mikrotik, 6(3), 30-48.
Wahyudi, R., Utami, E., & Arief, M. R. (2016). Sistem Pakar E-Tourism Pada
Dinas Pariwisata D.I.Y Menggunakan Metode Forward Chaining. Jurnal
Ilmiah DASI, 17(2), 67-75.
Wahyudi, S., Suheri, H., & Nurhadian, T. (2015). Impelementasi Sistem Keputusan
Pengangkatan Karyawan Tetap PT. Imanuel Surya Utama Menggunakan
Metode SAW. Jurnal PROSISKO, 2(1), 34-41.
Susilo, J. (2014). Aplikasi Pengujian White Box IBII Online Jugde. Jurnal
Informatika dan Bisnis, 3(2), 56-69.
Sakethi, D., Kurniawan, D., & Tantriawan, H. (2014). Pengujian dan Perawatan
Sistem Informasi Menggunakan White Box Testing. Ilmu Komputer Unila
Publishing Network all right reserved, 27-35.
22
Rahayuda, I. S., & Santiari, N. L. (2017). Jurnal Ilmiah Kursor Menuju Solusi
Teknologi Informasi. Basis Path Testing Of Iterative Deepening Search
And Held-Karp On Pathfinding Algorithm, 39 - 48.
23