Anda di halaman 1dari 39

OO Software Testing

Dikompilasi oleh Dana dari


berbagi sumber

Definisi Software Testing


Software testing adalah aktivitasaktivitas yang bertujuan untuk
mengevaluasi atribut-atribut atau
kemampuan sebuah program atau
sistem dan penentuan apakah sesuai
dengan hasil yang diharapkan [Hetzel88]
Testing adalah proses pemeriksaan
program dengan tujuan tertentu dalam
menemukan kesalahan sebelum
diserahkan ke pengguna

Verification vs. validation


Verification:
Apakah kita membangun produk dengan
benar?
Software seharusnya sesuai dengan
spesifikasinya. Gunakan proses software
yang bagus.

Validation:
Apakah kita membangun produk yang
benar?
Software seharusnya melakukan apa yang
pengguna benar-benar butuhkan

Program testing
Dapat menunjukan keberadaan
kesalahan tapi BUKAN ketidakadaan
kesalahan yang lain
Test yang sukses adalah sebuah test
yang menemukan satu atau lebih
kesalahan
Seharusnya digunakan bersama
dengan verification statik untuk
memberikan V&V sepenuhnya

Testing and debugging


Adalah proses yang berbeda
Verification and validation:
menunjukkan keberadaan cacat
program
Debugging: menemukan dan
memperbaiki kecacatan-kecacatan
ini

Tujuan Dilakukan Software


Testing
Untuk meningkatkan kualitas
Untuk Verification & Validation
(V&V)
Untuk estimasi reliability
[Kaner93] [Lyu95]

Melakukan testing berarti


melakukan
Mendesain test.
Mengimplementasikan test yang
telah didesign.
Mengevaluasi test tersebut.

Exhaustive Testing

loop < 20 X

Terdapat kemungkinan 1014 jalur eksekusi! Jika kita


mengeksekusi satu test per millisecond, maka
dibutuhkan 3.170 tahun untuk men-test program ini

Selective Testing
Jalur eksekusi yang dipilih

loop < 20 X

Tahapan Testing
Pre-Implementation Testing
Post implementation (Code
Testing)
Metode pengembangan software
apapun yang digunakan, penguji bisa
menggunakan dua teknik testing:
White Box
Black Box

White-Box
Testing

. Tujuan kita adalah menjamin semua


statemen dan kondisi telah dieksekusi
minimal sekali
..

Black-Box Testing
requirements

output

input

events

Strategi OO Testing[1]

Strategi OO Testing[2]
Unit Testing Pengujian class/object
Integration Testing object
integration testing
System Testing

Pengujian class/object
Encapsulated state Memeriksa
interaksi method-method dengan
data obyek
Interaksi antar method Memeriksa
interaksi method-method dari
sebuah obyek
Pewarisan dan polimorfisme

Unit Testing[1]
Tahapan testing yang paling awal.
Tahap selanjutnya terdiri dari integration
testing dan system testing
Biasanya unit didefinisikan sebagai:
Suatu fungsi atau prosedur tunggal yang kohesif
Segmen terkecil dari kode program yang bisa
dikompile secara terpisah.
Sebuah fungsi yang pas pada suatu halaman
tunggal.
Kode yang bisa ditulis oleh seseorang dalam suatu
kurun waktu.

Definisi yang biasa dipakai yaitu definisi pada


point pertama.

Unit Testing[2]
Input untuk proses test planning terdiri
dari requirement dan detailed design.
Output dari proses test planning
adalah unit test plan.
Tahap selanjutnya adalah akuisisi data
input dan output yang berasosiasi
dengan masing-masing test. Hasil dari
tahap ini dinamakan test set.
Test di eksekusi.

Unit Testing[3]( IEEE )

Pengujian Method[1]
Memverifikasi operasi pada nilai normal parameter
(sebuah black box test yang berdasarkan pada
kebutuhan unit)
Memverifikasi operasi pada nilai limit parameter
(black box)
Memverifikasi operasi nilai diluar batas nilai
parameter (black box)
Memastikan bahwa semua instruksi di eksekusi
(statement coverage)
Cek semua path, termasuk semua cabang (decision
coverage)
Cek semua penggunaan object yang dipanggil
Memverifikasi penanganan dari semua struktur data

Pengujian Method[2]
Memverifikasi penanganan semua file
Cek terminasi normal dari semua loop ( part
of correctness proof)
Cek terminasi abnormal dari semua loop
Cek terminasi normal dari semua rekursif
Cek terminasi abnormal dari semua rekursif
Memverifikasi penanganan semua kondisi
error
Cek timing dan sinkronisasi
verifikasi semua ketergantungan hardware

Class Testing
Kombinasikan penggunaan method
biasanya 2-5 METHOD
pilih rangkaian pertama yang paling umum
masukan rangkaian yang mungkin menyebabkan error

Fokuskan unit test pada masing-masing atribut


inisialisasi, lalu eksekusi rangkaian method yang
dipengaruhinya

Verifikasi masing-masing invariant class tidak berubah


Verifikasi object transisi diantara state-state yang ada.
Rencanakan rangkaian state/transisisi
Set up object dalam inisial state dengan menyeting
variable
Sediakan event pertama dan cek transisi yang terjadi

Pengujian integrasi object


Menguji unit yang telah diuji secara tunggal bekerja
secara baik pula setelah digabungkan pada sistem
Mereka akan digabungkan ke dalam suatu grup
logis yang koheren untuk diuji kembali( subsistem )
Saat subsistem tersebut berhasil bekerja dengan
baik maka akan dilanjutkan dengan
menggabungkannya dengan subsistem yang lain
dan seterusnya sampai membentuk suatu sistem
utuh yang teruji
Hal yang diperhatikan yaitu memeriksa semua unit
apakah bekerja bersama dengan baik.
Penguji lebih mengkonsentrasikan pada interaksi
unit daripada fungsionalitasnya

Merancang dan Melakukan


Integration Testing
Putuskan bagaimana dan dimana untuk
menyimpan, menggunakan kembali dan
mengkodekan integration test
tunjukan dalam project schedule

Ekesekusi unit-unit test sebanyak mungin


sesuai dengan waktu yang tersedia
Gunakan test regresi
Pastikan kebutuhan pembangunan telah
dispesifikasikan.
Gunakan use case yang harus
diimplementasikan
Eksekusi system test

Artifact yang terlibat dalam


proses integration test
use case model :Kumpulan use case yang
menggambarkan penggunaan typical dari aplikasi, dan
sequence diagram
test cases : input untuk setiap test
test procedure : cara bagaimana test di set up,
dieksekusi, dan dievaluasi(hasil). Dapat berupa prosedur
manual ataupun menggunakan tools untuk test otomasi
test evaluation : kesimpulan, detail dan effect dari
error yang ditemukan
test plan : Rencana keseluruhan test
test component : source code untuk test itu sendiri
serta untuk code aplikasi yang akan di test
defect (kerusakan) : laporan untuk setiap defect/error
yang ditemukan, diklasifikasikan berdasarkan type dan
tingkat peliknya kerusakan

Tahapan System Testing[1]


Memeriksa apakah sistem sudah berlaku dengan
benar atau belum saat digunakan oleh user.
Memperkirakan apakah sistem dapat
menanggulangi segala kondisi dan data
mainstream.
Memeriksa performansi behaviour dari sistem.
Misal berapa lama waktu yang diperlukan sistem
untuk mengerjakan suatu tugas yang diberikan.
Menguji volume, stress dan storage untuk
meeriksa performance dibawah kondisi ekstrim
seperti jumlah input yang besar, high speed
input, jumlah user yang banyak serta
meningkatnya jumlah aktivitas secara tiba-tiba.

Tahapan System Testing[1]


Semua perhitungan diperiksa
ketepatannya dengan data dan kondisi
yang telah diperkirakan maupun tidak.
Menguji error handling dan recovery dari
sistem seperti memeriksa bahwa akan
keluar pesan error yang tepat pada setiap
kondisi dan pemulihan yang baik setelah
sistem mengalami fatal errror.
Memeriksa kelayakan tingkat keamanan
pada sistem agar user yang tidak
berwenang tidak dapat memperoleh akses
ke sistem.

Tipe-tipe system testing[1]


volume : memfokuskan untuk input yang
besar
usability : mengukur reaksi user ( skala 1-10)
performance : mengukur kecepatan pada
beberapa keadaan
configurasi : mengkonfogurasi untuk
bermacam-macam hardware atau software
compatibility : komplabiliti dengan aplikasi
lain ( contoh: mengukur waktu adaptasi)
reliability/availability : mengukur
ketahanan pada periode waktu yang lama

Tipe-tipe system testing[2]


security
resource usage : mengukur penggunaan
RAM, ruang disk, dll
installability : di install pada bermacammacam keadaan (mengukur waktu install)
recoverability : mengukur waktu untuk
me-recover
serviceability : mengukur waktu service
load/stress: untuk data extreme dan
traffic

Tipe-Tipe Testing lainnya


Regression Testing
Acceptance Testing by user or a
testing team
Beta Testing
Release testing

Regression Testing
Terlalu sering memperbaiki kesalahankesalahan software memacu pada
kesalahan-kesalahan baru
Seorang programmer yang bijak
memperbaiki suatu kesalahan pada
program ia akan melaksanakan semua
kasus uji dan dan memeriksa hasilnya
apakah program tersebut masih
menghasilkan hasil yang sama

Acceptance Testing by user


or a testing team
Acceptance test dilakukan oleh customer
setelah suatu software dipasarkan.
Biasanya tes ini adalah sekumpulan formal
tes yang dilakukan untuk mengetahui
apakah sistem tersebut sesuai dengan
kriteria penerimaan customer
Acceptance test sering dilakukan diawal
agar para programmer atau developer
team bisa melakukannya sebelum secara
formal memasarkan software tersebut

Beta Testing
Jika sebuah produk software akan dibangun
untuk konsumsi publik maka diuji terlebih
dahulu oleh orang luar sebelum akhirnya
direlease.
Beta testing dilakukan oleh sekumpulan orang
yang merepresentasikan suatu tipe user yang
akan mempergunakan software yang sedang
dibangun. Peran mereka yaitu untuk
memberikan feedback dari pengalaman
mereka memakai produk tersebut dalam
lingkungan kerja.

Release testing
Release testing adalah pengujian kelayakan
suatu produk agar dapat dipasarkan keluar.
Apakah semua disk atau CD sudah berisi file-file
yang benar, apakah file-file yang digunakan sudah
pada versi yang benar, apakah disk dan CDnya
bebas dari virus dan terdapat dokumentasi yang
lengkap didalamnya.
Penguji akan melaksanakan pengujian tingkat
tinggi terhadap apakah software telah melakukan
apa yang telah diminta dengan membandingkan
software, dokumentasi kebutuhan, materi
marketing dan dokumentasi user.

Siapa yang melakukan


testing?
Orang yang melakukan pengujian akan
bergantung pada tahap yang sedang
dilakukan dan sumber yang dialokasikan
untuk menguji produk software tertentu,
yakni :
Programmer
Tim penguji
Beta tester(Group yang mewakili pasar)
Customer
Maintainer

Standar ANSI/IEEE untuk test


dokumentasi[]
introduction
test plan : item dalam test,ruang lingkup,
pendekatan, resource, jadwal, personel
test design: item yang ditest,
pendekatan, rencana detail
test case : kumpulan input dan event
test procedures : langkah-langkah untuk
menyeting dan mengeksekusi test case

Standar ANSI/IEEE untuk test


dokumentasi[]
test item transmittal report : item-item
dalam test, lokasi fisik dari hasil, orang yang
bertanggung jawab untuk transmitting
test log : kronologi record, lokasi fisik dari
hasil, nama penguji
test incident report : dokumentasi dari
setiap event yang terjadi selama test, yang
membutuhkan investigasi lebih lanjut
test summary report : kesimpulankesimpulan dari keseluruhan point-point di
atas

Testing Tools[1]
Testing bervolume besar biasanya
membutuhkan penggunaan tool-tool
otomatis. Jacobson menyarankan bahwa
75% dari test lebih baik dilakukan secara
otomatis daripada dilakukan secara manual.
Kemampuan dari tools otomatis system test:
merekam aksi mouse dan keyboard untuk
memungkinkan pengulangan pemutaran
kembali
jalankan test script secara berulang-ulang
memungkinkan untuk merekam hasil test

Testing Tools[2]

merekam waktu eksekusi


merekam run time error
membuat dan mengatur regression test
menghasilkan test report
menghasilkan test data
merekam penggunaan memory
mengatur/mengelola test case
analisa keseluruhan

Daftar Pustaka
Britton, Carol dan Doake, Jill, Object Oriented
System Development: A gentle Introduction ,
Singapore: McGraw-Hill, Inc., 2001
Braude, Eric J.,Software Engineering: An Object
Oriented Perspective, United State of America: John
Wiley & Sons,Inc., 2000
Bahrami, Ali, Object Oriented System Development,
Singapore: McGraw-Hill, Inc., 1999
Pressman, Roger S.,The 5th edition of Software
Engineering: A Practitioner's Approach,McGraw-Hill.
Sommerville, Ian, Software Engineering, 6th edition,
Pearson Education, 2001
http://www.cetus-links.org/oo_testing.html
http://www.testing.com/writings/1-fault.htm
http://www.rbsc.com/pages/who_who.html

Anda mungkin juga menyukai