Testing dan Implementasi
Agenda Perkuliahan Testing Process Testing Planning Hubungan antara Testing Planning & SDLC Failure & Fault Class Test Data & Test Case
Teknik Pengujian Perangkat Lunak
Techniques Fundamental Teknik Pengujian Perangkat Lunak Techniques Fundamental Setiap kode sumber (source code) dibuat, software harus di uji (ditest) untuk memperbaiki sebanyak 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 Teknik Pengujian Perangkat Lunak 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
Techniques Fundamental Teknik Pengujian Perangkat Lunak Techniques Fundamental Untuk menemukan sebanyak mungkin kesalahan, pengujian harus dilakukan secara sistematis Test Case harus dirancang dengan menggunakan pendekatan teknik (Techniques approach) Jadi apa produk dari Testing?? Kumpulan kasus uji (a Set of Test Cases) yang dirancang baik untuk “internal program logic” (White Box Testing) dan “external requirement” (Black Box Testing). Test Case dirancang dan didokumentasi dengan baik
Techniques Fundamental Teknik Pengujian Perangkat Lunak Techniques Fundamental Hasil yang diharapkan didefinisikan di awal Hasil pengujian direkam atau dicatat (testing documentation)
Software Testability Apa itu “software testability”?? Teknik Pengujian Perangkat Lunak 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
Teknik Pengujian Perangkat Lunak Software Testability Apakah software (a good software) sudah memenuhi hal-hal berikut?? Operability - The better it works, there more efficiently it can be tested Observability - What you see is what you test Controllability - The better we can control the software, the more testing can be automated and optimized
Software Testability Decomposability Teknik Pengujian Perangkat Lunak Software Testability Decomposability - By controlling the scope of testing, we can more quickly isolate problems and perform smarter testing Simplicity - The less there is to test, the more quickly we can test it Stability - The fewer changes, the fewer the disruptions to testing
Test Case Design “Atribut of a good testing” seperti apa?? Teknik Pengujian Perangkat Lunak 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
Test Case Design “Atribut of a good testing” seperti apa?? (lanjutan) Teknik Pengujian Perangkat Lunak Test Case Design “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
Teknik Pengujian Perangkat Lunak Test Case Design Test Case sebagai sebuah tantangan dalam merancang sebuah produk Ada banyak sekali metode merancang test case, namun digunakan metode pendekatan sistematis untuk testing Software merupakan suatu sistem yang bisa diduga
Teknik Pengujian Perangkat Lunak Test Case Design Dalam merancang test case, ada dua hal yg diperhatikan : - Mengetahui fungsi spesifik dari produk, test dilakukan untuk menunjukkan setiap fungsi secara operasional berjalan dimana pada saat yg sama mencari error di setiap fungsi - Mengetahui cara kerja internal dari suatu software, internal operations yang mengacu pada spesifikasi dan semua komponen internal diuji
Test Case Design Black Box Testing Teknik Pengujian Perangkat Lunak Test Case Design 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
Test Case Design White Box Testing Teknik Pengujian Perangkat Lunak Test Case Design White Box Testing - Pemeriksaan terhadap setiap prosedur secara detail - Jalur logika (Logical Path) diuji dengan test case
Testing Process Unit Testing Module Testing Sub-system Testing System Teknik Pengujian Perangkat Lunak Testing Process Unit Testing Module Testing Sub-system Testing System Testing Acceptance Testing User Testing Component Testing Integration Testing
Testing Process Component testing Pengujian komponen-komponen program Teknik Pengujian Perangkat Lunak Testing Process 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 sub-system ataupun system Dialakukan oleh tim penguji yang independent Pengujian berdasarkan spesifikasi sistem
Testing Planning Proses Pengujian Teknik Pengujian Perangkat Lunak Testing Planning Proses Pengujian Deskripsi fase-fase utama dalam pengujian Pelacakan Kebutuhan Semua kebutuhan user diuji secara individu Item yg diuji Menspesifikasi komponen sistem yang diuji Jadwal Pengujian Prosedur Pencatatan Hasil dan Prosedur Kebutuhan akan Hardware dan Software Kendala-kendala Mis: kekuranga staff, alat, waktu dll.
Hubungan antara Testing Planning & SDLC Testing Process & Planning Hubungan antara Testing Planning & SDLC Spesifikasi Kebutuhan Sistem Perancangan Detail Acceptance Test plan System Integration Sub-System Module and Unit code and test Service
Failure and Fault Class Testing Process & Planning Failure and Fault Class 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
Failure and Fault Class Testing Process & Planning Failure and Fault Class Failure yang merusak sistem data Corrupting Failure tidak merusak data Non-corrupting Sistem tidak dapat memperbaiki secara otomatis Unrecoverable Sistem dapat memperbaiki secara otomatis Recoverable Muncul untuk semua input Permanent Muncul untuk input tertentu Transient Deskripsi Failure Class
Testing Process & Planning 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 Testing Process & Planning 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