Testy regresji
Chodzi o testy regresji .
Wyobraź sobie, że następny programista patrzy na twoją metodę i zauważa, że używasz magicznych liczb. Powiedziano mu, że magiczne liczby są złe, więc tworzy dwie stałe, jedną dla liczby drugiej, drugą dla liczby trzeciej - nie ma nic złego w robieniu tej zmiany; to nie tak, że modyfikował już i tak poprawną implementację.
Rozproszony, odwraca dwie stałe.
Zatwierdza kod i wszystko wydaje się działać dobrze, ponieważ po każdym zatwierdzeniu nie są wykonywane testy regresji.
Pewnego dnia (może być tygodnie później) coś się psuje gdzie indziej. A gdzie indziej mam na myśli całkowicie przeciwną lokalizację bazy kodu, która wydaje się nie mieć nic wspólnego z polynominal
funkcją. Godziny bolesnego debugowania prowadzą do sprawcy. W tym czasie aplikacja nadal nie działa w produkcji, co powoduje wiele problemów dla klientów.
Zachowanie oryginalnych testów, które napisałeś, może zapobiec takiemu bólowi. Rozkojarzony programista popełni kod i prawie natychmiast zobaczy, że coś złamał; taki kod nie dotrze nawet do produkcji. Testy jednostkowe będą dodatkowo bardzo precyzyjne w odniesieniu do lokalizacji błędu . Rozwiązanie tego nie byłoby trudne.
Efekt uboczny ...
W rzeczywistości większość refaktoryzacji opiera się w dużej mierze na testach regresyjnych. Dokonaj małej zmiany. Test. Jeśli mija, wszystko jest w porządku.
Efektem ubocznym jest to, że jeśli nie masz testów, praktycznie każde refaktoryzowanie staje się ogromnym ryzykiem złamania kodu. Biorąc pod uwagę to wiele przypadków, trudno jest już wytłumaczyć kierownictwu, że refaktoryzacja powinna zostać wykonana, jeszcze trudniej byłoby to zrobić po poprzednich próbach refaktoryzacji wprowadzających wiele błędów.
Dysponując kompletnym zestawem testów, zachęcasz do refaktoryzacji, a więc do lepszego, czystszego kodu. Bez ryzyka staje się bardzo kuszące, aby regularnie refaktoryzować więcej.
Zmiany wymagań
Kolejnym istotnym aspektem jest to, że wymagania się zmieniają. Możesz zostać poproszony o obsługę liczb zespolonych i nagle musisz przeszukać dziennik kontroli wersji, aby znaleźć poprzednie testy, przywrócić je i rozpocząć dodawanie nowych testów.
Dlaczego to wszystko kłopot? Po co usuwać testy, aby dodać je później? Mogłeś je przede wszystkim zatrzymać.