Pengujian Perangkat Lunak Tim PPL Teknik Informatika
Pengujian (standar ANSI/IEEE 1059) Testing adalah proses menganalisa suatu entitas software untuk mendeteksi perbedaan antara kondisi yang ada dengan kondisi yang tidak diinginkan (defect/errors/bugs) dan mengevaluasi fitur-fitur dari entitas software (standar ANSI/IEEE 1059)
Tujuan Menemukan sebanyak mungkin masalah (error) Tujuan dari menemukan masalah adalah memperbaikinya Sebuah pengujian yang sukses adalah menemukan kesalahan yang belum ditemukan.
Akktivitas Pengembangan PL
Aktivitas Pengujian
Peran tiap Proses Pengujian
Testing vs. Debugging Pengujian (testing) berbeda dengan debugging Debugging dilakukan bila sudah ditemukan suatu kesalahan, dan tujuannya mencari sumber kesalahan (fault atau defect) Debugging tetap menjadi bagian dari strategi pengujian
Failure, Error, Fault and Defect Error – Error adalah status dari sistem – Status error ini bisa menyebabkan kegagalan jika tidak ada perbaikan Fault – Fault adalah sumber dari error Defect – Sinonim dengan Fault – Sering disebut juga bug Failure Kegagalan (failure) terjadi kalau ada perilaku dari sistem yang tidak sesuai dengan permintaan di spesifikasi sistem
V & V Verifikasi Sekumpulan aktivitas untuk menjamin bahwa software sudah mengiimplementasikan secara benar suatu fungsi Validasi Sekumpulan aktivitas untuk menjamin bahwa software sudah dibuat dengan benar sesuai dengan kebutuhan pengguna Boehm [Boe81]: Verification: "Are we building the product right?“ Validation: "Are we building the right product?"
Independence Testing Group Tester? Independence Testing Group Harus belajar sistem Menguji untuk membuktikan bahwa program masih ada yang salah Software Developer Mengerti system Menguji untuk membuktikan bahwa programnya sudah benar 11/24/2018 Software Testing - NH @2015
Siklus Pengujian Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian 11/24/2018 Software Testing - NH @2015
Siklus Pengujian Perencanaan apa saja yang akan diuji Perencanaan waktu Perencanaan sumberdaya yang diperlukan • Orang • PL pendukung • Alat/perangkat keras • Lingkungan pengujian • dan lain-lain Perencanaan prosedur umum pengujian Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian 11/24/2018
Siklus Pengujian Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian • Untuk apapun yang akan diuji, maka perlu dirancang Kasus Pengujian (Test Case) • Test Case berisi: • Masukan yang diuji • Harapan Pengujian • Cara menilai hasil eksekusi pengujian 11/24/2018
Siklus Pengujian Dilakukan sesudah kode program selesai dikerjakan. Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian Dilakukan sesudah kode program selesai dikerjakan. Eksekusi program dilakukan dengan menggunakan masukan data yang sudah di rancang 11/24/2018
Siklus Pengujian Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian Laporan pengujian berisi laporan untuk setiap hasil eksekusi Test Case: • Lulus pengujian jika hasil eksekusi program memberikan hasil yang sama dengan harapan hasil • Tidak lulus pengujian jika hasil eksekusi memberikan hasil yang berbeda • Kadang dapat disertai dengan catatan khusus 11/24/2018
Kriteria Pengujian yang Baik Memiliki kemungkinan tinggi untuk menemukan error Pilih teknik yang terbaik – Sesuai dengan karakteristik software yang diuji Tidak terlalu sederhana juga tidak terlalu kompleks
Strategi Pengujian PL ‘testing-in-the-small’ hingga ‘testing-in-the-large’ PL konvensional Unit testing: fokus pada tiap komponen individual, memastikan tiap fungsi berjalan Integration testing: fokus pada desain dan konstruksi arsitektur PL Validation testing: memastikan PL memenuhi semua kebutuhan System Testing: PL dan elemen sistem lain diuji secara keseluruhan PL OO Fokus pada pengujian tiap kelas termasuk atribut dan operasi Dilanjutkan pengujian komunikasi / kolaborasi antar kelas
Metode Pengujian PL
Unit / Modul / Komponen Testing
Blackbox VS Whitebox Blackbox testing Tidak perlu mengetahui struktur software Juga disebut dengan specification-based atau functional testing Whitebox testing Harus mengetahui struktur dan implementasi dari software
Whitebox Testing Meyakinkan bahwa semua statement / kondisi dieksekusi minimum satu kali Contoh White-box testing • Control Flow Testing • Data Flow Testing • Mutation Testing Path Input Expected Result 1 (10, 3, 2) 10 2 (25, 15, 40) 40 3 (10, 15, 6) 15 4 (10, 15, 19) 19
Blackbox Testing Pengujian Black-Box dilakukan karena isi source code tidak bisa dilihat, hanya spesifikasinya saja Disebut juga Functional Testing, karena kita hanya melihat fungsionalitas dari unit yang diuji Spesifikasi mendefinisikan apa yang dilakukan, Initial State (IS), dan juga Final State(FS) Apa saja input-nya Apa saja output-nya Apa saja requirement/event yang merubah state
Pengujian Integrasi Pengujian unit fokus pada komponen/unit individual Sesudah semua fault di hilangkan dari setiap komponen, & unit tidak lagi memiliki error, maka unit/komponen ini siap diintegrasikan atau digabungkan Pengujian integrasi akan mendeteksi fault yang belum terdeteksi saat pengujian unit Fokusnya lebih ke sekumpulan komponen/unit Dua atau lebih komponen akan diintegrasikan dan di uji Setelah tidak ditemukan kesalahaan, maka komponen baru dapat digabungkan. Urutan integrasi dapat menentukan usaha keseluruhan untuk melakukan pengujian integrasi Kesalahan urutan integrasi dapat menambah biaya, sumber daya yang diperlukan.
Strategi Pengujian Integrasi Pendekatan ‘BIG BANG’ Pendekatan incremental Top Down testing Bottom Up testing Sandwich Testing
System Testing Pengujian validasi: Fokus pada kebutuhan software Pengujian sistem: Fokus pada integrasi sistem Pengujian alpha / Beta: Fokus pada pengguna (bagaimana mereka menggunakan) Recovery Testing: Software dibuat 'gagal' dan dilihat apakah proses pemulihan sudah dapat dilakukan. Contoh: software yang memanfaatkan internet melihat perilaku pemulihan ketika internet tiba-tiba turun. Pengujian keamanan: Pastikan apakah mekanisme perlindungan sudah melindungi 'penetrasi‘ Stress testing: Sistem diuji bagaimana ketika dihadapkan dengan permintaan penggunaan sumber daya yang melebihi jumlah normal, atau frekuensi atau volume yang normal Pengujian kinerja: Menguji kinerja software ketika dijalankan pada konteks tertentu