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 () { } …… publicvoid 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 public class VehicleOTS { privateString VIN; public VehicleOTS () { } 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
1
2,3 2 6
R2
3
4,5 R1
6
7
4 5
8
7
R3
8
9
9
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 :
1
2,3
6
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 7
R3
8
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.valid; INTERFACE ACCEPTS value, minimum, maximum; TYPE value[1:100] IS SCALAR ARRAY; TYPE average, total.input, 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] <> -999 AND total.input < 100 4 increment total.input by 1; IF value[i] >= minimum AND value[i] <= maximum THEN increment total.valid by 1; 5 7 sum = sum + value[i]; ELSE skip; ENDIF 8 increment i by 1; 9 ENDDO IF total.valid > 0 10 THEN average = sum / 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 :
1
– 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
5
R6
P R1
6 R2
8
7
– – – – – –
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) = valid input, dimana k < i untuk 2 < i < 100 value(i) = -999, dimana 2 < i < 100 exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya Note : jalur 1 tdk bisa diuji sendiri, bag. dr. jalur 4,5,6
Jalur 2:
value(i) = -999 exp.res. = nilai rata2 adl. -999, nilai total pd nilai awal
Jalur 3:
mulai dari proses 101 atau lebih hasil dari 100 pertama harus valid exp.res. = idem jalur 1
Jalur 4:
value(k) = valid input, dimana k < 100 value(i) < minimum, dimana k < i exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya
Jalur 5:
value(k) = valid input, dimana k < 100 value(i) > maximum, dimana k < i exp.res. = nilai rata2 valid sesuai dg nilai n dan totalnya
Jalur 6:
value(i) = valid input, dimana i < 100 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 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 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 nama terdiri 1 - 6 (req.) - Kasus uji valid : list terdiri [1..6] nama - Kasus uji tdk valid : - 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. [-1,0;1,0] Kasus uji valid : nilai -1,0 dan 1,0 Kasus uji tdk. valid : nilai -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