Tytuł mówi wszystko. Moja firma ponownie używa starszego projektu oprogramowania układowego dla urządzenia mikrokontrolera, napisanego całkowicie zwykłym C.
Są części, które są oczywiście błędne i wymagają zmiany, a pochodzące z tła C # / TDD Nie podoba mi się pomysł losowego refaktoryzowania rzeczy bez testów, które zapewniłyby nas, że funkcjonalność pozostaje niezmieniona. Widziałem też, że trudne do znalezienia błędy były wprowadzane przy wielu okazjach poprzez najmniejsze zmiany (co, moim zdaniem, zostałoby naprawione, gdyby zastosowano testy regresji). Należy bardzo uważać, aby uniknąć tych błędów: ciężko jest śledzić kilka globali wokół kodu.
Podsumowując:
- Jak dodać testy jednostkowe do istniejącego ściśle powiązanego kodu przed refaktoryzacją?
- Jakie narzędzia polecasz? (mniej ważne, ale wciąż miło wiedzieć)
Nie jestem bezpośrednio zaangażowany w pisanie tego kodu (moja odpowiedzialność to aplikacja, która będzie współdziałać z urządzeniem na różne sposoby), ale byłoby źle, gdyby pozostawiono dobre zasady programowania, gdyby istniała szansa na ich wykorzystanie.
źródło
Jeśli chodzi o techniki, prawdopodobnie książka Michaela Feathersa w odpowiedzi Pétera Töröka będzie dość wyczerpująca. Jeśli nie chcesz iść do książki, proponuję trzystopniowy proces:
Powtórz ten proces kilka razy i powinieneś przekonać się, że jakość starszej bazy kodu znacznie wzrosła.
Jeśli chodzi o narzędzia, pamiętaj, że C ++ może wywoływać C, więc do testowania kodu C można użyć dowolnej struktury testowania jednostek C ++. Na przykład używamy CPPUnit do testowania jednostkowego wiązki kodu C w naszym projekcie.
źródło