Есть еще одна стратегия, на мой взгляд, которую проще всего реализовать на практике / поддерживать при наличии большего количества унаследованного кода -
пишите тесты на новую функциональность и на те части, которые изменяються.
Этот подход обеспечить то, что тесты покрывают новую функциональность (то есть то, что должно работать хорошо), и на те части, которые чаще всего изменяються (опять таки, там, где тесты нужны больше всего)
При этом убирается риск, что время, затраченное на покрытие тестами, будет потрачено на часть, которая не изменяется, и так работает, ...
Дальше, при работе с легаси кодом 100 % необходимы интеграционные тесты. Одних юнит тестов обычно не достаточно.