Unit Testing – Bagian III: Menyingkap yang tersembunyi
Sebelumnya, saya ingin sedikit merangkum apa yang telah kita bahas pada artikel Unit Testing - Bagian II. Kita sudah tau bagaimana cara membuat test project, lalu test class, dan test method. Kita juga sudah paham bagaimana mengeksekusi setiap test method, dan melakukan verifikasi di dalam masing-masing test method tersebut. Termasuk bagaimana melakukan verifikasi atas ekspektasi terhadap sebuah Exception. Yang tidak kalah pentingnya, kita pun sudah mengerti bagaimana cara melihat test outcome hingga ke code coverage nya. Dengan begitu, sudah ada sedikit pencerahan tentang gimana sih bentuknya unit testing itu. Mungkin sebelumnya ada yang bertanya-tanya seperti apa bentuknya unit testing itu. Sekarang.. setidaknya sudah sedikit terjawab "oo gitu toh yang namanya unit testing". Masih lupa-lupa ingat? Boleh dibaca lagi di sini.
Oia, please keep in mind bahwa pembahasan kita hingga tulisan ini cuman for the sake of getting the idea apa sih unit testing itu, kayak gimana sih bentuknya, implementasinya seperti apa sih (dengan menggunakan teknologi .NET). Belum sampai gimana cara menulis test dengan baik dan benar. Bahkan unit testing itu sendiri memiliki patterns yang sudah well acknowledged. Itu nanti ya, di tulisan-tulisan selanjutnya :) Dan contoh-contoh kode program yang saya tulis bukan contoh implementasi real world.
Yang tersembunyi
Seperti yang sudah kita ketahui bersama, untuk kepentingan security/information hiding, .NET memiliki modifier private, protected, dan internal. Tulisan ini akan membahas bagaimana melakukan unit test terhadap method/property dengan ketiga modifier tersebut.
Unit Testing – Bagian II: Bagaimana
Sebuah konsep tanpa implementasi atau sebuah teori tanpa praktek ibarat janji tinggal janji (tak ditepati). Konsep unit testing sudah saya bahas pada artikel sebelumnya, Unit Testing - Bagian I: Apa, Mengapa. Bagaimana implementasi unit testing pada Software Engineering? Kali ini, saya akan coba untuk membahasnya dengan menggunakan teknologi Microsoft. Sebelum membaca lebih lanjut, bagi anda yang belum mengerti apa itu unit testing, mungkin bisa baca konsep nya terlebih dahulu. Karena keterbalikan dari janji tinggal janji, sebuah implementasi tanpa konsep ibarat cinta buta, apa yang dilakukan tak lebih dari luapan hati dan perasaan... halaaa jadi ngaco deh..ahahaa. Lupakan tentang cinta, saya juga bukan ahlinya ;P
Saya bikin sebuah class bernama Fighter pada project Fighting.Api di dalam sebuah solution bernama Fighting, dengan beberapa member (method dan field) seperti berikut:
Unit Testing – Bagian I: Apa, mengapa?
Saat itu hujan rintik-rintik, halah seorang Interviewer bertanya pada saya, "Kamu tau Unit Testing?". Karena saya tidak ingin terlihat tidak tau sama sekali (padahal faktanya memang begitu), saya menjawab dengan sebuah pertanyaan, "Ngetes fungsional setiap bagian atau fitur dari aplikasi kan, Pak?". Beliau balik bertanya lagi, "Maksudmu, misalnya tes fungsional sebuah tombol dalam form dengan interaksi User?". Dengan percaya diri saya jawab "Iya, Pak. Setiap bagian fitur diuji oleh developer lalu diuji lagi pada saat UAT". "Oh bukan, bukan itu" kata beliau. Berhubung udah terlanjur (pengen) malu, saya balik tanya lagi "Trus, yang gimana dong, Pak?". Akhirnya beliau menjelaskan dalam beberapa kalimat singkat, apa itu Unit Testing ;D Semenjak saat itu, saya mulai mengimplementasikan unit testing pada proses software development sambil belajar sedikit demi sedikit.
Sebagian Software Engineer (maaf, saya lebih suka menggunakan istilah "Software Engineer" ketimbang "Developer" atau "Programmer" :) ) paham dengan baik apa itu Unit Testing, apa manfaatnya, dan bagaimana implementasinya. Sementara, sebagian yang lain tidak tau sama sekali dan bahkan baru pernah mendengar (yang terakhir ini mungkin cuma terjadi pada saya saat drama Interview yang saya ceritakan di atas ;P ).
Jadi...
Apa itu Unit Testing?