Anda di halaman 1dari 39

OO Software Testing

Dikompilasi oleh Dana dari berbagi


sumber
Definisi Software Testing
Software testing adalah aktivitas-aktivitas
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:
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
Verification vs. validation
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
Program testing
Adalah proses yang berbeda
Verification and validation: menunjukkan
keberadaan cacat program
Debugging: menemukan dan memperbaiki
kecacatan-kecacatan ini
Testing and debugging
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 10
14
jalur eksekusi! Jika kita mengeksekusi
satu test per millisecond, maka dibutuhkan 3.170 tahun untuk men-
test program ini



Selective Testing
loop < 20 X
Jalur eksekusi yang dipilih
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
events
input
output
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
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 bermacam-macam
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 kesalahan-
kesalahan 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 : kesimpulan-kesimpulan
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