1 / 39

OO Software Testing

OO Software Testing. Dikompilasi oleh Dana dari berbagi sumber. Definisi Software Testing.

aadi
Download Presentation

OO Software Testing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OO Software Testing Dikompilasioleh Dana dariberbagisumber

  2. Definisi Software Testing • Software testing adalahaktivitas-aktivitas yang bertujuanuntukmengevaluasiatribut-atributataukemampuansebuah program atausistemdanpenentuanapakahsesuaidenganhasil yang diharapkan[Hetzel88] • Testing adalahprosespemeriksaan program dengantujuantertentudalammenemukankesalahansebelumdiserahkankepengguna

  3. 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

  4. 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

  5. Testing and debugging • Adalah proses yang berbeda • Verification and validation: menunjukkan keberadaan cacat program • Debugging: menemukan dan memperbaiki kecacatan-kecacatan ini

  6. Tujuan Dilakukan Software Testing • Untuk meningkatkan kualitas • Untuk Verification & Validation (V&V) • Untuk estimasi reliability [Kaner93] [Lyu95]

  7. Melakukan testing berartimelakukan • Mendesain test. • Mengimplementasikan test yang telah didesign. • Mengevaluasi test tersebut.

  8. 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

  9. Selective Testing Jalureksekusi yang dipilih loop < 20 X

  10. 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

  11. White-Box Testing • …. Tujuan kita adalah menjamin semua statemen dan kondisi telah dieksekusi minimal sekali …..

  12. Black-Box Testing requirements output input events

  13. Strategi OO Testing[1]

  14. Strategi OO Testing[2] • Unit Testing  Pengujian class/object • Integration Testing  object integration testing • System Testing

  15. 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

  16. 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.

  17. 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.

  18. Unit Testing[3]( IEEE )

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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.

  26. 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.

  27. 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

  28. 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

  29. Tipe-Tipe Testing lainnya • Regression Testing • Acceptance Testing by user or a testing team • Beta Testing • Release testing

  30. 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

  31. 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

  32. Beta Testing • Jikasebuahproduk software akandibangununtukkonsumsipublikmakadiujiterlebihdahuluolehorangluarsebelumakhirnyadirelease. • Beta testing dilakukanolehsekumpulanorang yang merepresentasikansuatutipe user yang akanmempergunakan software yang sedangdibangun. Peranmerekayaituuntukmemberikan feedback daripengalamanmerekamemakaiproduktersebutdalamlingkungankerja.

  33. 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.

  34. Siapa yang melakukan testing? • Orang yang melakukanpengujianakanbergantungpadatahap yang sedangdilakukandansumber yang dialokasikanuntukmengujiproduk software tertentu, yakni : • Programmer • Tim penguji • Beta tester(Group yang mewakilipasar) • Customer • Maintainer

  35. 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

  36. 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

  37. 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

  38. Testing Tools[2] • merekamwaktueksekusi • merekam run time error • membuatdanmengatur regression test • menghasilkan test report • menghasilkan test data • merekampenggunaan memory • mengatur/mengelola test case • analisakeseluruhan

  39. 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

More Related