Dalam sebuah pengembangan aplikasi lunak, melakukan pengujian (testing) sangatlah penting.
Adapun beberapa software pengujian membantu menyelesaikan aplikasi perangkat lunak atau produk terhadap bisnis dan kebutuhan pengguna.
Yang tentunya hal ini sangat penting untuk memiliki cakupan tes yang baik untuk menguji aplikasi perangkat lunak sepenuhnya dan membuatnya yakin bahwa itu bekerja dengan baik dan sesuai dengan spesifikasinya.
Pengujian perangkat lunak memiliki tujuan yang berbeda dan objectives. Tujuan utama dari pengujian perangkat lunak adalah sebagai berikut:
- Menemukan cacat yang mungkin bisa dibuat oleh programmer ketika mengembangkan perangkat lunak.
- Mendapatkan kepercayaan dan memberikan informasi tentang tingkat kualitas.
- Untuk mencegah cacat.
- Untuk memastikan bahwa hasil akhir memenuhi bisnis dan kebutuhan pengguna.
- Untuk memastikan bahwa itu memenuhi BRS yang Spesifikasi Kebutuhan Bisnis dan SRS yang Kebutuhan Sistem Spesifikasi.
- Untuk mendapatkan kepercayaan dari pelanggan dengan menyediakan produk yang berkualitas.
Functional Testing
Functional testing lebih berfokus pada hasil eksekusi dari proses setiap fitur di aplikasi sudah bekerja dengan baik berdasarkan kebutuhan klien.
Functional testing tidak menitikberatkan pada source code tetapi lebih kepada bisnis proses yang akan berjalan. Sehingga, sangat mudah untuk melakukan pengujian ini secara manual atau secara otomatis menggunakan automated testing.
Functional testing dilakukan sebelum melakukan non-functional testing. Functional testing ini sering menggunakan teknik black-box testing.
Contoh: Berhasil melakukan login ketika inputan data valid.
Tipe Functional Testing
- Unit Testing
Unit testing adalah melakukan pengujian pada sebuah fitur/kompenen. Tujuannya yaitu untuk melakukan validasi setiap fitur/komponen sudah sesuai. - Integration Testing
Integration testing adalah melakukan pengujian pada fitur/komponen yang diintegrasikan. Testing ini bertujuan untuk memeriksa fungsional antara fitur/komponen tersebut saat berinteraksi. - System Testing
Melakukan pengujian secara keseluruhan, yaitu semua fitur/komponen ketika diintegrasikan secara menyeluruh (end-to-end testing). - Smoke Testing
Smoke testing dilakukan setelah pengembangan sebuah fitur/komponen selesai. Smoke testing bertujuan untuk memastikan fungsional fitur/komponen terpenting sudah berjalan dengan baik. Testing ini dilakukan oleh developer atau tester. - Sanity Testing
Testing yang dilakukan setelah smoke testing. Sanity testing melakukan testing setelah ada perubahan/perbaikan pada bug yang telah ditemukan sebelumnya pada smoke testing. - Acceptance Testing
Testing yang dilakukan oleh klien/pengguna. Hasil dari testing ini yaitu apakah aplikasi yang selesai dibuat sudah sesuai dengan proses bisnis dan kebutuhan atau tidak.
Non-Functional Testing
Pengertian dari non-functional testing adalah pengujian dari aspek non-fungsional suatu aplikasi, seperti kinerja, keandalan, kegunaan, keamanan, dan sebagainya. Non-functional testing dilakukan setelah functional testing selesai.
Dengan menerapkan non-functional testing, kita dapat meningkatkan kualitas perangkat lunak hingga tingkat yang sangat tinggi.
Sebenarnya functional testing juga meningkatkan kualitas, tetapi dengan non-functional testing, kita mempunyai peluang untuk menjadikan perangkat lunak tersebut lebih baik.
Pada hakikatnya, non-functional testing sebagai “pemoles” perangkat lunak kita.
Pengujian semacam ini bukan tentang apakah perangkat lunak itu berfungsi atau tidak. Sebaliknya, ini tentang seberapa baik perangkat lunak berjalan, dan lain sebagainya.
Contoh: Loading halaman utama/dashboard hanya 5 detik setelah berhasil login.
Jenis Non-Functional Testing
1. Documentation Testing
Documentation testing membantu memperkirakan upaya pengujian yang diperlukan dan menguji cakupannya. Dokumentasi perangkat lunak termasuk test plan, test cases, dan bagian requirements.
Berikut ini merupakan cakupan dalam melakukan documentation testing, yaitu :
- Instructions → Jika suatu aktivitas tertentu telah mempunyai instruksi yang spesifik maka tester akan mulai membuat scenario test untuk aktivitas tersebut.
- Examples → Example lebih menjelaskan tentang contoh langkah-langkah yang dilakukan agar menampilkan output yang diharapkan dan input apa saja yang dibutuhkan.
- Messages → Ketika kita menemukan masalah, misalnya error message, kita harus memverifikasi bahwa dokumentasi untuk pesan itu telah benar.
- Samples → Sampel terkadang didokumentasikan untuk hal-hal seperti inisialisasi atau mengeset parameter file input.
2. Installation Testing
Installation testing adalah suatu pengujian yang bertujuan untuk menginstal dan mengatur perangkat lunak baru dengan sukses. Proses pengujian dapat melibatkan proses install/uninstall sepenuhnya, sebagian atau upgrade.
Berikut ini tips untuk melakukan installation testing, antara lain :
- Instal versi lengkap dari aplikasi
- Membuat automate testing
- Mengecek ketersediaan disk space untuk proses instalasi
- Menggunakan Distributed Testing Environment
- Secara otomatis memeriksa file yang diinstal setelah instalasi
- Mengkonfirmasi perubahan registri setelah instalasi
- Negative testing dalam installation testing
- Uninstallation testing
3. Performance Testing
Performance testing adalah jenis pengujian perangkat lunak yang bertujuan untuk memastikan aplikasi akan bekerja dengan baik di bawah beban kerja yang diharapkan.
Terdapat beberapa jenis dari performance testing, antara lain :
- Load Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem dengan kondisi peningkatan beban kerja.
- Stress Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku sistem dengan kondisi di luar batas beban kerja yang diantisipasi.
- Endurance Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem ketika beban kerja yang signifikan diberikan terus menerus.
- Spike Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem ketika beban tiba-tiba dan secara substansial meningkat.
4. Reliability Testing
Reliability testing bertujuan untuk memastikan bahwa produk tersebut bebas dari kesalahan dan dapat diandalkan untuk tujuan yang dimaksud. Pengujian ini dilakukan dengan menjalankan aplikasi untuk menemukan kegagalan-kegagalan sebelum sistem di deploy.
Terdapat beberapa jenis reliability testing, antara lain :
- Feature Testing → Setiap fungsi dalam perangkat lunak harus dijalankan setidaknya satu kali. Selain itu, interaksi antara dua fungsi atau lebih harus dikurangi
- Regression Testing → Setiap kali ada fungsionalitas baru ditambahkan atau fungsionalitas lama dihapus dalam aplikasi, jadi harus dilakukan regression testing untuk memastikan tidak ada bug baru.
- Load Testing → Load testing dilakukan untuk menguji apakah aplikasi mendukung beban yang diperlukan tanpa mengalami breakdown. Untuk menemukan breakpoint suatu aplikasi, beban ditingkatkan secara bertahap hingga aplikasi mengalami hung, breakdown, unavailable, dll.
- Objectives of Reliability Testing → Pembatasan seperti perilaku perangkat lunak dalam kondisi tertentu, tujuan yang layak (feasible objectives), dan batasan waktu (time constraints) berlaku sebelum menentukan objectives of reliability testing.
5. Security Testing
Security testing adalah jenis pengujian perangkat lunak yang bertujuan untuk memastikan bahwa aplikasi bebas dari loopholes. Security testing itu tentang menemukan kelemahan sistem yang mungkin mengakibatkan kehilangan informasi.
Terdapat berberapa area yang fokus diuji dalam security testing ini, antara lain :
- Network Security → Mencari kerentanan dalam infrastruktur jaringan.
- System Software Security → Mencari kelemahan di berbagai perangkat lunak yang bergantung pada aplikasi.
- Client-side Application Security → Memastikan bahwa data dari client-side tidak dapat dimanipulasi.
- Server-side Application Security → Memastikan bahwa kode server dan teknologinya cukup kuat untuk menangkis gangguan apa pun.
Semoga artikel ini bermanfaat yaaa!