Я в целом согласен с @Peter в том, что это нетривиальная вещь, и вам может помешать просто знать, что делают, а не то, что они должны делать.Но это нормально, если не идеально, потому что тестирование так же важно для удобства сопровождения (то есть, чтобы знать, когда изменения ломают вещи), так же как и для правильности.Поэтому поставьте тесты вокруг существующей функциональности, как она есть сейчас, и если вам нужно исправить ошибку, вы можете изменить свой тест, чтобы зафиксировать исправление.
Если вы и ваша команда сосредоточены на добавлении новых функций,затем внедрите TDD сейчас, то есть протестируйте новую функциональность и добавьте в тесты существующую функциональность, которую вы модифицируете, как уже было предложено.
Если вы можете сосредоточиться на тестировании, то я бы тестировал в вертикальных слоях.Напишите несколько тестов для модели, затем ее сервисов, затем контроллеров (этот порядок - только предложение).Суть в том, что если вы тестируете часть книги в своем приложении, протестируйте все функциональные возможности книги, прежде чем двигаться дальше.Кроме того, вы можете расставить приоритеты по основным функциям приложения.Если «Книги» гораздо важнее, чем что-то еще, сначала проверьте «Книги».