Anda di halaman 1dari 51

REKAYASA PERANGKAT

LUNAK (RPL)
Implementasi dan Pengujian PL

Tujuan perkuliahan
Memahami bagaimana mentransformasikan hasil
perancangan PL ke dalam bahasa pemrograman
tingkat tinggi
Menjabarkan pengertian pengujian PL dan
metode-metode yang digunakan

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

2/51

Agenda Pembahasan
Pengertian dan Metode Implementasi
Bahasa Pemrograman
Implementasi Perancangan
Pengertian, Urgensi dan Prinsip-prinsip Pengujian
Karakteristik dan Teknik Pengujian
Strategi Pengujian

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

3/51

Implementasi

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

4/51

Pengertian, Metode
Implementasi hasil dari perancangan ke dalam
kode (coding) sesuai dengan sintaks dari bahasa
pemrograman yang digunakan
Metode :
Pemrograman terstruktur (Structured Programming SP)
Pemrograman berorientasi objek (Object Oriented
Programming - OOP)

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

5/51

Bahasa
Structured Programming :
C
Pascal
Basic, dll.

Object Oriented Programming :


C++
Java
Smalltalk, dll.

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

6/51

Object Oriented Programming


Enkapsulasi (encapsulation)
abstraksi data dan fungsi/operasi
direpresentasikan dalam sebuah klas : atribut dan operasi

Penyembunyian Informasi (information hiding)


pengaturan akses terhadap anggota klas (atribut dan operasi) dari sebuah
klas maupun klas itu sendiri
public, private, protected dan friend

Pewarisan (inheritance)

penurunan karakteristik dan perilaku sebuah klas


klas turunan (derived class/sub class)
klas induk/dasar (super class)

Polimorfisme (polymorphism)

sebuah operasi/antar muka yang memiliki banyak bentuk implementasi


Overriding  penurunan klas, aktifitas beda untuk operasi yang sama
Over loading  nama sama, tetapi tipe atau jumlah argumen berbeda

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

7/51

Object Oriented Programming : C++


Class/Object
sifat akses anggota klas (atribut & operasi) : private (klas ybs.),
protected (klas ybs. dan turunannya), public (semua klas) dan friend
(klas tertentu yg diberi hak)
memiliki konstruktor dan destruktor
class Sensor
{
friend
class Display;
public:
enum OperatingState {Off, StandBy, Monitor};
// Create a Sensor
Sensor ();
// Destructor
~Sensor ();
int
ConvertTo (float theScale, float theBias, char* unitsOfMeasure);
int
AddressOf ();
OperatingState
StateOf ();
void
WaitForMonitor ();
// Initialize and Monitor the Sensor
int
Initialize (int theInitSequence);
void
MonitorForAlarmCondition ();

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

8/51

Object Oriented Programming : C++


Class/Object (lanjutan)
protected: // Attribute for Sensor accessible only to derived classes
char*
ModelNumber;
char*
Manufacturer;
int
InitSequence;
float
Interval;
int
Address;
OperatingState
State;
float
Threshold;
float
Value;

private:
// Class variable identifying object type
static char* theObjectType = Sensor;
float Sample();
int
SetModelNumber (char* aModelNumber);
int
SetManufacturer (char* aManufacturer);

};
// Declaration of object
Sensor
IntruderSensor;

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

9/51

Object Oriented Programming : C++


Generalization Specialization
mendukung single dan multiple inheritance
klas turunan dpt dideklarasikan sbg. public (semua anggota klas
dasarnya dibuat public di klas turunannya) atau private (semua
anggota klas dasarnya dibuat private di klas turunannya)
class CriticalSensor : public Sensor
{
public:
// Create and destroy a CriticalSensor
CriticalSensor ();
CriticalSensor (const CriticalSensor& aSensor, int theAddress);
~CriticalSensor ();
// Access
float ToleranceOf ();
void MonitorForAlarmCondition ();
protected: float Tolerance;
private:

int
SetTolerance (float theTolerance);

};

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

10/51

Object Oriented Programming : C++


Aggregation
mendukung pendefinisian klas dalam klas
class Sensor
{
public:
Building
protected: Building
};

BuildingAttachedTo ();
AssociatedBuilding;

Attribute, Service : member

sifat akses : private, protected, public dan friend


atribut dapat dideklarasikan sbg. static (satu instansiasi untuk semua
objek dari klas ybs.)
konstruktor dan destruktor harus memiliki nama yg sama dengan
nama klasnya, destruktor diawali dengan tanda tilde (~)

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

11/51

Object Oriented Programming : C++


Attribute, Service : member (lanjutan)
void Sensor::MonitorForAlarmCondition ();
{
float
SensorReading = 0.0;
AlarmDevice*
WarningAlarmDevice = NULL;
AlarmEvent* WarningAlarmEvent = NULL;
// Precondition State = StandBy
if (StateOf () != StandBy)
ReportError (Invalid State);
else
{
this.WaitForMonitor (); // trigger on State = Monitor
while (StateOf () == Monitor)
{
delay (Interval);

}
};
delete WarningAlarmDevice;
delete WarningAlarmEvent;
};

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

12/51

Object Oriented Programming : Java


Class/Object
sifat akses anggota klas (atribut & operasi) : private (klas ybs.),
protected (klas ybs. dan turunannya) dan public (semua klas)
memiliki konstruktor dan tidak ada destruktor
public class Sensor
{
// Create a Sensor
public Sensor ()
{
// kode di sini
}
public
int
ConvertTo (float theScale, float theBias, String unitsOfMeasure) { //
kode di sini }
public
int
AddressOf () { // kode di sini }
public
OperatingState
StateOf () { // kode di sini }
public
void
WaitForMonitor () { // kode di sini }
// Initialize and Monitor the Sensor
public
int
Initialize (int theInitSequence);
public
void
MonitorForAlarmCondition ();

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

13/51

Object Oriented Programming : Java


Class/Object (lanjutan)
// Attribute for Sensor accessible only to derived classes
protected String
ModelNumber;
protected String
Manufacturer;
protected int
InitSequence;
protected float
Interval;
protected int
Address;
protected OperatingState
State;
protected float
Threshold;
protected float
Value;

// Class variable identifying object type


private static
String
theObjectType = Sensor;
// Attribute for Sensor accessible only to this classes
private
float
Sample();
private
int
SetModelNumber (String aModelNumber);
private
int
SetManufacturer (String aManufacturer);

};
// Object instantiation
Sensor
IntruderSensor = new Sensor ();

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

14/51

Object Oriented Programming : Java


Generalization Specialization
mendukung single inheritance saja
menggunakan istilah extends untuk mewarisi, dan super untuk
menunjuk ke klas induknya
klas turunan akan mendapatkan akses atribut dan operasi dari klas
induk yang bukan private
public class CriticalSensor extends Sensor
{
// Create a CriticalSensor
public CriticalSensor ()
{
// kode di sini
}
// Access
public float
ToleranceOf () { // kode di sini )
public void
MonitorForAlarmCondition () { // kode di sini )
protected float
Tolerance;
private int

SetTolerance (float theTolerance) { // kode di sini )

};

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

15/51

Object Oriented Programming : Java


Aggregation
mendukung pendefinisian klas dalam klas
public class Sensor
{
public
Building

BuildingAttachedTo ();

protected Building AssociatedBuilding;


};

Attribute, Service

sifat akses : private, protected dan public


atribut dpt dideklarasikan sbg. static (satu instansiasi untuk semua
objek dari klas ybs.)
tidak ada destruktor
deklarasi dan definisi operasi harus dalam satu klas yang sama
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

16/51

Object Oriented Programming : Java


Attribute, Service (lanjutan)
public class Sensor
{
private staticString
theObjectType = Sensor;
// Create a Sensor
public Sensor ()
{
}

public void MonitorForAlarmCondition ()


{
float SensorReading = 0.0;
AlarmDevice WarningAlarmDevice = NULL;
AlarmEvent WarningAlarmEvent = NULL;
// Precondition State = StandBy
if (StateOf () != StandBy)
ReportError (Invalid State);
else
{
// kode di sini
}
// kode di sini
}

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

17/51

Implementasi Perancangan (1)


Pemrograman Terstruktur

/* File MonitorSensorsExecutive.c */
# include MonitorSensorsExecutive.h;
void ResetSensor (int IDSensor);
/* File MonitorSensorsExecutive.h */
void ResetAlarm (int IDAlarm);
# include

void ResetSensor (int IDSensor);


void ResetAlarm (int IDAlarm);

Monitor
sensors
executive

Acquire
response info

Read sensors

Establish alarm
conditions

Produce
display

Alarm output
controller

Generate alarm
signal

Set up conn. to
phone net

Generate
pulses to line

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

18/51

Implementasi Perancangan (2)


Pemrograman Berorientasi Objek

VehicleOTS
VIN

public class VehicleOTS


{
privateString VIN;
public VehicleOTS ()
{
}

validateVIN()

Vehicle
color
style
year
make

public void validateVIN (String theVIN)


{
// kode di sini
}
}
public class Vehicle extends VehicleOTS
{
privateString color;
privateString style;
privateDate year;
privateString make;
public Vehicle ()
{
}
}

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

19/51

Pengujian PL

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

20/51

Pengertian, Urgensi
Suatu proses eksekusi program yang ditujukan
untuk menemukan kesalahan (Glen Myers)
Sebuah elemen penting dari penjaminan kualitas
perangkat lunak dan merepresentasikan review
akhir dari spesifikasi, perancangan dan
implementasi (Roger S. Pressman)
Urgensi : PL harus sedapat mungkin terbebas
dari segala kesalahan pada saat dieksekusi oleh
pengguna, sehingga PL harus diuji terlebih
dahulu untuk menemukan sebanyak mungkin
kesalahan sebelum digunakan oleh pengguna
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

21/51

Prinsip-prinsip
Menurut Davis :
Semua pengujian harus bisa ditelusuri ke kebutuhankebutuhan customer
Pengujian seharusnya direncanakan jauh sebelum
pengujian dimulai
Pengujian seharusnya dimulai dari yang kecil menuju
ke besar
Tidak mungkin untuk menguji seluruh kemungkinan
jalur kesalahan
Untuk lebih efektif, pengujian dilakukan oleh pihak
ketiga (bukan s/w engineer maupun programmer)
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

22/51

Karakteristik, Teknik
Karakteristik menurut Kaner, Falk dan Nguyen :
Pengujian yang baik adalah yang memiliki kemungkinan
yang tinggi untuk menemukan kesalahan
Pengujian yang baik adalah tidak duplikasi (redundant)
Pengujian yang baik adalah bisa mewakili beberapa
pengujian yang memiliki kemiripan (tujuan, waktu dan
sarana)
Pengujian yang baik adalah yang tidak terlalu sederhana
dan tidak terlalu kompleks

Teknik :
Pengujian kotak putih (white box testing)
Pengujian kotak hitam (black box testing)
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

23/51

White Box Testing


Disebut juga dengan pengujian struktur (structural
testing)
Teknik pengujian yang menggunakan struktur kontrol
dari prosedur yang terdapat dalam perancangan
untuk membuat kasus uji
Aspek-aspek pengujian :
memastikan bahwa semua jalur algoritma telah diuji
minimal sekali
menguji seluruh keputusan lojik (true atau false)
mengeksekusi seluruh loop dalam batasan yang
ditentukan
memvalidasi struktur data internal
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

24/51

White Box Testing


Jenis :
Pengujian Jalur Dasar (Basis Path Testing)
Pengujian Struktur Kontrol (Control Structure Testing)

Pengujian Jalur Dasar (Basis Path Testing)


Pengujian kotak putih yang dibuat berdasarkan
ukuran tingkat kompleksitas dari algoritma hasil
perancangan
Langkah-langkah :
Mendefinisikan flow graph berdasarkan mapping dari flow
chart atau struktur algoritma
Menentukan ukuran kompleksitas (cyclomatic complexity)
Mendefinisikan kasus uji
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

25/51

Basis Path Testing : Flow Graph


Notasi sederhana yang merepresentasikan aliran kontrol
Notasi yang digunakan :

sequence
- node (N)

if

while

until

case

- edge/link (E)

proses dan keputusan yg berurutan dimapping menjadi 1 node


setiap edge harus berakhir pada sebuah node (walaupun tdk
merepresentasikan proses apapun)
region : daerah yang dibatasi oleh edge dan node
predicate node : node yg merupakan kondisi (2 atau lebih edge
akan keluar dari sini)
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

26/51

Basis Path Testing : Flow Graph


Transformasi dari flow chart ke flow graph :
1

predicate
node

2,3
2
6

R2

3
6
7

4
5

R3

4,5
R1

10

R4

10
11
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

11
27/51

Basis Path Testing : Cyclomatic Complexity


Definisi : angka yang menyatakan jumlah jalur
independen/jalur dasar dari sebuah program
(representasi dari kompleksitas program)
Menunjukkan jumlah pengujian (kasus uji) yang
harus dieksekusi
Jalur independen (independent path) : setiap jalur
dalam program yang memiliki setidaknya satu set
pernyataan (processing statement) atau satu
kondisi yang baru sama sekali (blm digunakan
oleh jalur sebelumnya)
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

28/51

Basis Path Testing : Cyclomatic Complexity


Contoh :
Jalur independen :

2,3

6
7

R3

R2

4,5

jalur 1 : 1-11
jalur 2 : 1-2-3-4-5-10-1-11
jalur 3 : 1-2-3-6-8-9-10-1-11
jalur 4 : 1-2-3-6-7-9-10-1-11

R1

Bukan Jalur independen :


1-2-3-4-5-10-1-2-3-6-8-9-10-1-11

9
10

R4

11

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

29/51

Basis Path Testing : Cyclomatic Complexity


Perhitungan matematis cyclomatic complexity
V(G) :
V(G) = jumlah region
V(G) = E N + 2
V(G) = P + 1, dimana P predicate node

Contoh perhitungan :
V(G) = 4, ada 4 region R1, R2, R3, R4
V(G) = 11 edges 9 nodes + 2 = 4
V(G) = 3 predicate node + 1 = 4
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

30/51

Basis Path Testing : Contoh


Contoh : prosedur average
PROCEDURE average;
INTERFACE RETURNS average, total.input,
total.input, total.valid;
total.valid;
INTERFACE ACCEPTS value, minimum, maximum;
TYPE value[1:100] IS SCALAR ARRAY;
TYPE average, total.input,
total.input, total.valid,
total.valid, minimum,
maximum, sum IS SCALAR;
TYPE i IS INTEGER;
3
2
i = 1;
1 total.input = total.valid = sum = 0;
6
DO WHILE value[i]
value[i] <> -999 AND total.input < 100
4 increment total.input by 1;
IF value[i]
value[i] >= minimum AND value[i]
value[i] <= maximum
THEN increment total.valid by 1;
5
7
sum = sum + value[i];
value[i];
ELSE skip;
ENDIF
8 increment i by 1;
9 ENDDO
IF total.valid > 0 10
THEN average = sum / total.valid;
total.valid; 11
12 ELSE average = -999;
13 ENDIF
END average

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

31/51

Basis Path Testing : Contoh


Prosedur average : flow graph
Cyclomatic complexity :

V(G) = 6 regions
V(G) = 17E 13N + 2 = 6
V(G) = 5P + 1 = 6

P
2
R4

10
12

R5

13

3
11

Jalur independen :

4
R3

R6

P
R1

6
R2

jalur 1 : 1-2-10-11-13
jalur 2 : 1-2-10-12-13
jalur 3 : 1-2-3-10-11-13
jalur 4 : 1-2-3-4-5-8-9-2-
jalur 5 : 1-2-3-4-5-6-8-9-2-
jalur 6 : 1-2-3-4-5-6-7-8-9-2-

9
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

32/51

Basis Path Testing : Contoh


Prosedur average : test case
Jalur 1: value(k)
value(k) = valid input, dimana k < i untuk 2 < i < 100
value(i)
value(i) = -999, dimana 2 < i < 100
exp.res.
exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya
Note : jalur 1 tdk bisa diuji sendiri,
sendiri, bag. dr. jalur 4,5,6
Jalur 2: value(i)
value(i) = -999
exp.res.
exp.res. = nilai rata2 adl.
adl. -999, nilai total pd nilai awal
Jalur 3: mulai dari
hasil dari
exp.res.
exp.res. =

proses 101 atau lebih


100 pertama harus valid
idem jalur 1

Jalur 4: value(k)
value(k) = valid input, dimana k < 100
value(i)
value(i) < minimum, dimana k < i
exp.res.
exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya
Jalur 5: value(k)
value(k) = valid input, dimana k < 100
value(i)
value(i) > maximum, dimana k < i
exp.res.
exp.res. = nilai rata2 valid sesuai dg nilai n dan totalnya
Jalur 6: value(i)
value(i) = valid input, dimana i < 100
exp.res.
exp.res. = nilai rata2 valid sesuai dg nilai n dan totalnya

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

33/51

Control Structure Testing


Pengujian struktur kontrol, sebagai pelengkap
bagi pengujian jalur dasar (basis path testing)
Jenis :
Pengujian Kondisi (Condition Testing)
Pengujian Loop (Loop Testing)

Pengujian Kondisi (Condition Testing)


Pengujian kotak putih yang dibuat untuk menguji
kondisi lojik dalam sebuah program
Jenis-jenis kondisi :
Kondisi Sederhana (simple condition)
Kondisi Majemuk (compound condition)
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

34/51

Condition Testing
Kondisi Sederhana (Simple Condition)
Terdiri dari sebuah ekspresi relasi atau sebuah ekspresi boolean
Ekspresi relasi : E1 <operator relasi> E2
dimana, E1 dan E2 adl. ekspresi aritmatika
operator relasi : <, <=, =, , >=, >
Contoh : IF skor < 45 THEN
nilai = E
END IF
Ekspresi boolean : berisi variabel boolean, tanpa eksp. relasi
Contoh : selesai: boolean
IF selesai THEN
//lakukan sesuatu
END IF
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

35/51

Condition Testing
Kondisi Majemuk (Compound Condition)
Terdiri dari dua atau lebih kondisi sederhana,
operator boolean, dan tanda kurung
Operator boolean : OR (|), AND (&), NOT (!)
Contoh : skor, absen: float
nilai: string
IF (skor > 45 AND skor < 55) OR
absen < 0.8 THEN
nilai = D
ELSE
//lakukan sesuatu
END IF
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

36/51

Condition Testing
Strategi Pengujian
Pengujian Cabang (branch testing)
Pengujian dilakukan untuk setiap cabang true atau false
dari kondisi, minimal sekali dilakukan untuk setiap cabang
Contoh :
IF skor < 45 THEN
nilai = E
END IF
Kasus uji: - TRUE, skor < 45
- FALSE, skor >= 45

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

37/51

Condition Testing
Strategi Pengujian
Pengujian Domain (domain testing)
Pengujian dilakukan untuk setiap kemungkinan nilai dari
ekspresi kondisi
Untuk ekspresi relasi : E1 <operator relasi> E2, perlu 3
kasus uji yaitu E1 > E2, E1 = E2 dan E1 < E2
Contoh :
IF skor < 45 THEN
nilai = E
END IF
Kasus uji:1. E1 > E2 : skor bernilai lebih dari 45
2. E1 = E2 : skor bernilai 45
3. E1 < E2 : skor bernilai kurang dari 45

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

38/51

Condition Testing
Strategi Pengujian
Pengujian Domain (domain testing) - lanjutan
Untuk ekspresi boolean : dengan n variabel maka perlu 2n
kasus uji
Contoh :
IF selesai THEN
//lakukan sesuatu
END IF
Kasus uji:1. selesai=TRUE
2. selesai=FALSE

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

39/51

Loop Testing
Pengujian kotak putih yang dilakukan untuk menguji validitas
dari struktur loop
Jenis-jenis loop :

simple loop
nested loop

Simple loop : dg. maks. n kali


Kasus uji tidak melewati loop sama sekali
Kasus uji m kali melewati loop, dimana m < n
Kasus uji n-1, n, n+1 melewati loop
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

40/51

Loop Testing
Nested loop : loop bersarang/loop di dalam loop, jumlah
kasus uji semakin besar
Pengujian dimulai dari loop paling dalam. Set iterator loop yang
lain dengan nilai minimum
Lakukan pengujian simple loop untuk loop paling dalam,
sementara loop luarnya diset pada iterator yang minimum
Contoh : i, j: integer
DO WHILE i < 100
j = 0
DO WHILE j < 10
Tampilkan nilai j ke layar
Naikkan nilai j dengan 1
ENDDO
Naikkan nilai i dengan 1
ENDDO
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

41/51

Black Box Testing


Disebut juga dengan pengujian perilaku (behavioral
testing) atau pengujian fungsi (functional testing)
Fokus pada kebutuhan fungsi (functional
requirement) dari PL
Sebagai pelengkap bagi white box testing (bukan
sebagai alternatif)
Jenis-jenis :

Pengujian klas ekivalen (equivalence class testing)


Pengujian batas (limit testing)
Pengujian acak (robustness testing)
Pengujian kebutuhan (requirements testing)

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

42/51

Equivalence Class Testing


Dikenal juga sbg. Pengujian Partisi Ekivalen
(equivalence partitioning testing)
Pengujian kotak hitam yg. membagi domain
masukan sebuah program menjadi klas-klas data
dimana kasus uji nantinya akan diturunkan
Satu kasus uji mengkover satu klas kesalahan
Kumpulan data dari setiap klas data memiliki
pengaruh yang sama terhadap program
Mengurangi jumlah kasus uji : efisiensi
Sebuah klas ekivalen merepresentasikan sebuah
kondisi masukan yg mewakili keadaan valid atau
tidak valid
RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

43/51

Equivalence Class Testing


Pedoman umum penentuan klas ekivalen :
Kondisi masukan adalah sebuah rentang : 1 klas ekivalen valid
dan 2 klas ekivalen tidak valid
Contoh :
Sebuah counter hanya menghitung 1 999 (req.)
- Kasus uji valid : nilai [1..999]
- Kasus uji tdk valid : counter < 1, counter > 999

Kondisi masukan adalah sebuah nilai tertentu : 1 klas ekivalen


valid dan 2 klas ekivalen tidak valid
Contoh :
Sebuah list
- Kasus uji
- Kasus uji

nama terdiri
valid : list
tdk valid :

1 - 6 (req.)
terdiri [1..6] nama
- tdk ada nama sama sekali
- list terdiri > 6 nama

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

44/51

Equivalence Class Testing


Pedoman umum penentuan klas ekivalen (lanjutan) :
Kondisi masukan adl. sebuah anggota dari suatu kumpulan : 1
klas ekivalen valid per anggota dan 1 klas ekivalen tidak valid
Contoh :
Merk mobil yg diperbolehkan adl. Toyota, Honda,
Daihatsu dan Suzuki (req.)
- Kasus uji valid : Toyota, Honda, Daihatsu, Suzuki
- Kasus uji tdk valid : Hyundai atau KIA atau Audi

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

45/51

Equivalence Class Testing


Contoh kasus :
Req.: - masukan dari program adl. integer [-100,100]
- keluarannya adl. tanda +/- sesuai nilai
masukan (0 dianggap positif)
Klas ekivalen valid :
- nilai [-100,-1] akan menghasilkan -
- nilai [0,100] akan menghasilkan +
Klas ekivalen tidak valid :
- integer < -100
- integer > 100

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

46/51

Limit Testing
Dikenal juga sbg. Pengujian Analisis Nilai Batas
(boundary value analysis testing - BVA)
Pengujian kotak hitam yg. menguji nilai-nilai yang
terdapat di perbatasan (limit)
Pedoman umum - jika suatu kondisi masukan adalah
sebuah rentang antara a dan b maka kasus ujinya (2
kasus valid dan 2 kasus tidak valid):
- nilai a, b
- nilai > b (mendekati b), nilai < a (mendekati a)
Contoh :
Jika masukan data valid adl.
Kasus uji valid : nilai -1,0
Kasus uji tdk. valid : nilai

[-1,0;1,0]
dan 1,0
-1,001 dan 1,001

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

47/51

Robustness Testing
Pengujian kotak hitam dengan memasukkan nilai-nilai
yang diluar dari kebutuhan yang ditentukan
(requirement)
Tujuan : untuk membuktikan bahwa tidak ada even yang
kacau (catasthropic : hang, shutdown, dll.) pada P/L
dengan dimasukkannya nilai-nilai yang tidak normal
Contoh :
Jika masukan sebuah password valid adl. 5 karakter
[a..z;A..Z]
Kasus uji :masukkan sembarang karakter dan sembarang
jumlah karakter, misal : z##12 atau iu831280j
Ex. result:P/L tidak boleh mengalami hang

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

48/51

Requirements Testing
Pengujian kotak hitam yang dilakukan untuk menguji
apakah kebutuhan (requirement : functional,
performance, security, dll.) yang ditentukan selama
proses analisis kebutuhan terpenuhi atau tidak
Setiap kebutuhan harus bisa dilacak ke kasus uji
dengan menggunakan traceability matrix
Traceability matrix :
No.

Requirements

Test Name

Test Case

1.

SRS_REQ_XXX1

Measure_Data_T1

Get_Marked_T4.1

....

SRS_REQ_XXX2

Measure_Data_T1

Get_Traced_T4.2

Remark

....

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

49/51

Strategi
Aktifitas untuk mengintegrasikan kasus2 uji dari
beberapa teknik yang ada ke dalam sebuah
rangkaian langkah-langkah pengujian yang
terencana
Urgensi : untuk efisiensi dan efektifitas
Tahapan :

Pengujian Unit (unit testing)


Pengujian Integrasi (integration testing)
Pengujian Validasi (validation testing)
Pengujian Sistem (system testing)

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

50/51

Penutup
Metode pengembangan (prosedural atau OO)
yang digunakan pada tahapan analisis,
perancangan dan implementasi harus
bersesuaian
Pengujian PL bertujuan untuk menemukan
sebanyak mungkin kesalahan (error) atau bug
yang mungkin muncul sebelum PL diserahkan
kepada customer

RPL - Implementasi dan Pengujian PL / Tri A. Kurniawan, S.T, M.T, Ph.D

51/51