Saya saat ini refactoring bagian dari basis kode besar tanpa unit test apa pun. Saya mencoba untuk memperbaiki kode dengan cara kasar, yaitu dengan mencoba menebak apa yang dilakukan kode dan perubahan apa yang tidak akan mengubah artinya, tetapi tanpa hasil: secara acak memecah fitur-fitur di sekitar basis kode.
Perhatikan bahwa refactoring mencakup pemindahan kode C # lama ke gaya yang lebih fungsional (kode lama tidak menggunakan salah satu fitur .NET Framework 3 dan yang lebih baru, termasuk LINQ), menambahkan generik di mana kode dapat mengambil manfaat darinya, dll.
Saya tidak dapat menggunakan metode formal , mengingat berapa biayanya.
Di sisi lain, saya berasumsi bahwa setidaknya "Setiap kode warisan refactored harus datang dengan unit test" harus diikuti dengan ketat, tidak peduli berapa biayanya. Masalahnya adalah ketika saya memperbaiki sebagian kecil metode pribadi 500 LOC, menambahkan tes unit tampaknya menjadi tugas yang sulit.
Apa yang bisa membantu saya mengetahui unit test mana yang relevan untuk bagian kode tertentu? Saya menduga bahwa analisis statis dari kode akan membantu, tetapi apa alat dan teknik yang dapat saya gunakan untuk:
Tahu persis tes unit apa yang harus saya buat,
Dan / atau tahu jika perubahan yang saya lakukan memengaruhi kode asli dengan cara yang dieksekusi berbeda dari sekarang?
formal methods in software development
karena itu digunakan untuk membuktikan kebenaran suatu program menggunakan logika predikat dan tidak akan memiliki penerapan untuk refactoring basis kode besar. Metode formal biasanya digunakan untuk membuktikan kode bekerja dengan benar di bidang-bidang seperti aplikasi medis. Anda benar itu mahal untuk melakukan itu sebabnya itu tidak sering digunakan.