Kamis, 18 Desember 2008

22053853

Definisi Testing

  • Menurut Hetzel 1973: proses pemantapan kepercayaan akan kinerja program atau sistem sebagaimana yang diharapkan.
  • Menurut Myers 1979: proses eksekusi program atau sistem secara intens untuk menemukan error.
  • Menurut Hetzel 1983 (Revisi): tiap aktivitas yang digunakan untuk dapat melakukan evaluasi suatu atribut atau kemampuan dari program atau sistem dan menentukan apakah telah memenuhi kebutuhan atau hasil yang diharapkan.
  • Menurut Standar ANSI/IEEE 1059: proses menganalisa suatu entitas software untuk mendeteksi perbedaan antara kondisi yang ada dengan kondisi yang diinginkan ( defects / errors / bugs ) dan mengevaluasi fitur- fitur dari entitas software.

Definisi Testing Software

  • Testing software adalah proses mengoperasikan software dalam suatu kondisi yang dikendalikan, untuk verifikasi apakah telah berlaku sebagaimana telah ditetapkan, validasi apakah spesifikasi yang telah ditetapkan sudah memenuhi keinginan atau kebutuhan dari pengguna yg sebenarnya.
  • Verifikasi adalah pengecekan atau pengetesan entitas-entitas, termasuk software untuk pemenuhan dan konsistensi dengan melakukan evaluasi hasil terhadap kebutuhan yang telah ditetapkan. ( Are we building the system right?)
  • Validasi melihat kebenaran system, apakah proses yang telah ditulis dalam spesifikasi adalah apa yang sebenarnya diinginkan atau dibutuhkan oleh pengguna.( Are we building the right system?)
  • Deteksi error: Testing seharusnya berorientasi untuk membuat kesalahan secara intensif, untuk menentukan apakah suatu hal tersebut terjadi bilamana tidak seharusnya terjadi atau suatu hal tersebut tidak terjadi dimana seharusnya mereka ada.

Strategi Testing

  • Strategi testing software mengintegrasikan metode - metode disain test cases software ke dalam suatu rangkaian tahapan yang terencana dengan baik sehingga pengembangan software dapat berhasil.
  • Strategi menyediakan peta yang menjelaskan tahap - tahap yang harus dilakukan sebagai bagian dari testing, dan membutuhkan usaha, waktu, dan sumber daya bilamana tahap - tahap ini direncanakan dan dilaksanakan.
  • Strategi testing harus menjadi satu kesatuan dengan perencanaan tes, disain test case , ekesekusi tes, dan pengumpulan serta evaluasi data hasil testing.
  • Strategi testing software harus cukup fleksibel untuk dapat mengakomodasi kustomisasi pendekatan testing. Pada saat yang bersamaan, harus juga cukup konsisten dan tegas agar dapat melakukan perencanaan yang masuk akal dan dapat melakukan manajemen perkembangan kinerja proyek.

Pendekatan Strategi Testing

  • Sejumlah strategi testing software diadakan untuk menyediakan kerangka testing bagi pengembang software dengan karekteristik umum sebagai berikut:
  1. Testing dimulai dari tingkat komponen terkecil sampai pada integrasi antar komponen pada keseluruhan sistem komputer tercapai.
  2. Teknik testing berbeda - beda sesuai dengan waktu penggunaannya.
  3. Testing dilakukan oleh pengembang software dan (untuk proyek besar) dilakukan oleh suatu grup tes yang independen.
  4. Testing dan debugging adalah aktifitas yang berlainan, tapi debugging harus diakomodasi disetiap strategi testing.

Unit Testing

  • Unit testing berfokus pad usaha verifikasi pada unit terkecil dari disain software – komponen atau modul software.
  • Penggunaan diskripsi disain tingkat komponen sebagai tuntunan, jalur kendali yang penting dites untuk menemukan errors , terbatas pada modul tersebut.
  • Kompleksitas relatif terhadap tes dan errors yang dicakup dibatasi oleh batasan - batasan dari cakupan yang telah ditetapkan pada unit testing .
  • Unit testing berorientasi white box , dan tahapan dapat dilakukan secara paralel pada banyak komponen.

Implementasi dari Unit testing

Untuk memastiakan kebenaran dari algoritma atau kode yang dibuat diperlukan proses testing dan pada kesempatan ini akan dibahas lebih lanjut implementasi unit testing menggunakan JUnit. JUnit ditulis oleh Erich Gamma dan Kent Beck sebagai sebuah open source. JUnit adalah standard tidak langsung sebagai pustaka pengujian untuk bahasa Bahasa. Dari pustaka ini pula, muncul komunitas-komunitas pengembang yang menurunkan JUnit untuk bahasa pemrograman lain, seperti untuk .NET yang disebut sebagai NUnit (http://www.nunit.org), PHPUnit (http://www.phpunit.de) untuk bahasa PHP dan JSUnit (http://www.jsunit.net) untuk bahasa JavaScript. JUnit merupakan satu framework untuk melakukan testing aplikasi java dan dapat didownload dalam bentuk “jar” di link di bawah ini :

(http://sourceforge.net/project/showfiles.php?group_id=15278&package_id=12472).

Contoh penerapan JUnit

Langkah pertama yang mesti dilakukan adalah dengan mendownload file JUnit pada link yang tertera diatas kemudian extract file JUnit dimanapun terserah anda contoh extract di desktop asalkan jangan extract di direktori Java_Home atau direktori instalasi Java. Langkah berikut set classpath untuk JUnit ini yang dapat anda lakukan pada klik kanan My Computer à advanced à Enviroment Variables kemudian masukan classpathnya disana. Selanjutnya tinggal membuat class untuk testing yang biasaanya memiliki format sebagai berikut :

import junit.framework.TestCase;
public class NamaClass_Test extends TestCase {
public NamaClass_Test(String name) {
super(name);
}
public void testSesuatu() {
// assert disini
}
public void testSesuatuLagi() {
// assert disana
}
public void testSesuatuLainnya() {
// assert dimana-mana
}

}

Buat sebuah class yang akan dipakan untuk unit testing, misalnya simpel1 :

public class simple1 {

private String pesan;

private int angka;

public int getAngka() {

return angka;

}

public void setAngka(int angka) {

this.angka = angka;

}

public void setPesan(String pesan) {

this.pesan = pesan;

}

public String getPesan() {

return pesan;

}

public String tentukanGenapGanjil(int angka){

this.angka = angka;

if(this.angka % 2 == 0){

setPesan("genap");

}else{

setPesan("ganjil");

}

return this.pesan;

}

}

Class ini terdiri dari dua variable pesan dan angka beserta method getter dan setternya ditambah satu method untuk menentukan genap dan ganjil.

Buat class untuk melakukan unit testing dalam hal ini diberi nama testSimpel1 :

import junit.framework.TestCase;

public class testSimple1 extends TestCase {

simple1 sim = new simple1();

public testSimple1(String name) {

super(name);

}

public void testGanjilGenap(){

int ganjil = 1;

assertEquals("test ganjil genap", "ganjil", sim.tentukanGenapGanjil(ganjil));

}

public void testGetAngka(){

sim.setAngka(5);

assertEquals("test get", 5, sim.getAngka());

}

public static void main(String[] args) {

junit.textui.TestRunner.run(testSimple1.class);

}

}

Untuk membuat class unit test, dibuat satu class yang meng inherit class TestCase dari framework JUnit, kemudian class tersebut harus melakukan Overriding dari constructor super classnya.

Pada method testGanjilGenap(), yang dites adalah method tentukanGanjilGenap dari class simple1. Diberikan sebuah integer ganjil 1, di test apakah method tentukanGanjilGenap() mengembalikan nilai yang semestinya (yaitu ganjil). Method yang dipakai adalah assertEquals(). Ada 3 parameter yang dimasukan antara lain :

  • Pesan testing
  • Nilai yang diharapkan
  • Nilai hasil eksekusi

Nilai yang diharapkan akan keluar adalah ganjil, hasil dari eksekusi method sim.tentukanGenapGanjil(ganjil) dimana variable ganjil diberi nilai 1.

Pada method testGetAngka() yang dites adalah getter dari variable angka pada class simple1. Diberikan nilai 5, dicek apakah getter mengeluarkan nilai yang sama dan langkah terakhir adalah membuat main method. Untuk melakukan testing, dipanggil method junit.textui.TestRunner.run(); dengan parameter file class dari testSimple1.

Jika output dari program seperti dibawah ini maka proses testing berhasil dilewati oleh class simple1 dengan sukses karena method yang digunakan pada test case sudah mengembalikan nilan sesuai dengan harapan.

Time: 0

OK (2 tests)

Daftar Pustaka

http://www.mikroskil.ac.id/~roni/TIS/TIS1.pdf

http://www.mikroskil.ac.id/~roni/TIS/TIS14.pdf

http://wilbertjava.wordpress.com/2008/03/27/menggunakan-junit-untuk-tes-unit-part-1/

Tidak ada komentar: