Judulnya mengatakan itu semua. Perusahaan saya menggunakan kembali proyek firmware lawas untuk perangkat mikrokontroler, ditulis sepenuhnya dalam bahasa C.
Ada bagian-bagian yang jelas-jelas salah dan perlu diubah, dan berasal dari latar belakang C # / TDD saya tidak suka gagasan untuk secara acak melakukan refactoring tanpa ada tes untuk meyakinkan kami bahwa fungsionalitas tetap tidak berubah. Juga, saya telah melihat bahwa sulit untuk menemukan bug diperkenalkan di banyak kesempatan melalui perubahan sekecil apa pun (yang merupakan sesuatu yang saya percaya akan diperbaiki jika pengujian regresi digunakan). Banyak kehati-hatian yang harus diambil untuk menghindari kesalahan ini: sulit untuk melacak sekelompok global di sekitar kode.
Untuk meringkas:
- Bagaimana Anda menambahkan tes unit ke kode yang sudah digabungkan sebelumnya sebelum melakukan refactoring?
- Alat apa yang Anda rekomendasikan? (kurang penting, tapi tetap menyenangkan untuk diketahui)
Saya tidak terlibat langsung dalam penulisan kode ini (tanggung jawab saya adalah sebuah aplikasi yang akan berinteraksi dengan perangkat dengan berbagai cara), tetapi akan menjadi buruk jika prinsip-prinsip pemrograman yang baik ditinggalkan jika ada kemungkinan mereka dapat digunakan.
sumber
Untuk teknik, mungkin Feathers Michael buku di jawaban Péter Török ini akan cukup komprehensif. Jika Anda tidak ingin pergi ke buku, saya sarankan proses tiga langkah:
Ulangi proses ini beberapa kali, dan Anda akan menemukan kualitas basis kode legacy telah meningkat secara signifikan.
Sejauh alat berjalan, perhatikan bahwa C ++ dapat memanggil ke C, sehingga setiap kerangka kerja pengujian unit C ++ dapat digunakan untuk menguji kode C. Misalnya, kami menggunakan CPPUnit untuk menguji unit sekelompok kode C dalam proyek kami.
sumber