Saya telah bekerja pada basis kode yang sangat besar yang awalnya tidak memiliki unit test. Dengan mengikuti beberapa praktik kami sekarang (setelah beberapa tahun) memiliki sebagian besar basis kode tercakup oleh tes.
Semua kode baru harus memiliki unit test.
Semua kode yang diubah harus memiliki unit test yang ditambahkan padanya.
Cara kami menambahkan tes ke kode lama dengan aman tanpa merusaknya adalah dengan menggunakan pendekatan dasar berikut:
Pilih bagian kecil kode yang perlu Anda ubah fungsinya.
- Cobalah untuk membuat tes integrasi tingkat sistem untuk mengelilingi kode. Karena kompleksitas pengujian kombinatorial pada tingkat ini, tes ini hanya akan membentuk tes "asap" untuk mengambil kesalahan besar.
Perkenalkan antarmuka yang Anda butuhkan untuk dapat menguji kode yang Anda ubah. Gunakan teknik Refactoring yang terdiri dari urutan perubahan yang sangat kecil yang Anda yakini benar. Coba gunakan dukungan alat jika memungkinkan. Anda dapat melakukan ini dengan, misalnya, memindahkan / mengekstraksi metode yang Anda ubah ke objeknya sendiri. Periksa perubahan Anda secara teratur sehingga Anda dapat kembali. Tinjau-tinjau secara berkala bagaimana Anda membuat perubahan dengan menelusuri riwayat kontrol revisi.
Cobalah untuk membuat minimum tentang perubahan yang diperlukan untuk memutuskan ketergantungan yang mencegah Anda menambahkan tes.
- Tulis tes sejauh mungkin mencakup fungsionalitas kode yang akan Anda ubah. Lapor masuk secara teratur dan tinjau semua perubahan.
- Tulis tes untuk perubahan fungsionalitas / fungsionalitas baru.
- Menerapkan fungsionalitas (ini adalah siklus TDD normal Anda)
- Pastikan untuk memperbaiki area yang telah Anda cakup oleh tes (red-green-refactor).
Kami menemukan bahwa semakin banyak kami melakukan ini, semakin mudah didapat. Karena setiap kali Anda kembali ke basis kode, itu sedikit lebih baik.
Kami telah melihat penurunan besar dalam jumlah bug yang sampai ke penguji QA kami. Dengan regresi fungsi yang sekarang hampir tidak pernah terdengar, jadi saya pikir itu sepadan dengan usaha kami.