Pracuję nad starszym systemem (to znaczy, że został napisany bez testów). Próbowaliśmy przetestować część systemu, pisząc testy integracyjne, które testują funkcjonalność z zewnątrz.
Daje mi to pewne zaufanie do refaktoryzacji części kodu bez obawy o jego uszkodzenie. Problem polega jednak na tym, że testy integracyjne wymagają wdrożenia (ponad 2 minuty) i uruchomienia przez wiele minut. Ponadto są trudne do utrzymania. Każdy z nich obejmuje tysiące linii kodu, a gdy jeden z nich się zepsuje, debugowanie przyczyny może potrwać kilka godzin.
Ostatnio piszę wiele testów jednostkowych dla tych zmian funkcjonalnych, które wprowadziłem, ale zanim się zgodzę, zawsze przeprowadzam nowe wdrożenie i uruchamiam wszystkie testy integracyjne, aby upewnić się, że niczego nie przegapiłem. W tym momencie wiem, że moje testy jednostkowe i niektóre testy integracyjne pokrywają się z tym, co testują.
Skąd mam wiedzieć, kiedy moje dobre testy jednostkowe odpowiednio pokrywają zły test integracji, aby móc usunąć ten test integracji?
źródło
Testy jednostek nie są świętym Graalem testowania, są tylko jednym z wielu narzędzi do testowania bazy kodu. Dlatego żadna liczba testów jednostkowych nie powinna być nigdy uważana za bezpieczną zamiast innych testów. Jeśli masz zły test integracyjny, powinieneś pracować, aby był to dobry test integracyjny, a nie zamieniać go na coś innego, to jest jak zastąpienie drzwi wejściowych ogrodzeniem obwodowym i bramą.
źródło