250 likes | 488 Views
SOFTWARE TESTING Muhammad Yusuf Teknik Informatika – Universitas Trunojoyo Http://yusufxyz.wordpress.com Email : yusufxyz@gmail.com. Pendahuluan. Testing merupakan suatu aktivitas yang dilakukan untuk mengevaluasi kualitas produk dengan mengidentifikasi kerusakan dan permasalahan.
E N D
SOFTWARE TESTING Muhammad Yusuf Teknik Informatika – Universitas Trunojoyo Http://yusufxyz.wordpress.com Email : yusufxyz@gmail.com
Pendahuluan Testing merupakan suatu aktivitas yang dilakukan untuk mengevaluasi kualitas produk dengan mengidentifikasi kerusakan dan permasalahan. Testing software terdiri dari pembuktian dinamis (dynamic) dari jalannya program pada sekumpulan tes yang terbatas(finite), yang sesuai dan biasanya dipilih(selected) dari domain eksekusi yang tak terbatas, yang bertentangan dengan tingkah laku yang diharapkan(expected).
Dynamic : istilah ini berartibahwa testing termasuk eksekusi program pada input yang bernilai. • Finite : walaupun pada program sederhana, banyak kasus test yang secara teoretis memungkinkan bahwa testing yang mendalam bisa membutuhkan waktu berbulan-bulan atau bertahun-tahun untuk dieksekusi.
Selected : Banyaknya teknik testing yang diusulkan pada dasarnya berbeda dalam hal memilih sekumpulan testing, dan software engineers harus sadar bahwa kriteria pemilihan yang berbeda mungkin akan menghasilkan derajat keefektifan yang sangat besar. • Expected : hal yang tidak mudah untuk dilakukan adalah memutuskan apakah hasil yang diamati dari suatu eksekusi program bisa diterima atau tidak, jika tidak usaha testing akan sia-sia.
Pandangan mengenai testing software telah berkembang ke yang lebih konstruktif. • Testing tidak lagi dilihat sebagai aktivitas yang hanya dimulai setelah tahap membuat program selesai. • Testing software sekarang dipandang sebagai aktivitas yang mana harus mencakup seluruh proses pengembangan dan pemeliharaan. • Testing adalah cara untuk memeriksa apakah pencegahan sudah efektif atau belum dan juga untuk mengidentifikasi kesalahan
Software Testing Fundamentals (dasar-dasarPengujian Software) Testing yang berhubungan dengan terminology • Kesalahan vs Kegagalan : banyak istilah yang digunakan dalam literature rekayasa perangkat lunak (software) untuk mendeskripsikan kegagalan pemakaian. Seperti kesalahan, kegagalan, error dan lainnya. Key issues • Kriteria seleksi testing/criteria kecukupan testing (atau penghentian aturan): Kriteria seleksi testing adalah hal menentukan apakah sekumpulan testing kasus layak ada. Criteria seleksi dapat digunakan untuk memilih test yang layak atau tidak, termasuk untuk menentukan apakah pengujian bisa dihentikan atau tidak.
Keefektifan Testing/tujuan testing : pengujian/testing merupakan observasi sample eksekusi program. • Pengujian/testing untuk identifikasi kerusakan : dalam testing ini, test (pengujian) yang berhasil adalah yang menyebabkan system menjadi gagal. • Hal ini sangat berbeda dari testing untuk mendemonstrasikan bahwa software akan sesuai dengan spesifikasinya, atau property lain yang dibutuhkan, dimana kasus testing berhasil jika tidak ada kegagalan (yang signifikan) teramati.
Test Level • Pengujian software biasanya dilakukan pada level yang berbeda saat proses development & maintenance. • Sasaran dari dilakukannya test bisa berupa sebuah modul tunggal atau kumpulan-kumpulan modul (tergantung tujuan, penggunaan, perilaku, ataupun struktur ) • 3 Tahapan besar dalam Test secara konseptual dapat dibedakan menjadi : Unit, Integrasi, dan Sistem.
2.1.1 Unit Testing • Unit testing menguji fungsi dalam pemisahan komponen yang diuji secara terpisah. • Bisa berupa subprogram yang individu atau komponen besar yang tersusun dari banyak unit yang memiliki hubungan erat. • Unit testing terkait dengan akses ke kode yang sedang dites serta didukung oleh debugging tools, dan bisa saja melibatkan programmeryang menulis kode.
2.1.2 Integration Testing • Proses untuk menguji interaksi antar komponen pada software. • Aktivitas yang berjalan terus menerus pada setiap tahapan dimana Software Engineer/SE harus mampu berkonsentrasi di level tempat mereka mengintegrasikan. • Untuk software yang kecil & mudah, Incremental Integration testing lebih dianjurkan untuk menyatukan seluruh komponen dalam satu waktu, yang lebih dikenal dengan “big bang testing”
2.1.3 System Testing • Perilaku dari sebuah sistem yang utuh lebih mendapat perhatian khusus. Kegagalan fungsional harus bisa diidentifikasi terlebih dahulu selama proses unit & integration testing. • System testing mempertimbangkan ketepatan untuk membandingkan sistem dengan persyaratan sistem non-fungsional seperti security, speed, accuracy, reliability
2.3.1 Acceptance Testing • Memeriksa perilaku sistem terhadap permintaan customer yang telah menetapkan pilihan. • Memastikan apakah permintaan customer telah dapat dipenuhi atau organisasi telah mengidentifikasi pangsa pasar yang cocok untuk software tersebut. • Ada kemungkinan melibatkan developer dari sistem.
2.3.2 Installation Testing • Setelah melalui acceptance testing, Software diuji untuk di-install pada lingkungan yang menjadi sasaran/target. • Dapat dilihat sebagai system testingyang diadakan lagi menurut persyaratan konfigurasi dari hardware. • Juga menguji prosedur instalasi.
2.3.3 Alpha & Beta Testing • Sebelum software diluncurkan, Software diberikan kepada lingkup kecil yang bisa mewakili himpunan pengguna yang potensial untuk menggunakan software tersebut dalam rangka uji coba (trial) • Pengguna akan menyampaikan/melaporkan permasalahan yang dijumpai ketika menggunakan produk software.
2.3.4 Conformance, Correctness, Functional Testing • Ditujukan untuk validasi atau pengesahan apakah pengamatan perilaku dari software yang sedang diuji sesuai dengan spesifikasinya.
2.3.5 Reliability achievement & evaluation • Dalam membantu mengidentifikasi kesalahan, testing dimaksudkan untuk meningkatkan reliabilitas/ketahanan daya uji.
2.3.6 Regression Testing • Pengujian kembali secara selektif dari sebuah sistem/komponen untuk membuktikan bahwa modifikasi tidak menyebabkan dampak yang tidak diharapkan. • Software yang sebelumnya telah lulus serangkaian tes, setelah ada modifikasi kondisinya masih tetap layak dan tidak bermasalah.
Performance testing Ditujukan untuk membuktikan bahwa software yang telah dibuat memenuhi persyaratan yang telah ditentukan yakni, capacity dan response time. • Stress testing Menguji software untuk bekerja di luar /melebihi batasan kapasitasnya. • Back-To-Back testing Rangkaian tes tunggal yang dilakukan pada 2 versi implementasi dari produk software, kmdn hasilnya dibandingkan.
Recovery testing Menguji kemampuan restart software setelah terjadi sebuah “bencana” • Configuration testing Menganalisa software dalam berbagai spesifikasi konfigurasi. • Usability testing Mengevaluasi seberapa mudah end-user menggunakan & mempelajari software. Seberapa efektif fungsi yang ada dan kemampuan untuk pulih dari kesalahan yang dilakukan oleh user. • Test-driven development Meningkatkan kegunaan tes-tes sebagai pengganti untuk sebuah persyaratan perincian dokumentasi.
Test Technique • Banyak teknik yang dikembangkan untuk mengungkapkan potensi kesalahan dari program. • Prinsipnya adalah menjadi se-sistematis mungkin dalam mengidentifikasi sebuah rangkaian yang mewakili perilaku program seperti domain input, scenario, states, dan dataflow. • Teknik digolongkan menjadi white box (mengandalkan informasi ttg bagaimana software telah dicoding) dan black box (mengandalkan perilaku input-output)
Berdasarkan Lembaga Software Engineer & Pengalaman • 3.1.1 Ad Hoc testing Test didapat berdasar kemampuan software engineer, lembaga serta pengalaman dengan program yang serupa. Merupakan teknik yang paling praktis. • 3.1.2 Exploratory testing Didefinisikan sebagai pembelajaran simultan, rancangan tes, dan eksekusi tes. Keefektifan testing bergantung pada pengetahuan SE, yang bisa didapat dari berbagai sumber : mengamati perilaku produk, kefamiliaran dgn aplikasi, jenis kegagalan & kesalahan yang mungkin terjadi, resiko yang terkait dengan produk tertentudan sebagainya.
Berdasarkan Spesifikasi /Perincian (1) • 3.2.1 Equivalence Partitioning Domain input dibagi menjadi sebuah kumpulan dari subset/ kelas yang sebanding yang mempertimbangkan persamaan berdasar pada relasi yang spesifik & sebuah kumpulan perwakilan dari test yang diambil dari tiap kelas. • 3.2.2 Boundary-Value analysis Test case dilakukan dekat dengan batasan variabel domain input yang didasari secara rasional. Kesalahan cenderung terkonsentrasi dekat dengan nilai ekstrim dari input.
Berdasarkan Spesifikasi /Perincian (2) • 3.2.3 Decision table Menggambarkan hubungan logika antara kondisi (input) dan aksi (output). Teknik yang berhubungan cause-effect graphing • 3.2.4 Finite-state Machine-based Memodelkan sebuah program sebagai suatu finite-state machine supaya dapat menempuh state & transisi yang terjadi. • 3.2.5 Testing from formal spesification Memberikan spesifikasi bahasa formal yang memperkenankan untuk derivasi otomatis dari test case secara fungsional dan menyediakan sebuah output yang direkomendasikan. • 3.2.6 Random Testing
Berdasarkan Kode • 3.3.1 Control flow-based criteria Kriteria meliputi seluruh statement atau block of statements dari program atau menetapkan kombinasi dari keduanya. Mengeksekusi seluruh masukan hingga akhir sesuai jalur control flow pada flowgraph. • 3.3.2 Data flow-based criteria Flowgraph control dilengkapi keterangan dengan informasi tentang bagaimana variabel dalam program didefinisikan, digunakan, dan dihilangkan. • 3.3.3 Reference models for code-based Struktur kontrol dari sebuah program digambarkan secara grafik dengan menggunakan sebuah Flowgraph