Ya, Anda harus menguji seluruh rantai peristiwa sebagai satu unit. Jadi, dalam contoh Anda dengan prosedur yang menyisipkan ke dalam tabel dan menyebabkan beberapa pemicu untuk menyala, Anda harus menulis tes unit yang mengevaluasi prosedur untuk berbagai input. Setiap pengujian unit harus lulus atau gagal tergantung pada apakah itu mengembalikan nilai yang benar, mengubah keadaan tabel dengan benar, membuat email yang benar, dan bahkan mengirim paket jaringan yang benar jika dirancang untuk melakukan hal seperti itu. Singkatnya setiap efek yang dimiliki unit harus diverifikasi.
Anda benar, bahwa mendesain unit test memerlukan beberapa pekerjaan, tetapi sebagian besar pekerjaan itu harus dilakukan untuk menguji unit secara manual, Anda hanya menyimpan pekerjaan yang diperlukan untuk menguji unit sehingga ketika perubahan dilakukan di masa depan pengujian bisa sama menyeluruh dan secara signifikan lebih mudah.
Mengubah data memang membuat pengujian lebih sulit, tetapi itu tidak membuat pengujian kurang penting dan benar-benar meningkatkan nilai pengujian unit karena sebagian besar kesulitan hanya harus dipikirkan sekali daripada setiap kali perubahan dilakukan ke unit. Kumpulan data yang disimpan, sisipan / pembaruan / penghapusan yang merupakan bagian dari pengaturan / penghancuran, dan operasi dengan cakupan yang sempit semua dapat digunakan untuk membuatnya lebih mudah. Karena pertanyaan tidak spesifik untuk basis data, detailnya akan beragam.
Tidak ada ambang batas kompleksitas pada ujung atas atau bawah yang seharusnya menghentikan Anda dari pengujian atau pengujian unit. Pertimbangkan pertanyaan-pertanyaan ini:
- Apakah Anda selalu menulis kode bebas bug?
- Apakah unit kecil selalu bebas bug?
- Apakah OK untuk unit besar memiliki bug?
- Berapa banyak bug yang diperlukan untuk menyebabkan bencana?
Misalkan Anda memulai pekerjaan baru dan bertugas membuat optimasi ke fungsi kecil yang digunakan di banyak tempat. Seluruh aplikasi ditulis dan dikelola oleh seorang karyawan yang bahkan tidak ada yang ingat. Unit memiliki dokumentasi yang menggambarkan perilaku normal yang diharapkan, tetapi tidak banyak. Manakah dari ini yang Anda lebih suka temukan?
- Tidak ada unit test di mana pun dalam aplikasi. Setelah melakukan perubahan, Anda dapat melakukan beberapa pengujian manual terhadap unit itu sendiri untuk memastikannya masih mengembalikan nilai yang diharapkan dalam dokumentasi. Anda kemudian dapat menjalankannya untuk produksi, silangkan jari Anda dan berharap itu berfungsi (setelah semua, Anda selalu menulis kode bebas bug dan pengoptimalan dalam satu unit tidak pernah dapat mempengaruhi yang lain) atau menghabiskan banyak waktu untuk mempelajari bagaimana seluruh aplikasi berfungsi agar Anda dapat menguji setiap unit secara langsung atau tidak langsung secara manual.
- Unit menguji seluruh aplikasi yang berjalan secara otomatis setiap hari atau sesuai permintaan. Mereka memeriksa tidak hanya nilai input normal dan respons yang diharapkan, tetapi juga nilai abnormal dan pengecualian yang diharapkan yang muncul. Anda melakukan perubahan dan menjalankan unit test unit untuk aplikasi segera melihat bahwa tiga unit lainnya tidak lagi menghasilkan hasil yang diharapkan. Dua di antaranya jinak, jadi Anda men-tweak unit test untuk menjelaskan hal itu. Yang ketiga membutuhkan sedikit perbaikan dan uji unit kecil baru. Setelah melakukan perubahan, seluruh rangkaian tes berhasil dan Anda melakukan perubahan dengan percaya diri.