Pengujian Perangkat Lunak & Web App Nisa’ul Hafidhoh
[email protected] 08156114760
Pengujian • Pengujian / 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)
Aktivitas Pengembangan PL
Aktivitas Pengujian
Peran tiap Proses Pengujian
Siklus Pengujian • • • •
Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian
12/21/2016
Software Testing - NH @2015
6
Siklus Pengujian • • • •
Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian
12/21/2016
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 7
Siklus Pengujian • • • •
Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian
12/21/2016
• 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
8
Siklus Pengujian • • • •
Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian • Laporan Pengujian
12/21/2016
Dilakukan sesudah kode program selesai dikerjakan. • Eksekusi program dilakukan dengan menggunakan masukan data yang sudah di rancang
9
Siklus Pengujian • • • •
Perencanaan Pengujian Perancangan Pengujian Eksekusi Pengujian Laporan Pengujian
12/21/2016
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 10
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
Blackbox VS Whitebox • Blackbox testing
– Tidak perlu mengetahui struktur software – Juga disebut dengan specificationbased atau functional testing • Whitebox testing – Harus mengetahui struktur dan implementasi dari software
Pengujian Web App • Pengujian Web App adalah aktivitas yang mencari error pada bagian-bagian dari Web App, seperti: – Isi (Content) – Fungsi – Struktur – Usability – Navigability – Compatibility – Interoperability – Performance – Security
Tantangan • Aplikasi berbasis web, berada pada jaringan, dan beroperasi dengan sistem yang berbeda – Sistem Operasi – Browser – Hardware Platform – Protokol komunikasi
Error Umum pada Web App • Yang sering dilihat adalah akibat dari error, bukan errornya sendiri • Error sering sulit untuk di reproduce – Perlu mere-create environmentnya
• Error sering ditemui dari konfigurasi WebApp • Error harus di telusuri dari: – Client – Server – Network
Proses Pengujian Web App
Content Testing • Untuk mengungkap kesalahan sintaksis (Kesalahan ketik, kesalahan tata bahasa) dalam teks berbasis dokumen, representasi grafis, dan media lainnya • Untuk mengungkap kesalahan semantik (Berfokus pada informasi yang disajikan dalam setiap konten obyek) • Untuk menemukan kesalahan dalam organisasi atau struktur konten yang disajikan untuk pengguna.
Navigation Testing • Untuk memastikan bahwa mekanisme yang memungkinkan pengguna menelusuri seluruh webapp dapat berfungsi dan untuk memvalidasi setiap NSU (Navigation Semantic Unit) dapat dicapai oleh kategori pengguna yang sesuai.
Mekanisme Navigasi • Navigasi/link Link internal dalam webapp, link eksternal untuk webapps lainnya harus dipastikan konten/fungsi dapat dijalankan.
• Redirect Diuji dengan meminta link internal atau URL eksternal yang tidak benar dan menilai bagaimana webapp menangani permintaan ini.
• Bookmarks Meskipun fungsi browser, webapp harus diuji untuk memastikan bahwa judul halaman yang berarti dapat diekstraksi dari bookmark yang dibuat.
Mekanisme Navigasi [2] • Frame & Frameset – Tiap frame diuji untuk konten yang benar, tata letak yang tepat dan ukuran, kinerja download, dan kompatibilitas browser – Frameset terdiri dari dari beberapa frame
• SiteMap – Disediakan daftar isi seluruh halaman web – Setiap jalur situs harus diuji untuk memastikan bahwa link tersebut akan membawa pengguna ke konten atau fungsi yang tepat.
• Internal Search Engines – Memvalidasi keakuratan dan kelengkapan dari pencarian, penanganan kesalahan dari mesin pencari, dan fitur pencarian lanjutan
Interface Testing • Fitur antarmuka termasuk jenis font, penggunaan warna, frame, gambar, border, tabel, dan antarmuka terkait fitur yang dihasilkan sebagai hasil eksekusi webapp harus diuji • Mekanisme antarmuka individual diuji dalam cara yang analog dengan unit testing (client-side scripting, HTML dinamis, script, streaming konten) • Antarmuka lengkap diuji terhadap use case yang dipilih beserta NSU untuk mengungkap kesalahan dalam semantik antarmuka
Mekanisme Interface Ketika pengguna berinteraksi dengan web app, interaksi dapat melalui berbagai mekanisme. • Link Setiap link navigasi harus dicek untuk memastikan bahwa konten / fungsi yang sesuai dapat dicapai
• Form – Memastikan bahwa label yang mengidentifikasi field dalam form benar dan field wajib diidentifikasi secara visual bagi pengguna – Server menerima semua informasi yang terkandung dalam form dan tidak ada data yang hilang dalam transmisi antara klien & server – Penggunaan default yang sesuai ketika pengguna tidak memilih menu pull-down atau tombol – Fungsi browser (mis., Panah kembali) tidak merusak data yang dimasukkan dalam sebuah form
Mekanisme Interface [2] • Client-side scripting – Black-box testing dilakukan untuk mengungkap kesalahan dalam pengolahan ketika script dijalankan. – Tes ini sering digabungkan dengan pengujian form, karena masukan script sering berasal dari data yang diberikan sebagai bagian dari pengolahan form. – Sebuah tes kompatibilitas harus dilakukan untuk memastikan bahwa bahasa scripting yang telah dipilih akan bekerja dengan baik di konfigurasi lingkungan yang berbeda
• Dynamic HTML – Pengujian harus dilakukan untuk memastikan bahwa HTML dinamis ditampilkan dengan benar. – Uji Kompatibilitas harus dilakukan untuk memastikan HTML dinamis bekerja dengan baik dalam konfigurasi lingkungan yang mendukung webapp
Mekanisme Interface [3] • Pop-up windows Serangkaian tes memastikan bahwa: – Ukuran dan posisi pop-up benar – Pop-up tidak menutupi jendela asli webapp – Desain estetika dari pop-up konsisten dengan desain estetika antarmuka – Scroll bar dan mekanisme kontrol lainnya yang ditambahkan ke pop-up letak dan fungsinya telah benar.
• Streaming content – Tes harus menunjukkan bahwa data streaming up-to-date dan ditampilkan dengan benar, dan bisa ditunda tanpa kesalahan dan restart tanpa kesulitan.
Mekanisme Interface [4] • Cookies – Di sisi server, tes harus memastikan bahwa cookie adalah benar dibuat dan ditransmisikan ke sisi klien saat konten atau fungsi tertentu diminta dan untuk memastikan bahwa yang tanggal kedaluwarsa benar. – Di sisi client, tes menentukan apakah webapp dengan benar menempel cookies untuk permintaan khusus yang dikirim ke server
Compatibility Testing – Serangkaian tes validasi kompatibilitas berasal atau sering diadaptasi dari tes antarmuka yang ada, tes navigasi, tes kinerja, dan tes keamanan. – Tujuan dari tes ini adalah untuk menyingkap kesalahan atau masalah eksekusi yang dapat ditelusuri pada perbedaan konfigurasi.
Component Testing • Pengujian tingkat komponen, juga disebut pengujian fungsional, berfokus pada satu set tes yang mencoba untuk mengungkap kesalahan dalam fungsi webapp. • Setiap fungsi webapp adalah komponen perangkat lunak (diimplementasikan pada salah satu pemrograman atau bahasa scripting) dan dapat diuji dengan menggunakan blackbox testing atau teknik whitebox.
Database Testing • Tes yang mengungkap kesalahan dalam komunikasi antara webapp dan basis data. • Tes dirancang untuk mengungkap kesalahan yang dibuat saat menerjemahkan permintaan pengguna ke dalam form yang dapat diproses oleh DBMS. • Data mentah yang diperoleh dari database harus ditransmisikan ke server webapp dan diformat untuk pengiriman berikutnya ke klien. • Tes yang menunjukkan keabsahan transformasi diterapkan pada data mentah untuk membuat objek konten yang valid.
Layer Interaksi
Security Testing • Tes keamanan yang dirancang untuk menyelidiki kerentanan pada lingkungan client-side, jaringan komunikasi yang terjadi sebagai data yang dikirim dari klien ke server dan kembali lagi, serta lingkungan server-side. • Vulnerability sisi klien: Di sisi klien, kerentanan sering dapat ditelusuri pada bug yang sudah ada sebelumnya di browser, program e-mail, atau perangkat lunak komunikasi. – misalnya: salah satu bug yang biasa disebutkan adalah Buffer Overflow
Security Testing [2] • Vulnerability jaringan: – Data dikomunikasikan antara klien dan server rentan terhadap spoofing. Spoofing terjadi ketika salah satu ujung jalur komunikasi digerogoti oleh dan entitas dengan maksud jahat. – Untuk misalnya, Seorang pengguna dapat palsu oleh situs web berbahaya yang bertindak seolah-olah itu adalah sah app server web. Tujuannya adalah untuk mencuri password, informasi kepemilikan, atau data kredit.
Security Testing [3] • Vulnerability sisi server: – Kerentanan termasuk denial-of-service serangan dan script berbahaya yang dapat diteruskan ke sisi client atau digunakan untuk menonaktifkan operasi server – Untuk misalnya: database server-side dapat diakses tanpa otorisasi (pencurian data).
Performance Testing • Untuk mengungkap masalah kinerja karena: – Kurangnya sumber daya server-side – bandwidth jaringan yang tidak cukup – kemampuan database yang tidak memadai, kemampuan sistem operasi yang rusak atau lemah – fungsi aplikasi web yang dirancang buruk
• Tujuannya ada dua – Untuk memahami bagaimana sistem merespon loading (yaitu, jumlah pengguna, jumlah transaksi, atau volume keseluruhan data) meningkatkan – Untuk mengumpulkan metrik yang akan menyebabkan modifikasi desain untuk meningkatkan kinerja
Load & Stress Testing • Load Testing – Load testing untuk menentukan bagaimana aplikasi web dan lingkungan server-side yang akan merespon berbagai kondisi load.
• Stress Testing – Stress testing merupakan kelanjutan dari load testing , namun dalam hal ini dipaksa untuk melebihi batas operasional.
Referensi • Pressman, R.S. & David Lowe. 2009. Web engineering : a practitioner’s approach. McGraw-Hill • Louise Tamres. 2002. Introducing Software Testing. First edition, Addison Wesley.
Terimakasih