mungkin kesalahan (errors), sebelum diserahkan ke customer Teknik Pengujian secara umum mencakup dua hal penting : - Menguji internal program logic dari komponen software - Menguji input dan ouput domain dari program (function, kebutuhan sistem) Uji Fungsionalitas atau Uji Kebutuhan sistem (Software Requirement Testing) Techniques Fundamental Siapa yang mengerjakan ?? Pada awalnya, software engineer mengerjakan semua test. Namun pada perkembangan proses testing, testing specialist yang terlibat. Kenapa testing ini penting, dilihat dari sisi implementasi?? Setiap program selesai dibuat dan siap dijalankan, maka customer akan mengujinya terlebih dahulu Sofware harus diuji dengan intens untuk menemukan dan menghilangkan error, sebelum diserahkan ke customer Hasil yang diharapkan didefinisikan di awal Hasil pengujian direkam atau dicatat (testing documentation)
Software Testability Apa itu software testability?? Menurut James bach, software testability adalah seberapa mudah sebuah program komputer dapat diuji Testing dianggap cukup sulit dilakukan maka perlu diketahui apa yang harus dilakukan untuk meluruskannya Testability muncul sebagai hasil dari good design Ada beberapa atribut yang dapat digunakan oleh software engineer dalam membangun software Apakah software (a good software) sudah memenuhi hal-hal berikut?? Operability - Semakin baik kerjanya, lebih efisien dapat diuji
Observability - Apa yang anda lihat adalah apa yang anda menguji Controllability - Semakin baik kita dapat mengontrol perangkat lunak, maka pengujian lebih dapat diotomatisasi dan dioptimalkan Decomposability - Dengan mengontrol ruang lingkup pengujian, kita dapat lebih cepat mengisolasi masalah dan melakukan pengujian lebih cerdas Simplicity - Semakin sedikit jumlah yang diuji, semakin cepat kita dapat mengujinya Stability - Semakin sedikit perubahan, semakin sedikit gangguan pengujian
Test Case Design Atribut of a good testing seperti apa?? Testing yang baik memiliki kemungkinan paling besar untuk menemukan error -Tester harus memahami software yang diuji dan memikirkan bagaimana software bisa gagal Testing yang baik tidak redundant/ganda - Testing time & resources terbatas - Setiap test harus mempunyai tujuan yang berbeda Atribut of a good testing seperti apa?? (lanjutan) Testing yang baik tidak terlalu sederhana namun juga tidak terlalu kompleks - Jangan mengkombinasikan beberapa test case kedalam sebuah test case - Test case harus dilaksanakan secara terpisah Black Box Testing - Dilakukan melalui software interface (menu) - Meyakinkan bahwa fungsi-fungsi dalam software berjalan - Input dengan baik diterima ; Output dihasilkan dengan benar
- Integritas dari informasi luar (database) dimaintain White Box Testing - Pemeriksaan terhadap setiap prosedur secara detail - Jalur logika (Logical Path) diuji dengan test case
Pengujian (Testing) Pengujian perangkat lunak (Software testing) adalah proses untuk mengukur kualitas dari perangkat lunak yang dikembangkan. Kualitas perangkat lunak (software quality) mengukur seberapa baik sistem perangkat lunak dirancang (quality of design), dan tingkat kesesuaian perangkat lunak dengan rancangan yang telah dibuat (quality of conformance). Standar internasional yang digunakan untuk mengevaluasi kualitas perangkat lunak adalah ISO 9126 yang mendefinisikan karakteristik perangkat lunak yang berkualitas.
Testing Process
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)
System Testing Pengujian terhadap integrasi sub-system, yaitu keterhubungan antar sub-system
Acceptance Testing Pengujian terakhirs 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)
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 subsystem ataupun system Dialakukan oleh tim penguji yang independent Pengujian berdasarkan spesifikasi sistem
Jadwal Pengujian Prosedur Pencatatan Hasil dan Prosedur Kebutuhan akan Hardware dan Software Kendala-kendala Mis: kekuranga staff, alat, waktu dll.
Failure: Output yang tidak benar/tidak sesuai ketika sistem dijalankan Fault: Kesalahan dalam source code yang mungkin menimbulkan failure ketika code yg fault tersebut dijalankan Testing Clue 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
Testing Data & Test Case Test data: Input yang yang direncankan digunakan oleh sistem Test cases: Input yang digunakan untuk menguji sistem dan memprediksi output dari input jika sistem beroperasi sesuai dengan spesifikasi