Anda di halaman 1dari 43

Oleh :

Didik Tristianto, S.Kom., M.Kom


1
2
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
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
System Testing
Pengujian terhadap integrasi sub-system, yaitu
keterhubungan antar sub-system
Acceptance Testing
Pengujian terakhir 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
5
Unit
Testing
Module
Testing
Sub-system
Testing
System
Testing
Acceptance
Testing
Component Testing
Integration Testing
User
Testing
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
Dilakukan oleh tim penguji yang independent
Pengujian berdasarkan spesifikasi sistem
6
7
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: kekurangan staff, alat, waktu dll.

8
9
Spesifikasi
Kebutuhan
Spesifikasi
System
Perancangan
System
Detail
Perancangan
Acceptance
Test plan
System
Integration
Test plan
Sub-System
Integration
Test plan
Module and
Unit code and
test
Acceptance
test
System
Integration
test
Sub-System
Integration
test
Service
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
10
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
11
1: input A,B
2: A>0?
3: C :=0
4: C := A*B
5: B>0?
6: X := C*(A+2*A) 7: X := A+B
8: output X
Suppose node 6 should be
X:= C*(A+2*B)
Failure-less fault:
executing path (1,2,4,5,7,8)
will not reveal this fault
because 6 is not executed
nor will executing path
(1,2,3,5,6,8) because C = 0
Need to make sure proper
test cases are selected
the definitions of C at
nodes 3 and 4 both affect
the use of C at node 6
executing path (1,2,4,5,6,8)
will reveal the failure,
but only if B /= 0
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.
12
Test data: Input yang yang direncanakan
digunakan oleh sistem.

Test cases: Input yang digunakan untuk
menguji sistem dan memprediksi output dari
input jika sistem beroperasi sesuai dengan
spesifikasi.
13
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).
14
15
Component
code
Test
outputs
Test data
Derives
Tests
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.
16
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
17
1
2
3
4
6 5
7
while bottom <= top
if (elemArray [mid] == key
(if (elemArray [mid]< key
8
9
bottom > top
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.
19
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.
20
21
T3
T2
T1
T4
T5
A
B
C
D
T2
T1
T3
T4
A
B
C
T1
T2
T3
A
B
Test sequence
1
Test sequence
2
Test sequence
3
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.
22
23
Level 2 Level 2 Level 2 Level 2
Level 1 Level 1
Testing
sequence
Level 2
stubs
Level 3
stubs
. . .
24
Level N Level N Level N Level N Level N
Level N1 Level N1 Level N1
Testing
sequence
Test
drivers
Test
drivers
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
25
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
26
27
Test
cases
B A
C
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
28
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).
29
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.
30
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.
31
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
32
Testing operations pada objects
Testing object classes
Testing clusters cooperating objects
Testing OO system secara lengkap
33
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.
34
Test cases dibutuhkan untuk semua
operations
Menggunakan state model untuk
mengidentifikasi state transitions
testing
Contoh testing sequences
Shutdown Waiting Shutdown
Waiting Calibrating Testing
Transmitting Waiting
Waiting Collecting Waiting
Summarising Transmitting
Waiting

35
identifier
reportWeather ()
calibrate (instruments)
test ()
startup (instruments)
shutdown (instruments)
WeatherStation
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.

36
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.
37
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
38
39
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

40
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
41
42
Dynamic
analyser
Program
being tested
Test
results
Test
predictions
File
comparator
Execution
report
Simulator
Source
code
Test
manager
Test data
Oracle
Test data
generator
Specification
Report
generator
Test results
report
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
43

Anda mungkin juga menyukai