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?