Anda di halaman 1dari 52

Testing dan Implementasi

1
Seberapa baik sistem yang
sudah dibangun ?
Dua Aspek yang dipertimbangkan:
Apakah implementasi sudah sesuai dengan spesifikasi ?
Apakah spesifikasi sesuai dengan kebutuhan user ?
Validasi
Apakah sistem yang dikembangkan sudah benar?
Pengujian dimana sistem ketika diimplementasikan sesuai
dengan yang iharapkan
Verifikasi
Apakah sistem dikembangkan dengan cara yang benar ?
Pengujian apakah sistem sudah sesuai dengan spesifikasi

2
Proses Testing
Unit testing
Pengujian masing-masing unit komponen program
untuk meyakinkan bhw sudah beroperasi secara
benar
Module Testing
Pengujian terhadap koleksi unit-unit komponen
yang saling berhubungan.
Sub-system Testing
Pengujian terhadap koleksi module-module yang
membentuk suatu sub-system (aplikasi)

3
Proses Testing
System Testing
Pengujian terhadap integrasi sub-system, yaitu
keterhubungan antar sub-system
Acceptance Testing
Pengujian terakhirs sebelum sistem dipakai oleh
user.
Melibatkan pengujian dengan data dari pengguna
sistem.
Biasa dikenal sebagai alpha test (beta test untuk
software komersial, dimana pengujian dilakukan
oleh potensial customer)

4
Proses Testing

Unit Module Sub-system System Acceptance


Testing Testing Testing Testing Testing

User
Component Testing Integration Testing Testing

5
The testing process
Component testing
Pengujian komponen-komponen program
Biasanya dilakukan oleh component developer
(kecuali untuk system kritis)
Integration testing
Pengujian kelompok komponen-komponen yang
terintegrasi untuk membentuk sub-system
ataupun system
Dialakukan oleh tim penguji yang independent
Pengujian berdasarkan spesifikasi sistem

6
Rencana Pengujian
Proses testing
Deskripsi fase-fase utama dalam pengujian
Pelacakan Kebutuhan
Semua kebutuhan user diuji secara individu
Item yg diuji
Menspesifikasi komponen sistem yang diuji
Jadual Testing
Prosedur Pencatatan Hasil dan Prosedur
Kebutuhan akan Hardware dan Software
Kendala-kendala
Mis: kekuranga staff, alat, waktu dll.
7
Hubungan antara rencana pengujian dan
proses pengembangan system

Spesifikasi Spesifikasi Perancangan Detail


Kebutuhan System System Perancangan

Acceptance System Sub-System Module and


Test plan Integration Integration Unit code and
Test plan Test plan test

Acceptance System Sub-System


Service Integration Integration
test
test test
8
Failures, Faults
Failure: output yang tidak benar/tidak sesuai ketika
sistem dijalankan
Fault: kesalahan dalam source code yang mungkin
menimbulkan failure ketika code yg fault tsb dijalankan

Failure Class Deskripsi


Transient Muncul untuk input tertentu
Permanent Muncul untuk semua input
Recoverable Sistem dapat memperbaiki secara otomatis
Unrecoverable Sistem tidak dapat memperbaiki secara otomatis
Non-corrupting Failure tidak merusak data
Corrupting Failure yang merusak sistem data
9
Contoh: Faults, Errors, and
Failures
1: input A,B Suppose node 6 should be
X:= C*(A+2*B)
Failure-less fault:
2: A>0?
executing path
(1,2,4,5,7,8) will not
reveal this fault because 6
3: C :=0 4: C := A*B
is not executed
nor will executing path
(1,2,3,5,6,8) because C =
0
5: B>0?
Need to make sure proper
test cases are selected
the definitions of C at
6: X := C*(A+2*A) 7: X := A+B
nodes 3 and 4 both affect
the use of C at node 6
executing path
8: output X (1,2,4,5,6,8) will reveal
the failure, 10
but only if B /= 0
Prioritas Testing
Hanya test yang lengkap yg dapat
meyakinkan sistem terbebas dari kesalahan,
tetapi hal ini sangat sulit dilakukan.
Prioritas dilakukan terhadap pengujian
kemampuan sistem, bukan masing-masing
komponennya.
Pengujian untuk situasi yg tipikal lebih
penting dibandingkan pengujian terhadap nilai
batas.

11
Test data dan kasus test
Test data: Input yang yang
direncankan digunakan oleh sistem.
Test cases: Input yang digunakan
untuk menguji sistem dan memprediksi
output dari input jika sistem beroperasi
sesuai dengan spesifikasi.

12
Proses defect testing

Test Test Test Test


cases data results reports

Design test Prepare test Run program Compare results


cases data with test data to test cases

13
Black-box testing
Pendekatan pengujian dimana program
dianggap sebagai suatu black-box
(kotak hitam)
Program test case berbasiskan
spesifikasi
Test planning dapat dimulai sejak awal
proses pengembangan sistem

14
Black-box testing
Inputs causing
anomalous
Input test data I behaviour
e

System

Outputs which reveal


the presence of
Output test results Oe defects

15
Equivalence partitioning
Input data dan output hasil terdapat di klas
yang berbeda yang sesuai dengan klas
inputnya
Masing-masing klas equivalensi partition
diprosres dimana program akan memproses
anggota klas-klas tersebut secara equivale.
Test cases dipilih dari masing-masing partisi

16
Equivalence partitioning

Invalid inputs Valid inputs

System

Outputs

17
Equivalence partitioning
Partition system inputs and outputs into
equivalence sets
If input is a 5-digit integer between 10000 and
99999,
equivalence partitions are <10000, 10000-99999
and > 100000
Choose test cases at the boundary of these
sets
00000, 9999, 10000, 99999, 100001

18
Equivalence partitions
3 11
4 7 10

Less than 4 Between 4 and 10 More than 10

Number of input values

9999 100000
10000 50000 99999

Less than 10000 Between 10000 and 99999 More than 99999

Input values
19
Search routine specification
procedure Search (Key : ELEM ; T: ELEM_ARRAY;
Found : in out BOOLEAN; L: in out ELEM_INDEX) ;

Pre-condition
-- the array has at least one element
TFIRST <= TLAST
Post-condition
-- the element is found and is referenced by L
( Found and T (L) = Key)
or
-- the element is not in the array
( not Found and
not (exists i, TFIRST >= i <= TLAST, T (i) = Key ))

20
Search routine - input
partitions
Inputs yang sesuai dg pre-conditions
Inputs yang tidak sesuai pre-condition
Inputs dimana key element ada di
dalam array
Inputs dimana key element tidak
terdapat di dalam array

21
Search routine - input
partitions
Array Element
Single value In sequence
Single value Not in sequence
More than 1 value First element in sequence
More than 1 value Last element in sequence
More than 1 value Middle element in sequence
More than 1 value Not in sequence

Input sequence (T) Key (Key) Output (Found, L)


17 17 true, 1
17 0 false, ??
17, 29, 21, 23 17 true, 1
41, 18, 9, 31, 30, 16, 45 45 true, 7
17, 18, 21, 23, 29, 41, 38 23 true, 4
21, 23, 29, 33, 38 25 false, ??
22
Structural testing
Disebut juga white-box testing
Penentuan test case disesuaikan
dengan struktur sistem. Knowledge
program digunakan untuk
mengidentifikasi test case tambahan.
Tujuannya untuk menguji semua
statement program (debug).

23
White-box testing
Test data

Tests Derives

Component Test
code outputs

24
Path testing
Tujuannya meyakinkan bahwa himpunan test
case akan menguji setiap path pada suatu
program paling sedikit satu kali.
Titik awal untuk path testing adalah suatu
program flow graph yang menunjukkan node-
node yang menyatakan program decisions
(mis.: if-then-else condition) dan busur
menyatakan alur kontrol
Statements dengan conditions adalah node-
node dalam flow graf.

25
Program flow graphs
Menggambarkan alur kontrol. Setiap cabang
ditunjukkan oleh path yg terpisah dan loop
ditunjukkan oleh arrows looping kembali ke
loop kondisi node.
Digunakan sebagai basis untuk menghitung
cyclomatic complexity
Cyclomatic complexity = Jumlah edges
Jumlah Node +2
Cyclomatic complexity menyatakan jumlah test
untuk menguji control statements

26
1

while bottom <= top


bottom > top
2

3 if (elemArray [mid] == key

8 4
(if (elemArray [mid]< key

5 6
9

7
Binary search flow
graph
Independent paths
1, 2, 3, 8, 9
1, 2, 3, 4, 6, 7, 2
1, 2, 3, 4, 5, 7, 2
1, 2, 3, 4, 6, 7, 2, 8, 9
Test cases harus ditentukan sehingga
semua path tsb tereksekusi.

28
Integration testing
Pengujian keseluruhan system atau sub-
system yang terdiri dr komponen yg
terintegrasi.
Test integrasi menggunakan black-box
dengan test case ditentukan dari spesifikasi.
Kesulitannya adalah menemukan/melokasikan
Penggunaan Incremental integration testing
dapat mengurangi masalah tersebut.

29
Incremental integration
testing
A T1
T1
A
T1 T2
A B
T2
T2 B T3
T3
B C
T3 T4
C
T4
D T5

Test sequence Test sequence Test sequence


1 2 3
30
Pendekatan integration testing
Top-down testing
Berawal dari level-atas system dan terintegrasi dengan
mengganti masing-masing komponen secara top-down
dengan suatu stub (program pendek yg mengenerate
input ke sub-system yg diuji).
Bottom-up testing
Integrasi components di level hingga sistem lengkap
sudah teruji.
Pada prakteknya, kebanyakan test integrasi
menggunakan kombinasi kedua strategi
pengujian tsb.

31
Top-down testing
Testing
Level 1 Level 1 . ..
sequence

Level 2 Level 2 Le vel 2 Level 2

Le vel 2
stubs

Le vel 3
stubs

32
Bottom-up testing
Test
drivers
Testing
Level N Level N Le vel N Level N Level N
sequence

Test
drivers
Level N1 Level N1 Level N1

33
Pendekatan Testing
Architectural validation
Top-down integration testing lebih baik digunakan
dalam menemukan error dalam sistem arsitektur.
System demonstration
Top-down integration testing hanya membatasi
pengujian pada awal tahap pengembangan system.
Test implementation
Seringkali lebih mudah dengan menggunakan
bottom-up integration testing

34
Interface testing
Dilakukan kalau module-module dan sub-
system terintegrasi dan membentuk sistem
yang lebih besar
Tujuannya untuk medeteksi fault terhadap
kesalahan interface atau asumsi yg tidak valid
terntang interface tsb.
Sangat penting untuk pengujian terhadap
pengembangan sistem dgn menggunakan
pendekatan object-oriented yg didefinisikan
oleh object-objectnya

35
Interface testing
Test
cases

A B

36
Interfaces types
Parameter interfaces
Data dikirim dari satu procedure ke procedure lainnya.
Shared memory interfaces
Block of memory dishare diantara procedure-procedure
Procedural interfaces
Sub-system mengencapsulasi sekumpulan procedure-
procedure yang akan dipanggil oleh sub-system lainnya
Message passing interfaces
Sub-systems meminta services dari sub-systems lainnya

37
Interface errors
Interface misuse
componen pemanggil memanggil component lainnya
dan membuat suatu kesalahan dalam penggunaan
interfacenya (mis.: parameter dg urutan yg tidak
sesuai).
Interface misunderstanding
component pemanggil salah dalam mengasumsikan
behaviour component yg dipanggil.
Timing errors
Component yg memanggil dan yg dipanggil beroperasi
pada kecepatan yg berbeda sehingga dimungkinkan
mengakses informasi yg tidak uptodate
(synchronization
problem). 38
Petunjuk melakukan Interface
testing
Merancang test dimana parameter ke procedure
yg dipanggil berada pada nilai batas extrim
Test Menggunakan null pointer
Perancangan tests sehingga component yg di
test akan fail.
Menggunakan stress testing pada message
passing
Pada shared memory systems, variasikan urutan
dimana komponen diaktifkan.

39
Stress testing
Menguji sistem dengan nilai yg melebihi
maksimum load. Stressing suatu system
menyebabkan tidak mudah kerusakan.
Stressing suatu system test failure behaviour.
Systems seharusnya tidak gagal total. Stress
testing mencek kehilangan service yg tidak
diduga ataupun data yg hilang.
Khusus untuk sistem terdistribusi dapat
menyebabkan degradasi jaringan sehingga
overload.

40
Object-oriented testing
Components yang diuji adalah class
object yang diinstantiate ke object.
Lebih besar dibandingkan pengujian
sebuah function sehingga pendekatan
white-box testing perlu diperluas.
Tidak jelasnya top suatu system untuk
top-down integration dan testing

41
Testing levels
Testing operations pada objects
Testing object classes
Testing clusters cooperating objects
Testing OO system secara lengkap

42
Object class testing
Complete test yang menguji class melibatkan
Testing semua operations suatu object
Setting dan interrogating semua attribute object
Menguji object untuk semua state(keadaan) yg
mungkin
Inheritance akan mengakibatkan sulitnya
perancangan object class tests seperti
information yg diuji sulit dilokalisasi.

43
Contoh: Weather station
object interface
WeatherStation Test cases dibutuhkan untuk semua operations
Menggunakan state model untuk
identifier mengidentifikasi state transitions testing
Contoh testing sequences
reportWeather ()
calibrate (instruments) Shutdown Waiting Shutdown
test () Waiting Calibrating Testing
startup (instruments) Transmitting Waiting
shutdown (instruments) Waiting Collecting Waiting
Summarising Transmitting Waiting

44
Integrasi Object
Levels integrasi sedikit berbeda untuk sistem
yang berorientasi object.
Cluster testing digunakan untuk test integrasi
and testing clusters terhadap cooperating
objects
Identifikasi clusters menggunakan knowledge
dari operation objects dan system features
yang diimplementasikan oleh cluster tersebut.

45
Approaches cluster testing
Use-case atau scenario testing
Testing berdasarkan pada interaksi user
dengan sistem.
Keuntungannya diujikan oleh user yg
berpengalaman.
Object interaction testing
Tests barisan interaksi object yang
berhenti ketika suatu operation object tidak
memanggil service dari object lain.

46
Scenario-based testing
Identifikasi scenarios dari use-cases
dan menambahkannya dengan diagram
interaksi yang menunjukkan object-
object yang terlibat dalam scenario
Lihat contoh scenario berikut ini pada
sistem weather station ketika suatu
report dibuat

47
Collect weather data
:CommsController :WeatherStation :WeatherData

request (report)

acknowledge ()
report ()
summarise ()

send (report)
reply (report)

acknowledge ()

48
Weather station testing
Thread pengeksekusian methode
CommsController:request WeatherStation:report
WeatherData:summarise

Inputs dan outputs


Input report request dengan acknowledge yg sesuai
serta output report akhir
Dapat diujikan dengan membuat raw data dan
meyakinkan bahwa dapat menghasilkan kesimpulan
(summarize) yg sesuai.
Gunakan raw data yg sama untuk menguji object
WeatherData

49
Testing workbenches
Testing merupakan suatu proses yg cukup
mahal. Testing workbenches menyediakan
tool-tool untuk mereduksi waktu yg
dibutuhkan dan total cost pengujian
Kebanyakan testing workbenches merupakan
open systems karena kebutuhan testing
membutuhkan tergantung dr spesifikasi
organisasi
Sulit diintegrasikan dengan closed design dan
analysis workbenches

50
A testing workbench
Test data
Specification
generator

Source Test Oracle


code manager Test data

Dynamic Program Test Test


analyser being tested results predictions

Execution File
Simulator
report comparator

Report Test results


generator report
51
Tetsing workbench adaptation
Scripts dibuat untuk user interface
simulator dan model test data generator
Test outputs harus disiapkan secara
manual sebagai pembanding.
Special-purpose file comparators harus
dibuat

52

Anda mungkin juga menyukai