Tema berulang yang saya temui dalam karir saya adalah menjadi pengembang baru yang tiba dalam sebuah tim, dan dengan cepat memiliki ketidakpercayaan yang melekat pada unit yang ada dan suite tes integrasi.
Selama wawancara, Anda diberitahu oleh manajemen bahwa mereka "sangat mendukung pengujian unit" dan bahwa mereka secara terbuka mendorongnya. Mereka melakukannya, tetapi segala sesuatu tentang tes itu sendiri benar-benar salah. Seperti fakta bahwa mereka mengklaim cakupan 100% ketika ada cakupan uji integrasi 100% tetapi kurang dari 10% cakupan pengujian unit yang dapat diulang. Beberapa masalah lain yang saya temukan:
Tidak ada indikasi yang jelas antara apa yang merupakan tes unit dan apa yang merupakan tes integrasi. Tes unit dan integrasi dicampur bersama dalam kelas yang sama.
Tes integrasi yang telah mendeklarasikan dependensi eksplisit pada data dinamis yang sangat spesifik pada basis data lingkungan tertentu.
Tes integrasi non-transaksional, pada dasarnya tes yang mungkin atau tidak mengganggu untuk membersihkan setelah diri mereka sendiri, kadang-kadang membutuhkan database manual "scrubbing" untuk membuat tes berulang.
Jangan mengolok-olok apa pun, dan kode aplikasi memerlukan perombakan besar hanya untuk memungkinkan pengejekan. Dengan kata lain, desain tanpa pengujian dalam pikiran.
Tidak ada konvensi penamaan yang jelas untuk dengan cepat melihat nama tes dan menentukan kira-kira tes apa yang sedang dilakukan.
Ini semua bukan untuk mengatakan bahwa SEMUA dari tes tidak berguna atau buruk, banyak dari mereka cukup bagus dan layak disimpan, tetapi rasanya seperti mendulang emas kadang-kadang. Saya sengaja menghindari menjalankan tes hanya karena saya takut mengacaukan basis data untuk kotak tes kotak hitam saya.
Ini pada dasarnya memberi saya ketidakpercayaan yang melekat pada unit dan tes integrasi yang belum saya tulis atau ulas secara pribadi. Pada tingkat tertentu jika Anda tidak memiliki kepercayaan pada kualitas test suite Anda, maka itu benar-benar tidak membawa nilai bagi tim atau proyek sama sekali.
Apa yang Anda lakukan ketika Anda menemukan diri Anda dalam situasi ini? Menurut Anda apa rencana serangan terbaik untuk mengatasi sesuatu seperti ini?
Haruskah semua tes di refactored dalam upaya monumental yang mencakup seluruh rilis? Haruskah Anda mengabaikan gagasan bahwa proyek lawas ini mungkin memiliki cakupan tes unit yang solid satu hari?