Obecnie refaktoryzuję część dużej bazy kodu bez żadnych testów jednostkowych. Próbowałem zmienić kod na brutalny, tzn. Próbując odgadnąć, co robi kod i jakie zmiany nie zmieniłyby jego znaczenia, ale bez powodzenia: losowo psuje funkcje w całej bazie kodu.
Należy pamiętać, że refaktoryzacja obejmuje przeniesienie starszego kodu C # do bardziej funkcjonalnego stylu (starszy kod nie korzysta z żadnych funkcji .NET Framework 3 i nowszych, w tym LINQ), dodając ogólne, w których kod może z nich skorzystać itp.
Nie mogę korzystać z metod formalnych , biorąc pod uwagę, ile by to kosztowały.
Z drugiej strony, zakładam, że należy ściśle przestrzegać zasady „Każdy zrekonstruowany starszy kod będzie zawierał testy jednostkowe” , niezależnie od tego, ile by to kosztowało. Problem polega na tym, że kiedy refaktoryzuję niewielką część prywatnej metody 500 LOC, dodawanie testów jednostkowych wydaje się trudnym zadaniem.
Co może mi pomóc w ustaleniu, które testy jednostkowe są odpowiednie dla danego fragmentu kodu? Domyślam się, że statyczna analiza kodu byłaby w jakiś sposób pomocna, ale jakich narzędzi i technik mogę użyć do:
Wiedz dokładnie, jakie testy jednostkowe powinienem utworzyć,
I / lub wiesz, czy dokonana przeze mnie zmiana wpłynęła na oryginalny kod w sposób, który wykonuje inaczej niż teraz?
formal methods in software development
ponieważ służy on do udowodnienia poprawności programu przy użyciu logiki predykatów i nie miałby zastosowania do refaktoryzacji dużej bazy kodu. Formalne metody zwykle stosowane w celu udowodnienia, że kod działa poprawnie w obszarach takich jak zastosowania medyczne. Masz rację, jest to kosztowne, dlatego nie jest często używane.