Membangun dan mengembangkan sebuah software atau aplikasi biasanya dilakukan bertahap melalui beberapa fase hingga software atau aplikasi tersebut bisa rilis dan digunakan oleh publik. Proses tersebut dikenal dengan software development life cycle (SDLC). Dalam SDLC, ada fase testing atau pengujian.
Biasanya fase testing dilakukan setelah fase sebelumnya, yaitu fase development, telah selesai dilakukan untuk memastikan bahwa software yang dibangun telah berjalan dan berfungsi dengan baik sebelum akhirnya digunakan secara luas.
Klasifikasi Software Testing
Secara garis besar, software testing dikelompokkan menjadi dua jenis, yaitu functional testing dan non-functional testing.
Functional Testing
Functional testing adalah jenis testing yang menitikberatkan pada pengujian fungsionalitas utama atau business-logic dari sebuah software. Berikut adalah beberapa teknik yang dapat dilakukan untuk menjalankan functional testing.
Non-Functional Testing
Non-functional testing adalah jenis testing yang menitikberatkan pada pengujian aspek-aspek penting lainnya di luar fungsionalitas dari software itu sendiri. Berikut adalah beberapa jenis non-functional testing yang dapat dilakukan.
Manual Testing vs Automated Testing
Software testing dapat dilakukan secara manual dan otomatis. Manual testing melibatkan individu yang secara langsung melakukan pengujian terhadap software tersebut secara menyeluruh.
Manual testing dilakukan untuk menguji aspek dalam sebuah software yang tidak memungkinkan untuk diuji secara otomatis. Namun, manual testing memiliki beberapa kekurangan, di antaranya membutuhkan sumber daya dan waktu yang lebih banyak, serta memungkinkan terjadinya human-error.
Automated testing, di sisi lain, dilakukan secara otomatis oleh sistem. Developer atau tester hanya butuh menuliskan script pengujian untuk dijalankan. Tentu automated testing akan membutuhkan sumber daya dan waktu yang lebih sedikit serta kecil kemungkinan terjadinya human-error.
Akan tetapi, tidak semua aspek dalam software dapat diuji dengan menggunakan automated testing, contohnya usability testing yang sangat bergantung terhadap peran manusia. Untuk memaksimalkan proses pengujian, metode manual testing dan automated testing dapat dilakukan secara berdampingan.
Test Driven Development (TDD)
Test-driven development (TDD) adalah sebuah pendekatan yang digunakan dalam proses pengembangan sebuah perangkat lunak atau aplikasi dan pengembang diharuskan untuk melakukan pengujian atau testing terlebih dahulu sebelum mengembangkan fungsionalitas dari aplikasi tersebut.
Dalam test-driven development, pengembang akan terlebih dahulu menulis skenario pengujian unit (unit testing). Unit adalah bagian terkecil dari perangkat lunak yang dapat diuji (testable). Pada pemrograman berorientasi objek, unit umumnya dapat berupa class, method, atau procedure.
Alur kerja dari test-driven development bersifat iteratif, dimulai dengan penulisan skenario dan menjalankan pengujian. Pada tahap ini, pengujian akan gagal karena kode implementasi belum ditulis. Kemudian, proses dilanjutkan dengan menulis kode implementasi seminimal mungkin. Tujuannya untuk membuat kode pengujian sebelumnya berhasil.
Setelah itu, kode implementasi dan kode pengujian akan dioptimasi (refactor) untuk meningkatkan kualitas dan keterbacaan kode tanpa mengubah fungsionalitas atau perilakunya. Proses test driven development diakhiri dengan melakukan pengujian kembali. Ini untuk memastikan kode implementasi sudah sesuai dengan hal yang diharapkan dalam skenario pengujian. Proses tersebut dikenal dengan istilah red-green-refactor.
Berikut manfaat Test Driven Development (TDD)
Perlu diperhatikan juga bahwa melakukan metode test driven development membutuhkan waktu yang relatif lebih lama karena developer perlu menuliskan kode testing dan kode implementasi. Metode ini akan lebih efektif jika dilakukan dalam sebuah proyek yang kompleks dengan tim yang memiliki sumber daya yang besar.
Kesimpulan
Jadi, itulah pembahasan mengenai software testing yang merupakan bagian dari software development life cycle (SDLC). Apakah kamu sudah paham sekarang? Intinya adalah testing merupakan tahapan yang sangat penting untuk diperhatikan ketika mengembangkan sebuah software. Ini demi menghasilkan software yang baik, bebas dari bugs, dan disukai oleh pengguna.