Misalkan seseorang memiliki program yang relatif besar (katakanlah 900k SLOC dalam C #), semua berkomentar / didokumentasikan secara menyeluruh, terorganisir dengan baik dan bekerja dengan baik. Seluruh basis kode ditulis oleh pengembang senior tunggal yang tidak lagi bersama perusahaan. Semua kode dapat diuji apa adanya dan IoC digunakan di seluruh - kecuali untuk beberapa alasan aneh mereka tidak menulis tes unit apa pun. Sekarang, perusahaan Anda ingin melakukan percabangan kode dan ingin pengujian unit ditambahkan untuk mendeteksi ketika perubahan merusak fungsionalitas inti.
- Apakah menambahkan tes merupakan ide yang bagus?
- Jika demikian, bagaimana seseorang memulai sesuatu seperti ini?
SUNTING
OK, jadi saya tidak mengharapkan jawaban membuat argumen yang bagus untuk kesimpulan yang berlawanan. Masalahnya mungkin keluar dari tangan saya. Saya sudah membaca "pertanyaan duplikat" juga dan konsensus umum adalah bahwa "tes menulis itu baik" ... ya, tapi tidak terlalu membantu dalam kasus khusus ini.
Saya tidak berpikir saya sendirian di sini dalam merenungkan tes menulis untuk sistem warisan. Saya akan terus metrik tentang berapa banyak waktu yang dihabiskan dan berapa kali tes baru menangkap masalah (dan berapa kali mereka tidak). Saya akan kembali dan memperbarui ini sekitar satu tahun dari sekarang dengan hasil saya.
KESIMPULAN
Jadi ternyata pada dasarnya tidak mungkin untuk hanya menambahkan unit test ke kode yang ada dengan kemiripan ortodoksi. Setelah kode berfungsi, Anda jelas tidak dapat menerangi / menguji lampu hijau Anda, biasanya tidak jelas perilaku mana yang penting untuk diuji, tidak jelas harus mulai dari mana dan tentu saja tidak jelas kapan Anda selesai. Benar-benar bahkan mengajukan pertanyaan ini meleset dari titik utama dalam tes menulis. Dalam sebagian besar kasus, saya merasa lebih mudah menulis ulang kode menggunakan TDD daripada menguraikan fungsi yang dimaksud dan secara retroaktif menambahkan dalam unit test. Ketika memperbaiki masalah atau menambahkan fitur baru itu adalah cerita yang berbeda, dan saya percaya bahwa ini adalah waktu untuk menambahkan tes unit (seperti yang ditunjukkan beberapa di bawah). Akhirnya sebagian besar kode akan ditulis ulang, sering lebih cepat dari yang Anda harapkan - mengambil pendekatan ini I '