Halo sahabat Akhdani, tulisan kali ini membahas tentang Software Testing dari buku Software Engineering – Ian Sommerville.
Software testing adalah proses pengujian pada perangkat lunak yang bertujuan untuk memastikan aplikasi yang dibangun sesuai dengan kebutuhan klien dan untuk menemukan cacat fitur sebelum aplikasi digunakan.
Proses pengujian dilakukan dengan dua pendekatan. Yang pertama adalah pengujian validasi yaitu melakukan pengujian menggunakan serangkaian test case untuk memastikan sistem bekerja dengan baik dan sesuai dengan kebutuhan yang tercantum dalam dokumen requirement. Yang kedua adalah melakukan pengujian untuk menemukan cacat (bug) menggunakan serangkaian test case dan data dummy yang sengaja dibuat untuk menghasilkan sistem agar berjalan dengan tidak semestinya. Selanjutnya hasil pengujian ditunjukkan kepada tim pengembang dan klien.
Pengujian juga merupakan bagian dari proses verifikasi dan validasi perangkat lunak. Proses ini bertujuan untuk membangun keyakinan bahwa sistem perangkat lunak “sesuai dengan tujuannya.” Artinya, sistem tersebut harus cukup baik untuk tujuan penggunaannya, dan sudah memenuhi spesifikasi dan memberikan fungsionalitas sesuai yang diharapkan.
A. Development Testing
Development testing merupakan keseluruhan aktivitas pengujian yang dilakukan oleh tim yang sedang membangun sistem. Pengujian biasanya dilakukan oleh programmer yang membuat software, namun bisa juga programmer memiliki pasangan penguji yang membantu dan mengembangkan proses pengujian. Untuk sistem yang critical dan proses yang lebih formal, dapat dibuat kelompok pengujian (tim tester) terpisah dalam tim pengembangan. Kelompok ini bertanggung jawab untuk mengembangkan pengujian dan memelihara catatan ricin hasil pengujian.
Pengujian dalam pengembangan aplikasi terdiri dari beberapa tahap pengujian berikut:
1. Unit testing adalah proses pengujian komponen aplikasi yang paling sederhana, seperti function, method atau object class yang ada di dalamnya. Pertama-tama penguji harus merancang test case pengujian dan mengelompokkan test case menjadi positive test case dan negative test case untuk setiap method. Pemilihan atau pengelompokan unit test cases ini dilakukan untuk mengefektifkan proses pengujian.
2. Component testing merupakan pengujian dari beberapa objek yang saling berinteraksi. Component testing ini difokuskan pada komponen antarmuka.
3. System testing adalah pengujian yang memeriksa seluruh komponen sistem yang sudah terintegrasi, pada pengujian ini dipastikan apakah interaksi pada sistem sudah berjalan dengan baik.
B. Test Driven Development
Test Driven Development (TDD) merupakan suatu pendekatan pengembangan aplikasi yang mengacu pada pengujian sebelum melakukan proses coding. Pengembangan berbasis pengujian ini merupakan pendekatan yang banyak digunakan karena dianggap lebih produktif untuk mengembangkan perangkat lunak. Berikut ini gambaran langkah-langkah proses TDD:
Keuntungan dari penggunaan TDD yaitu:
– Mengurangi biaya produksi pembangunan perangkat lunak.
– Rangkaian regression test terus dikembangkan secara bertahap seiring dengan pengembangan kode program.
– Menyederhanakan proses debug, ketika pengujian gagal maka letak masalah akan terlihat jelas.
– Tes yang dibuat merupakan dokumentasi sistem yang dideskripsikan dalam bentuk kode, sehingga memudahkan proses pembuatan dokumentasi.
C. Release Testing
Pengujian ini dilakukan untuk memastikan bahwa sistem sudah cukup baik untuk digunakan dari segi fungsionalitas, kinerja, dan keandalan sistem. Pada pengujian ini dilakukan requirement-based testing yaitu memeriksa setiap persyaratan untuk mengembangkan pengujian sertam pembuatan test case dan test scenario.
Setelah sistem terintegrasi sepenuhnya, di tahap ini dilakukan performace test dengan menjalankan serangkai pengujian peningkatan bebanpada aplikasi untuk melihat kegagalan yang terjadi pada aplikasi. Contohnya yaitu pengujian pada suatu aplikasi yang bisa memproses 300 transaksi per detik, lalu dilakukan pengujian lebih dari 300 transaki per detik hingga melampaui beban desain maksimum sistem dan sistem gagal. Jika sistem berjalan dengan baik sampai batas transaksi sesuai dengan kebutuhan sistem, maka aplikasi dinyatakan lulus pengujian.
D. User Testing
User testing merupakan tahapan proses pengujian dimana pengguna atau klien memberikan masukan dan saran terhadap pengujian sistem. User testing terdiri dari beberapa jenis, sebagai berikut:
1. Alpha testing, pengujian yang dilakukan oleh tim pengembang di lingkup internal.
2. Beta testing, pengujian yang dilakukan oleh tim pengembang bersaam dengan end user sebelum aplikasi resmi dirilis.
3. Acceptance testing, klien menguji aplikasi unutk memutuskan apakah aplikasi sudah sesuai dan siap diterima atau tidak diterapkan di lingkungan klien.
Berikut ini gambaran proses acceptance testing: