DESAIN TEST CASE Tugas ke 11 Rekayasa Perangkat Lunak
Dibuat oleh : Dekha Sundhawati (41813120217) Dosen Pengampu : Wachyu Hari Haji, S.Kom,MM
JURUSAN SISTEM INFORMASI FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA
1
DESAIN TEST CASE
Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan spesifikasi, desain dan pengkodean. Meningkatnya visibilitas (kemampuan) perangkat lunak sebagai suatu elemen sistem dan “biaya” yang muncul akibat kegagalan perangkat lunak, memotivasi dilakukannya perencanaan yang baik melalui pengujian yang teliti. Pada dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak yang dapat dianggap sebagai hal yang merusak daripada membangun. Dalam melakukan uji coba ada 2 masalah penting yang akan dibahas, yaitu : A. Teknik uji coba perangkat lunak B. Strategi uji coba perangkat lunak TEKNIK UJI COBA PERANGKAT LUNAK Pada dasarnya, pengujian merupakan suatu proses rekayasa perangkat lunak yg dapat dianggap (secara psikologis) sebagai hal yg destruktif daripada konstruktif. SASARAN PENGUJIAN (Glen Myers) : 1. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan. 2. Test case yg baik adalah test case yg memiliki probabilitas tinggi untuk menemukan kesalahan yg belum pernah ditemukan sebalumnya. 3. Pengujian yg sukses adalah pengujian yg mengungkap semua kesalahan yg belum pernah ditemukan sebelumnya. PRINSIP PENGUJIAN (diusulkan Davis) : 1. Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan. 2. Pengujian harus direncanakan lama sebelum pengujian itu dimulai. 3. Prinsip Pareto berlaku untuk pengujian perangkat lunak. Prinsip Pareto mengimplikasikan 80% dari semua kesalahan yg ditemukan selama pengujian sepertinya akan dapat ditelusuri sampai 20% dari semua modul program. 4. Pengujian harus mulai "dari yg kecil" dan berkembang ke pengujian "yang besar". 5. Pengujian yg mendalam tidak mungkin. 6. Paling efektif, pengujian dilakukan oleh pihak ketiga yg independen.
2
TESTABILITAS Testabilitas perangkat lunak adalah seberapa mudah sebuah program komputer dapat diuji. Karena pengujian sangat sulit, perlu diketahui apa yg dapat dilakukan untuk membuatnya menjadi mudah. Karakteristik perangkat lunak yg diuji : * OPERABILITAS, semakin baik dia bekerja semakin efisien dia dapat diuji. * OBSERVABILITAS, apa yg anda lihat adalah apa yg anda uji. * KONTROLABILITAS, semakin baik kita dapat mengontrol perangkat lunak semakin banyak pengujian yg adapat diotomatisasi dan dioptimalkan. * DEKOMPOSABILITAS, dengan mengontrol ruang lingkup pengujian kita dapat lebih cepat mengisolasi masalah dan melakukan pengujian kembali. * KESEDERHANAAN, semakin sedikit yg diuji semakin cepat pengujian. * STABILITAS, semakin sedikit perubahan semakin sedikit gangguan pengujian. * KEMAMPUAN DIPAHAMI, semakin banyak informasi yg dimiliki semakin detail pengujiannya. ATRIBUT PENGUJIAN YG BAIK : * Memiliki probabilitas yg tinggi menemukan kesalahan. * Tidak redundan. * Harusnya ‘jenis terbaik’. * Tidak boleh terlalu sederhana atau terlalu kompleks. Terdapat bermacam-macam rancangan metode test case yg dapat digunakan, semua menyediakan pendekatan sistematis untuk uji coba, yg terpenting metode menyediakan kemungkinan yg cukup tinggi menemukan kesalahan.
Terdapat 2 macam test case:
1.
Pengetahuan fungsi yg spesifik dari produk yg telah dirancang untuk diperlihatkan, test dapat dilakukan untuk menilai masing-masing fungsi apakah telah berjalan sebagaimana yg diharapkan.
2. Pengetahuan tentang cara kerja dari produk, test dapat dilakukan untuk memperlihatkan cara kerja dari produk secara rinci sesuai dengan spesifikasinya.
3
Dalam lingkungan yang ideal, perekayasa perangkat lunak mendesain suatu program computer, sebuah sistem atau produk dengan testabilitas dalam pikirannya. Hal ini memungkinkan individu yang berurusan dengan pengujian mendesain test case yang efektif secara lebih mudah. Testabilitas adalah seberapa mudah sebuah program computer dapat diuji. Karena sangat sulit, perlu diketahui apa yang dapat dilakukan untuk membuatnya menjadi lebih mudah. Procedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi. Sasaran utama desain test case adalah untuk mendapatkan serangkaian pengujian yang memiliki kemungkinan tertinggi di dalam pengungkapan kesalahan pada perangkat lunak. Untuk mencapai sasaran tersebut, digunakan 4 kategori yang berbeda dari tehnik desain test case: Pengujian white-box, pengujian black-box, Integrasi Bottom-Up dan Integrasi TopDown.
a.WHITE BOX TESTING
Pengujian white box (glass box) adalah pengujian yang didasarkan pada pengecekan terhadap detil perancangan, menggunakan struktur kontrol dari desain program secara procedural untuk membagi pengujian ke dalam beberapa kasus pengujian. Penentuan kasus uji disesuaikan dengan struktur system, pengetahuan mengenai program digunakan untuk mengidentifikasikan kasus uji tambahan. Tujuan
penggunaan
white
box
untuk
menguji
semua
statement
program.
Penggunaan metode pengujian white box dilakukan untuk 1. Memberikan jaminan bahwa semua jalur independen suatu modul digunakan minimal satu kali 2. Menggunakan semua keputusan logis untuk semua kondisi true atau false 3. Mengeksekusi semua perulangan pada batasan nilai dan operasional pada setiap kondisi. 4. Menggunakan struktur data internal untuk menjamin validitas jalur keputusan. Teknik Pengujian white-box berfokus pada struktur control program. Test case dilakukan untuk memastikan bahwa semua statemen pada program telah dieksekusi paling tidak satu kali selama pengujian dan bahwa semua kondisi logis telah diuji. Pengujian basic path, tehnik pengujian white-box, menggunakan grafik (matriks grafiks) untuk melakukan serangkaian
4
pengujian yang independent secara linear yang akan memastikan cakupan.
b. BLACK BOX TESTING
Pengujian black box merupakan pendekatan komplementer dari teknik white box, karena pengujian black box diharapkan mampu mengungkap kelas kesalahan yang lebih luas dibandingkan teknik white box. Pengujian black box berfokus pada pengujian persyaratan fungsional perangkat lunak, untuk mendapatkan serangkaian kondisi input yang sesuai dengan persyaratan fungsional suatu program.
Pengujian black box adalah pengujian aspek fundamental sistem tanpa memperhatikan struktur logika internal perangkat lunak. Metode ini digunakan untuk mengetahui apakah perangkat lunak berfungsi dengan benar. Pengujian black box merupakan metode perancangan data uji yang didasarkan pada spesifikasi perangkat lunak. Data uji dibangkitkan, dieksekusi pada perangkat lunak dan kemudian keluaran dari perangkat lunak dicek apakah telah sesuai dengan yang diharapkan. 1. Pengujian black box berusaha menemukan kesalahan dalam kategori fungsi-fungsi yang tidak benar atau hilang 2. Kesalahan interface 3. Kesalahan dalam struktur data atau akses database eksternal 4. Kesalahan kinerja 5. Inisialisasi dan kesalahan terminasi. Berbeda
dengan
pengujian
white
box,
pengujian
black
box
cenderung
diaplikasikan selama tahap akhir pengujian. Pengujian black box harus dapat menjawab pertanyaan sebagai berikut :
Bagaimana validitas fungsional diuji
Kelas input apa yang akan membuat kasus pengujian menjadi lebih baik
Apakah system akan sangat sensitive terhadap harga input tertentu
Bagaimana batasan dari suatu data diisolasi
Kecepatan data apa dan volume data apa yang akan ditoleransi oleh system
Apa pengaruh kombinasi tertentu dari data terhadap system operasi.
5
Teknik pengujian black-box berfokus pada domain informasi dari perangkat lunak, dengan melakukan test case dengan menpartisi domain input dari suatu program dengan cara yang memberikan cakupan pengujian yang mendalam. Ciri-Ciri Black Box Testing
1.
Black box testing berfokus pada kebutuhan fungsional pada software, berdasarkan pada spesifikasi kebutuhan dari software.
2.
Black box testing bukan teknik alternatif daripada white box testing. Lebih daripada itu, ia merupakan pendekatan pelengkap dalam mencakup error dengan kelas yang berbeda dari metode white box testing.
3.
Black box testing melakukan pengujian tanpa pengetahuan detil struktur internal dari sistem atau komponen yang dites. juga disebut sebagai behavioral testing, specification-based testing, input/output testing atau functional testing
Pada black box testing terdapat jenis teknik design test yang dapat dipilih berdasarkan pada tipe testing yang akan digunakan, yang diantaranya :
1.
Equivalence Class Partitioning
2.
Boundary Value Analysis
3.
State Transitions Testing
4.
Cause-Effect Graphing
Kategori error yang akan diketahui melalui black box testing :
Fungsi yang hilang atau tak benar
Error dari antar-muka
Error dari struktur data atau akses eksternal database
Error dari kinerja atau tingkah laku
Error dari inisialisasi dan terminasi
6
c.
Integrasi Top-Down adalah pendekatan incremental dengan menggerakkan ke bawah melalui hirarki control, dimulai dengan control utama. Strategi intergrasi top-down memeriksa control mayor atau keputusan pada saat awal di dalam proses pengujian. Pada struktur program yang difaktorkan dengan baik, penarikan keputusan terjadi pada tingkat hirarki yang lebih tinggi sehingga terjadi lebih dulu. Strategi top-down kelihatannya tidak sangat rumit, tetapi di dalam praktenya banyak menimbulkan masalah logistic. Biasanya masalah ini terjadi jika dibutuhkan pemrosesan di dalam hirarki pada tingkat rendah untuk menguji secara memadai tingkat yang lebih tinggi.
d.
Pengujian Integrasi Bottom-up Memulai konstruksi dan pengujian dengan modul atomic (modul pada tingkat paling rendah pada struktur program). Karena modul diintegrasikan dari bawah ke atas, maka pemrosesan yang diperlukan untuk modul subordinate ke suatu tuingkat yang diberikan akan selalu tersedia dan kebutuhan akan stub dapat dieliminasi. Strategi integrasi bottom-up dapat diimplementasi dengan langkah-langkah:
1. Modul tingkat rendah digabung ke dalam cluster (build) yang melakukan subfungsi perangkat lunak spesifik. 2. Driver (program control untuk pengujian) ditulis untuk mengkoordinasi input dan output test case 3. Cluster diuji 4. Driver diganti dan cluster digabungkan dengan menggerakkannya ke atas di dalam struktur program.
PENGUJIAN BASIS PATH
Pengujian Basis Path adalah pengujian White box yg diusulkan oleh Tom McCabe. Pengujian Basis Path adalah pengujian White box yg diusulkan oleh Tom McCabe. Metode ini memungkinkan desainer test case mengukur kompleksitas logis dari desain prosedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi Metode ini memungkinkan desainer test case mengukur kompleksitas logis dari desain prosedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi Tujuannya
7
adalah meyakinkan bahwa himpunan test case akan menguji setiap path pada satu program sedikitnya satu kali Tujuannya adalah meyakinkan bahwa himpunan test case akan menguji setiap path pada satu program sedikitnya satu kali. Notasi Diagram Alir Untuk menggambar grafik alir, terlebih dulu membuat bagan alir. Untuk menggambar grafik alir, terlebih dulu membuat bagan alir. Bagan alir menggambarkan struktur kontrol program Bagan alir menggambarkan struktur kontrol program Dari bagan alir, baru dipetakan menjadi grafik alir yang sesuai Dari bagan alir, baru dipetakan menjadi grafik alir yang sesuai. Notasi Diagram Alir Pada kenyataannya, metode Basis-path dapat dilakukan tanpa menggunakan grafik alir. Pada kenyataannya, metode Basis-path dapat dilakukan tanpa menggunakan grafik alir. Grafik alir hanya berfungsi sbg piranti yang berguna untuk memahami aliran kontrol. Grafik alir hanya berfungsi sbg piranti yang berguna untuk memahami aliran kontrol. Kompleksitas Siklomatis Cyclomatic Complexity adalah metriks perangkat lunak yang memberikan pengukuran kuantitatif terhadap kompleksitas logis suatu program Cyclomatic Complexity adalah metriks perangkat lunak yang memberikan pengukuran kuantitatif terhadap kompleksitas logis suatu program Kompleksitas dihitung dalam salah satu dari tiga cara berikut: Kompleksitas dihitung dalam salah satu dari tiga cara berikut: 1. Jumlah region grafik alir sesuai dengan kompleksitas siklomatis 2. Kompleksitas siklomatis, V(G) ditentukan: V(G) = E-N+2 3. Ditentukan juga V(G)=P+1 Kompleksitas Siklomatis Keterangan : V(G) adalah kompleksitas siklomatis E adalah jumlah edge dari grafik alir N adalah jumlah simpul (Node) grafik alir P adalah Jumlah simpul predikat dalam grafik alir.
8
PENGUJIAN STRUKTUR KONTROL Dalam membuat aplikasi tentunya bukan hanya membutuhkan masukan (input) dan keluaran (output). Namun aplikasi yang dibuat juga harus dapat memproses secara tepat data yang pengguna inputkan sehingga diharapkan dapat menampilkan output informasi yang tepat pula. Untuk memproses data tersebut, dibutuhkan adanya prosedur yang tepat yang perlu dibuat yang merupakan suatu intruksi yang harus atautidak harus dilakukan oleh komputer. Di dalam pemrograman, instruksi yang kita tuliskan dalam bentuk kode bahasa pemrograman, tentunya tidak harus dilakukan semua secara berurutan tetapi program harus bisa memilih apa yang harus dilakukan oleh komputer ketika menemui suatu kondisi khusus yang memerintahkan komputer untuk melakukan atau mengabaikannya.
Terdapat dua jenis Struktur Kontrol yang dapat kita buat di dalam pemrograman Java yaitu : 1.Kontrol Percabangan, yaitu struktur kontrol yang memerlukan sebuah atau beberapa kondisi sebelum menjalankan program lainnya. Jika telah memenuhi suatu kondisi, maka pernyataan di dalam kondisi yang sesuai tersebut akan dijalankan. Jika tidak, maka akan mencari kondisi lainnya yang sesuai di dalam kontrol percabangan. Dan jika masih tidak ditemukan kondisi yang sesuai di dalam percabangan tersebut, maka akan dilanjutkan ke instruksi berikutnya di luar percabangan jika ada, dan akan berhenti jika tidak ada kondisi yang sesuai. Ada beberapa instruksi yang dapat kita deklarasikan untuk membuat percabangan dalam pemrograman java antara lain if, if-else dan switch.
Kontrol
Bentuk Instruksi
Percabangan
if (kondisi) { PernyataanJikaMemenuhi; } if
atau if (kondisi) { PernyataanJikaMemenuhi1; PernyataanJikaMemenuhi2;
9
.... } if (kondisi) { PernyataanJikaMemenuhi1; PernyataanJikaMemenuhi2; .... if-else
} else{ PernyataanJikaTidakMemenuhi1; PernyataanJikaTidakMemenuhi2; .... } switch (switch_ekspresi) { case nilai1 : pernyataan; // jalankan instruksi break;
// hentikan
case nilai2 : pernyataan; // jalankan instruksi break;
switch
// hentikan
case nilai3 : pernyataan; // jalankan instruksi break;
// hentikan
default: pernyataan; // jalankan instruksi break;
// hentikan
}
2.Kontrol Perulangan, yaitu struktur kontrol yang menangani sebuah instruksi yang dilakukan berulang-ulang hingga suatu kondisi terpenuhi. Blok instruksi perulangan akan diulang secara terus-menerus hingga suatu kondisi terpenuhi. Dalam perulangan, harus terdapat sebuah kondisi yang akan menyebabkan perulangan tersebut terhenti, karena jika tidak, maka perulangan akan melakukan blok instruksi tersebut secara terus-menerus tanpa
10
henti, yang akan menyebabkan kesalahan program. Ada beberapa instruksi yang dapat kita deklarasikan
untuk
membuat
percabangan
dalam
pemrograman
JAVA
antara
lain for, while dan do-while. Kontrol
Bentuk Instruksi
Perulangan
for(inisialisasi;kondisi;TahapEkspresi){ pernyataan1; for
pernyataan2; .... } while(boolean_ekspresi){ pernyataan1;
while
pernyataan2; .... } do{ pernyataan1;
do-while
pernyataan2; .... }while(boolean_ekspresi)
11