Patrzę na małą (~ 70kLOC łącznie z wygenerowanym) C # (.NET 4.0, trochę Silverlight), która ma bardzo niski zasięg testu. Sam kod działa w tym sensie, że przeszedł testy akceptacji użytkownika, ale jest kruchy i w niektórych obszarach niezbyt dobrze uwzględniony. Chciałbym dodać zasięg testu jednolitych jednostek wokół starszego kodu, używając zwykłych podejrzanych (NMock, NUnit, StatLight dla bitów Silverlight).
Moje normalne podejście polega na rozpoczęciu pracy nad projektem, testowaniu jednostkowym i refaktoryzacji, dopóki nie będę zadowolony ze stanu kodu. Robiłem to wiele razy w przeszłości i działało to dobrze.
Jednak tym razem myślę o użyciu generatora testów (w szczególności Pexa ) do stworzenia frameworka testowego, a następnie ręcznie go opróżnić.
Moje pytanie brzmi: czy używałeś generatorów testów jednostkowych w przeszłości, rozpoczynając prace nad starszą bazą kodu, a jeśli tak, czy poleciłbyś je?
Obawiam się, że wygenerowane testy pominą niuanse semantyczne bazy kodu, co prowadzi do przerażającej sytuacji posiadania testów ze względu na metrykę pokrycia, a nie testów, które wyraźnie wyrażają zamierzone zachowanie w kodzie.
źródło
Odpowiedzi:
Proponuję spojrzeć na sprawy trochę inaczej. Dodanie nowego kodu testu jednostkowego do istniejącej aplikacji bez incydentów może nie dać najlepszych wyników. Jeśli robisz to, aby zapoznać się z bazą kodu lub naprawdę masz czas na zabijanie i chcesz przetestować generatory testowe, zignoruj moje komentarze.
Aby być pragmatycznym, powinieneś przejrzeć wszystkie listy błędów. Następnie utwórz testy jednostkowe dla każdego z błędów, w wyniku czego powinien się zachowywać. Idealnie byłoby dodać nowy kod dla każdego błędu, gdy tylko go dotrzesz.
Razy, aby dodać kod testu jednostkowego:
Trudno jest oszacować wartość dodania testów jednostkowych po fakcie.
Zwykle nie pozwalam sobie pisać odpowiedzi, które są sprzeczne z tym, czego chce pytający, ale uważam, że jest to dobra lekcja do przekazania.
źródło