Anda di halaman 1dari 23

LOGO

Tugas 1
Testing dan Implementasi Sistem
Unit Testing

Kelompok 1:
101051125 Adina Sarmento
121051003 Lucio A da Costa
132052006 Dimas Dhica .S
132052003 Jefri Kurnia
132056013 Robert Umbu Ungu
141052012 Ari Puspratini A
141052038 Kartika Indayani
141052143 Galih Arnerangi
151056110 Sunarko Wido U

Dosen : Catur Iswahyudi,S.Kom,SE.M.Cs


What is Unit Testing?

Unit Testing adalah sebuah kode yang


ditulis oleh developer, yang
digunakan
untuk menguji bagian kecil/area
spesifik dari suatu fungsionalitas dari
kode yang akan ditest.

Unit testing dilakukan untuk


membuktikan apakah kode yang telah
ditulis berfungsi sesuai dengan
kehendak programmer.
Why Unit Testing?

Secara implisit, unit testing akan


membuat hidup seorang programmer
menjadi lebih.

Kenapa?
Why Unit
Testing?(continued)
Unit testing akan memperbaiki design code dan
mengurangi waktu yang digunakan untuk debugging
secara drastis.

Building house of cards, adalah perumpamaan yang


tepat untuk menggambarkan proses coding tanpa
testing. Karena bila pondasi/dasar dari bangunan
tersebut labil, maka bagian-bagian yang dibangun
diatasnya juga akan terpengaruh dan akhirnya
runtuh.

Perubahan kecil pada suatu modul/unit akan


merambat hingga ke level yang lebih tinggi, yang
tentunya juga membutuhkan perbaikan. Oleh karena
itu, perubahan pada level dasar harus ditest sebelum
mempengaruhi level yg lebih tinggi.
Who performs Unit
Testing?
Unit testing dilakukan oleh
programmer
yang menuliskan suatu modul/unit
tertentu.

Test code tidak akan dikirimkan ke


user, jadi hanya production code
(kode
yang digunakan dalam program
utama)
yang di-deliver ke user.
When to test a unit?

Unit testing dilakukan setelah


programmer selesai menuliskan suatu
kode/fungsi/method yang ada dalam
suatu class.

Dapat juga dilakukan setelah


menambahkan sebuah fungsionalitas
baru atau setelah melakukan

refactoring.
How?
Unit testing membutuhkan suatu tools yang
spesifik
untuk tiap-tiap bahasa pemrograman. Dan
tools
tersebut terpisah dengan bahasa
pemrograman.
Beberapa contoh tools yang digunakan pada
unit
testing :

CUnit : digunakan untuk bahasa C


JUnit : digunakan untuk bahasa Java
VBUnit : digunakan untuk bahasa Basic
NUnit : digunakan untuk bahasa C# (baca: c-
sharp)
PHPUnit : digunakan untuk bahasa PHP
Unit Testing with JUnit
Seperti yang telah disebutkan
sebelumnya, unit testing
menggunakan sebuah kelas (test
class) yang akan menguji kelas lain.
Sebuah test class hanya akan menguji
satu classsaja.
Dalam sebuah test class terdapat
beberapa test method yang
digunakan untuk menguji method-
method pada kelas lain. Sebuah
method dapat diuji oleh lebih dari
satutest method
Unit Testing with JUnit

Pada contoh diatas, sebuah method createAccount() pada


class
Account.java diuji oleh 3 buah test method.
Perlu diperhatikan, diantara ketiga test method menguji
beberapa kemungkinan yang akan menyebabkan method
createAccount() melakukan kesalahan. Sebagai contoh,
method
testCreateAcctDup() akan menguji apakah yang akan
terjadi
bila method createAccount() menemui error bila terjadi
duplikasi dalam membuat account.
Naming convention

Dalam unit testing, terdapat beberapa


aturan penamaan yang harus diikuti.
Sebuah test class harus memiliki nama yang
sama dengan class yang akan di-test dan
diberiprefix test.
Contoh:
Sebuah class Account akan memiliki sebuah
test class dengan nama TestAccount.

Penamaan tersebut dimaksudkan untuk


mempermudah dalam mengorganisasi unit
testing.
Naming convention
Berbeda dengan penamaan test class, sebuah test
method harus didahului dengan prefix test,
kemudian diikuti olehclassname, sesuai dengan
namaclass yang akan di-test

Bila test method tidak menggunakan prefix test,


maka method tersebut tidak akan dieksekusi oleh
JUnit.

Cara lainnya adalah dengan menggunakan test suite


dan memasukkan test method tersebut ke dalam test
suite. Dengan demikian, JUnit akan tetap
mengeksekusi method tersebut meskipun nama
method tersebut tidak menggandung kata test.
Test Class

sebuah test class harus merupakan turunan


(extends) dari
classjunit.framework.TestCase
Untuk dapat menggunakan semua fungsi
yang ada dalam package JUnit, kita harus
meng-importjunit.framework.* pada tiap
test class yang akan kita tulis.

import junit.framework.*;
public class TestAccount extends TestCase {
...
}
Fixtures
public void testTotalBelanja()
{
Pembayaran pmb = new Pembayaran();
assertEquals(3000,pmb.TotalBelanja(new int[]
{1000,2000}));
}
public void testBelanjaNull() {
Pembayaran pmb = new Pembayaran();
assertEquals(0,pmb.TotalBelanja(new int[] {}));
}
Pada contoh diatas terlihat duplikasi code instansiasi objek. Baris
tersebut akan kita gunakan bila kita akan membuat test method
yang
akan melakukan test terhadap class, pada kasus ini class
Pembayaran.
Dan pada umumnya baris tersebut (fixture) merupakan starting
point
dari tiap test method.

JUnit menyediakan fasilitas untuk meng-ekstrak fixture tersebut


ke dalam sebuah method yang bernamasetUp()
Fixtures (cont)
private Pembayaran pmb;
protected void setUp() {
Pembayaranpmb = new Pembayaran();
}
public class testUseCredit() {
assertEquals(pmb.isCreated());
}
public class testTotalBelanja() {
assertEquals(3000,pmb.TotalBelanja(new int[] {1000,2000}));
}
Dengan menggunakan method setUp(), kita tidak perlu lagi
melakukan instansiasi objek di setiap test method.

Penggunaan methodsetU p () ini memastikan bahwa


perubahan
terhadap objek yang terdapat dalam fixture yang disebabkan
oleh salah satu test case tidak mempengaruhi test case
lainnya
JUnit juga menyediakan method tearDown( ), yang
berfungsi untuk membersihkan test environment
setelah melakukan sebuah test. Perhatikan contoh
dibawah ini.

protected void setUp() {


dbConn = new
Connection(oracle,1521,fred,foobar);
dbConn.Connect();
}
protected voidtearDown() {
dbConn.disconnect();
dbConn = null;
}
Test Suite
Test Runner yang digunakan mempunyai
fitur untuk mencari sekumpulan test case
dalam suatu test class. Agar fitur tersebut
dapat berfungsi, kita harus mendefinisikan
method TestSuite( ), yang mengembalikan
instance TestCase atau TestSuite. Keduanya
merupakan implementasi dari interface class Test

Test Suite juga dapat digunakan untuk


mengeksekusi test method, dimana nama test
method tersebut tidak menggunakan kata
test
Test Suite
...
public voidNegative(){
assertEquals(-7,lrg.largest(new int[] {-7,-8,-
9})); }
public static Test suite() {
TestSuite suite=new TestSuite();
suite.addTest(new TestLargest("testSimple"));
suite.addTest(new TestLargest("Negative"));
return suite;

}.
Method Assert

Method assert adalah suatu method yang


akan membantu dalam menentukan
sebuah method yang sedang ditest/diuji
berjalan dengan baik atau tidak. Bila
sebuah method mengalami kegagalan,
eksekusi dari test method tersebut akan
dibatalkan sedangkan test untuk method
yang lainnya akan tetap berjalan.
Method Assert

assertEquals
assertEquals([String message],
expected, actual)
assertNull
assertNull([String message],
java.lang.Object
object)
assertTrue
assertTrue([String message], boolean
condition)
Method Assert

Perlu diingat bahwa method assert


dapat langsung mengeksekusi
method
dengan nilai balikan (fungsi)

Sedangkan untuk menguji sebuah


prosedur (void), kita harus
melakukan
perubahan dalam baris yang ada
dalam
test method tersebut.
Test Runner

JUnit menyediakan 3 buah class user interface yang


dapat digunakan untuk melakukan unit testing, yaitu :

junit.textui.TestRunner
Berbasis text

junit.awtui.TestRunner
Menggunakan tampilan Abstract Window Toolkit
(AWT) yang sederhana

junit.swingui.TestRunner
Menggunakan tampilan berbasis SWING dengan fitur
yang cukup lengkap
Daftar Pustaka

https://www.scribd.com/doc/70387
40/Unit-Testing

Anda mungkin juga menyukai