Pages

Sabtu, 02 Juni 2012

PENGUJIAN PERANGKAT LUNAK (SOFTWARE TESTING)

Pengujian Perangkat Lunak adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain dan pengkodean.
Dasar­dasar Pengujian Perangkat Lunak
Pengembang perangkat lunak sesuai dengan sifatnya dasar, mereka adalah manusia pembangun. Pengujian mengharuskan pengembang membuang pemikiran­pemikiran sebelumnya mengenai “kebenaran” perangkat lunak yang baru saja dikembangkan dan mengatasi konflik minat yang terjadi pada saat kesalahan ditemukan.

Sasaran Pengujian
1. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan.
2. Pengujian yang sukses adalah pengujian yang memiliki probabilitas tinggi untuk menemukan dan mengungkapkan semua kesalahan yang belum pernah ditemukan atau diduga sebelumnya.

Prinsip Pengujian
1. Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan.
2. Pengujian harus direncanakan lama sebelum pengujian itu mulai.
3. Pengujian harus mulai “dari yang kecil” dan berkembang menjadi pengujian “yang besar”.

Karakteristik yang Membawa Perangkat Lunak Dapat Diuji
1. Operabilitas, yaitu : Semakin baik Dia bekerja, semakin efisien Dia dapat diuji.
2. Obsaikervabilitas, yaitu : “Apa yang Anda lihat adalah apa yang Anda uji”.
3. Kontralabilitas, yaitu : “Semakin baik kita dapat mengontrol perangkat lunak, semakin banyak pengujian yang dapat diotomasisasi dan dioptimalkan”.
4. Dekomposabilitas, yaitu : “Dengan mengontrol ruang lingkup pengujian, kita dapat dengan lebih cepat mengisolasi masalah dan melakukan pengujian kembali secara lebih halus”.
5. Kesederhanaan, yaitu : “Semakin sedikit yang kita uji, semakin cepat kita dapat mengujinya’.
6. Stabilitas, yaitu : “Semakin sedikit perubahan, semakin sedikit pula gangguan dalam pengujian’.
7. Kemampuan untuk dapat dipahami, yaitu : “Semakin banyak informasi yang kita miliki, semakin halus pengujian yang akan dilakukan’.

Atribut-­atribut pengujian yang baik :
1. Pengujian yang baik memiliki probabilitas yang tinggi untuk menemukan kesalahan.
2. Pengujian yang baik tidak redudan.
3. Pengujian yang baik seharusnya “jenis terbaik”,
4. Pengujian yang baik tidak boleh terlalu sederhana atau terlalu kompleks.

Tujuan Pengujian :
•    Menjalankan program untuk menemukan error yang tersembunyi atau yang sebelumnya tidak terduga.

Fase Pengujian
Ada 2 tingkat yang tersedia pada proses pegujian, yaitu :
1. Konfigurasi perangkat lunak yang mencakup spesifikasi keperluan perangkat lunak, spesifikaasi perancangan, test case dan program sumber
2. Konfigurasi uji coba yang mencakup rencana dan prosedur uji coba, test case dan hasil yang diharapkan

DESAIN TEST CASE
Desain test case merupakan metode pengujian untuk perangkat lunak untuk memastikan kelengkapan pengujian dan memberikan kemungkinan tertinggi untuk mengungkap kesalahan pada perangkat lunak.

Semua produk yang direkayasa dapat diuji dengan dua cara :
1. Dengan mengetahui fungsi yang ditentukan dimana produk yang dirancang untuk melakukanya, pengujian dapat dilakukan untuk memperlihatkan bahwa masing­masing fungsi beroperasi sepenuhnya, pada waktu yang sama mencari kesalahan pada setiap fungsi.
2. Dengan mengetahui kinerja internal suatu produk, maka pengujian dapat dilakukan untuk memastikan bahwa semua roda gigi berhubungan, yaitu operasi internal bekerja sesuai dengan spesifikasi dan semua komponen internal telah diamati dengan baik.

PENGUJIAN WHITE BOX
  • Pengujian White Box adalah metode desain test case yang menggunakan struktur control desain procedural untuk memperoleh test case.
  • Disebut juga pengujian glass­box.
  • Dengan pengujian white­box, perekayasa dapat :
1.   Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali.
2.   Menggunakan semua keputusan logis pada sisi true and false.
3.   Mengeksekusi semua loop pada nya
4.   Menggunakan struktur data internal untuk menjamin validitasnya.
  • Condition Testing
          Pengujian yang menjalankan kondisi logis yang terdapat pada modul program.
  • Data Flow Testing
          Pengujian dengan metode yang menyeleksi jalur uji program menurut lokasi pendefinisian dan menggunakan variable-variabel program
  • Loop Testing
         Pengujian yang berfokus pada validitas dari bentuk loop
1.    simple loop
2.    concatenated loop
3.    nested loop
4.    unstructured loop

PENGUJIAN BASIS PATH
  • Diperkenalkan oleh Tom McCabe
  • Pengujian basis path memungkinkan desain test case mengukur kompleksitas logis dari desain procedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi.
  • Test case yang dilakukan untuk menggunakan basis set tersebut dijamin untuk menggunakan setiap statemen di dalam program paling tidak sekali selama pengujian.
  • Perangkat yang digunakan :
1. Notasi Flow Graph atau Program Graph   
   
2. Kompleksitas Siklomatis
Kompleksitas Siklomatis adalah metric perangkat lunak yang memberikan pengukuran kuantitaif terhadap kompleksitas logis suatu program. Kompleksitas Siklomatis menentukan jumlah jalur independen dalam basis set suatu program dan memberikan batas atas bagi jumlah pengujian yang harus dilakukan untuk memastikan bahwa semua statemen telah dieksekusi sedikitnya satu kali.

3. Graph Metrik
Graph metrik adalah matrik empat persegi yang mempunyai ukuran yang sama dengan jumlah node pada flowgraph. Masing-masing baris dan kolom mempunyai hubungan dengan node yang telah ditentukan dan pemasukan data matrik berhubungan dengan hubungan (edge) antar node.
Contoh sederhana pemakaian graph metrik dapat digambarkan sebagai
berikut :

Melakukan Test Case
1. Dengan menggunakan desain atau kode sebagai dasar, gambarkan sebuah grafik alir yang sesuai.
2. Tentukan kompleksitas siklomatis dari grafik alir resultan.
3. Tentukan sebuah basis set dari jalur independen secara linier.
4.   Siapkan test case yang akan memaksa adanya eksekusi setiap basis set.

PENGUJIAN STRUKTURAL KONTROL
•    Merupakan pendekatan terhadap pengujian yang diturunkan dari pengetahuan struktur dan implementasi perangkat lunak
•    Biasanya diterapkan untuk unit program yang relatif kecil seperti subroutine atau operasi yang terkait dengan suatu objek
•    Penguji dapat menganalisa kode dan menggunakan pengetahuan mengenai struktur komponen untuk menurunkan data uji
•    Analisa kode dapat digunakan untuk menemukan beberapa kasus uji yang dibutuhkan untuk menjamin bahwa semua statement pada program atau komponen dieksekusi paling tidak satu kali pada proses pengujian

PENGUJIAN BLACK­BOX
  1. Pengujian black­box berfokus pada persyaratan fungsional perangkat lunak.
  2. Merupakan pendekatan pengujian yang ujinya diturunkan dari spesifikasi program atau komponen
  3. Disebut juga pengujian behavioral atau pengujian partisi.
  4. Pengujian black­box memungkinkan perekayasa perangkat lunak mendapatkan serangkaian input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program.
  5. Pengujian black­box berusaha menemukan :
•    Fungsi­fungsi yang tidak benar atau hilang
•    Kesalahan interface
•    Kesalahan dalam struktur data atau akses database eksternal.
•    Kesalahan kinerja
•    Inisialisasi dan kesalahan terminasi.
    
     6. Dengan mengaplikasikan teknik black­box maka kita menarik serangkaian test case  yang memenuhi kriteria berikut :
•    Test case yang mengurangi, dengan harga lebih dari satu, jumlah test case tambahan yang harus di desain untuk mencapai pengujian yang dapat dipertanggungjawabkan.
•    Test case yang memberitahu kita sesuatu mengenai kehadiran atau ketidakhadiran kelas kesalahan, daripada memberitahu kesalahan yang berhubungan hanya dengan pengujian spesifik.

Equivalence Partitioning
Equivalence partitioning adalah metode pengujian black-box yang memecahatau membagi domain input dari program ke dalam kelas-kelas data sehingga test case dapat diperoleh.
Perancangan test case equivalence partitioning berdasarkan evaluasi kelas equivalence untuk kondisi input yang menggambarkan kumpulan keadaan yang valid atau tidak. Kondisi input dapat berupa nilai numeric, range nilai, kumpulan nilai yang berhubungan atau kondisi Boolean.
Contoh : Pemeliharaan data untuk aplikasi bank yang sudah diotomatisasikan.Pemakai dapat memutar nomor telepon bank dengan menggunakan mikrokomputer yang terhubung dengan password yang telah ditentukan dan diikuti dengan perintah-perintah.
Data yang diterima adalah :
Kode area : kosong atau 3 digit
Prefix  : 3 digit atau tidak diawali 0 atau 1
Suffix  : 4 digit
Password : 6 digit alfanumerik
Perintah  : check, deposit, dll
Selanjutnya kondisi input digabungkan dengan masing-masing data elemen dapat ditentukan sebagai berikut :
Kode area : kondisi input, Boolean – kode area mungkin ada atau tidak kondisi input, range – nilai ditentukan antara  200 dan 999
Prefix : kondisi input range > 200 atau tidak diawali 0 atau 1
Suffix : kondisi input nilai 4 digit
Password   : kondisi input boolean – password mungkin diperlukan atau  tidak kondisi input nilai dengan 6 karakter string
Perintah  : kondisi input set berisi perintah-perintah yang telah
didefinisikan

Boundary Value Analysis (BVA)
Untuk permasalahan yang tidak diketahui dengan jelas cenderung menimbulkan kesalahan pada domain outputnya. BVA merupakan pilihan test case yang mengerjakan nilai yang telah ditentukan, dengan teknik perancangan test case melengkapi test case equivalence partitioning yang fokusnya pada domain input.
Petunjuk pengujian BVA :
1. Jika kondisi input berupa range yang dibatasi nilai a dan b, test case harus  dirancang dengan nilai a dan b.
2. Jika kondisi input ditentukan dengan sejumlah nilai, test case harus  dikembangkan dengan mengerjakan sampai batas maksimal nilai tersebut.
3. Sesuai petunjuk 1 dan 2 untuk kondisi output dirancang test case sampai jumlah maksimal.
4. Untuk struktur data pada program harus dirancang sampai batas kemampuan.