440 likes | 785 Views
OO Software Testing. Dikompilasi oleh Dana dari berbagi sumber. Definisi Software Testing.
E N D
OO Software Testing Dikompilasioleh Dana dariberbagisumber
Definisi Software Testing • Software testing adalahaktivitas-aktivitas yang bertujuanuntukmengevaluasiatribut-atributataukemampuansebuah program atausistemdanpenentuanapakahsesuaidenganhasil yang diharapkan[Hetzel88] • Testing adalahprosespemeriksaan program dengantujuantertentudalammenemukankesalahansebelumdiserahkankepengguna
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 berartimelakukan • Mendesain test. • Mengimplementasikan test yang telah didesign. • Mengevaluasi test tersebut.
Exhaustive Testing • Terdapat kemungkinan 1014 jalur eksekusi! Jika kita mengeksekusi satu test per millisecond, maka dibutuhkan 3.170 tahun untuk men-test program ini loop < 20 X
Selective Testing Jalureksekusi 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[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] • Tahapantesting yang paling awal. • Tahapselanjutnyaterdiridari integration testing dan system testing • Biasanyaunit didefinisikansebagai: • Suatufungsiatauprosedurtunggal yang kohesif • Segmenterkecildarikode program yang bisadikompilesecaraterpisah. • Sebuahfungsi yang pas padasuatuhalamantunggal. • Kode yang bisaditulisolehseseorangdalamsuatukurunwaktu. • Definisiyang biasadipakaiyaitudefinisipada 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.
Pengujian Method[1] • Memverifikasioperasipadanilai normal parameter (sebuah black box test yang berdasarkanpadakebutuhan unit) • Memverifikasioperasipadanilai limit parameter (black box) • Memverifikasioperasinilaidiluarbatasnilai parameter (black box) • Memastikanbahwasemuainstruksidieksekusi (statement coverage) • Ceksemua path, termasuksemuacabang (decision coverage) • Ceksemuapenggunaan object yang dipanggil • Memverifikasipenanganandarisemuastrukturdata
Pengujian Method[2] • Memverifikasipenanganansemua file • Cekterminasi normal darisemua loop ( part of correctness proof) • Cekterminasi abnormal darisemua loop • Cekterminasi normal darisemuarekursif • Cekterminasi abnormal darisemuarekursif • Memverifikasipenanganansemuakondisi error • Cek timing dansinkronisasi • verifikasisemuaketergantungan hardware
Class Testing • Kombinasikanpenggunaan method • biasanya 2-5 • pilihrangkaianpertama yang paling umum • masukanrangkaian yang mungkinmenyebabkan error • Fokuskanunit test padamasing-masingatribut • inisialisasi, lalueksekusirangkaian method yang dipengaruhinya • Verifikasimasing-masing invariant class tidakberubah • Verifikasiobject transisidiantara state-state yang ada. • Rencanakanrangkaian state/transisisi • Set up object dalaminisial state denganmenyeting variable • Sediakan event pertamadancektransisi yang terjadi
Pengujian integrasi object • Mengujiunit yang telahdiujisecaratunggalbekerjasecarabaik pula setelahdigabungkanpadasistem • Merekaakandigabungkankedalamsuatugruplogis yang koherenuntukdiujikembali( subsistem ) • Saatsubsistemtersebutberhasilbekerjadenganbaikmakaakandilanjutkandenganmenggabungkannyadengansubsistem yang lain danseterusnyasampaimembentuksuatusistemutuh yang teruji • Hal yang diperhatikanyaitumemeriksasemua unit apakahbekerjabersamadenganbaik. • Pengujilebihmengkonsentrasikanpadainteraksi unit daripadafungsionalitasnya
MerancangdanMelakukan Integration Testing • Putuskanbagaimanadandimanauntukmenyimpan, menggunakankembalidanmengkodekan integration test • tunjukandalam project schedule • Ekesekusiunit-unit test sebanyakmunginsesuaidenganwaktu yang tersedia • Gunakantest regresi • Pastikankebutuhanpembangunantelahdispesifikasikan. • Gunakanuse case yang harusdiimplementasikan • Eksekusisystem test
Artifact yang terlibatdalamproses integration test • use case model :Kumpulan use case yang menggambarkanpenggunaan typical dariaplikasi, dan sequence diagram • test cases : input untuksetiap test • test procedure : carabagaimana test di set up, dieksekusi, dandievaluasi(hasil). Dapatberupaprosedur manual ataupunmenggunakan tools untuk test otomasi • test evaluation : kesimpulan, detail dan effect dari error yang ditemukan • test plan : Rencanakeseluruhan test • test component: source code untuk test itusendirisertauntuk code aplikasi yang akandi test • defect (kerusakan):laporanuntuksetiap defect/error yang ditemukan, diklasifikasikanberdasarkan type dantingkatpeliknyakerusakan
Tahapan System Testing[1] • Memeriksaapakahsistemsudahberlakudenganbenarataubelumsaatdigunakanoleh user. • Memperkirakanapakahsistemdapatmenanggulangisegalakondisidan data mainstream. • Memeriksaperformansibehaviourdarisistem. Misalberapa lama waktu yang diperlukansistemuntukmengerjakansuatutugas yang diberikan. • Menguji volume, stress dan storage untukmeeriksa performance dibawahkondisiekstrimsepertijumlah input yang besar, high speed input, jumlah user yang banyaksertameningkatnyajumlahaktivitassecaratiba-tiba.
Tahapan System Testing[1] • Semuaperhitungandiperiksaketepatannyadengan data dankondisi yang telahdiperkirakanmaupuntidak. • Menguji error handling dan recovery darisistemsepertimemeriksabahwaakankeluarpesan error yang tepatpadasetiapkondisidanpemulihan yang baiksetelahsistemmengalami fatal errror. • Memeriksakelayakantingkatkeamananpadasistem agar user yang tidakberwenangtidakdapatmemperolehakseskesistem.
Tipe-tipe system testing[1] • volume: memfokuskanuntuk input yang besar • usability : mengukurreaksi user ( skala 1-10) • performance : mengukurkecepatanpadabeberapakeadaan • configurasi : mengkonfogurasiuntukbermacam-macam hardware atau software • compatibility : komplabilitidenganaplikasi lain ( contoh: mengukurwaktuadaptasi) • reliability/availability : mengukurketahananpadaperiodewaktu 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 dilakukanoleh customer setelahsuatu software dipasarkan. Biasanyatesiniadalahsekumpulan formal tes yang dilakukanuntukmengetahuiapakahsistemtersebutsesuaidengankriteriapenerimaan customer • Acceptance test seringdilakukandiawal agar para programmer atau developer team bisamelakukannyasebelumsecara formal memasarkan software tersebut
Beta Testing • Jikasebuahproduk software akandibangununtukkonsumsipublikmakadiujiterlebihdahuluolehorangluarsebelumakhirnyadirelease. • Beta testing dilakukanolehsekumpulanorang yang merepresentasikansuatutipe user yang akanmempergunakan software yang sedangdibangun. Peranmerekayaituuntukmemberikan feedback daripengalamanmerekamemakaiproduktersebutdalamlingkungankerja.
Release testing • Release testing adalahpengujiankelayakansuatuproduk agar dapatdipasarkankeluar.Apakahsemua disk atau CD sudahberisi file-file yang benar, apakah file-file yang digunakansudahpadaversi yang benar, apakah disk danCDnyabebasdari virus danterdapatdokumentasi yang lengkapdidalamnya. • Pengujiakanmelaksanakanpengujiantingkattinggiterhadapapakah software telahmelakukanapa yang telahdimintadenganmembandingkan software, dokumentasikebutuhan, materi marketing dandokumentasi user.
Siapa yang melakukan testing? • Orang yang melakukanpengujianakanbergantungpadatahap yang sedangdilakukandansumber yang dialokasikanuntukmengujiproduk software tertentu, yakni : • Programmer • Tim penguji • Beta tester(Group yang mewakilipasar) • 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, lokasifisikdarihasil, orang yang bertanggungjawabuntuk transmitting • test log : kronologi record, lokasifisikdarihasil, namapenguji • test incident report : dokumentasidarisetiap event yang terjadiselama test, yang membutuhkaninvestigasilebihlanjut • test summary report : kesimpulan-kesimpulandarikeseluruhan point-point diatas
Testing Tools[1] • Testing bervolumebesarbiasanyamembutuhkanpenggunaan tool-tool otomatis. Jacobson menyarankanbahwa 75% dari test lebihbaikdilakukansecaraotomatisdaripadadilakukansecara manual. • Kemampuandari tools otomatis system test: • merekamaksi mouse dan keyboard untukmemungkinkanpengulanganpemutarankembali • jalankan test script secaraberulang-ulang • memungkinkanuntukmerekamhasil test
Testing Tools[2] • merekamwaktueksekusi • merekam run time error • membuatdanmengatur regression test • menghasilkan test report • menghasilkan test data • merekampenggunaan memory • mengatur/mengelola test case • analisakeseluruhan
Daftar Pustaka • Britton, Carol danDoake, 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