Eu fazia bem dessa forma que você comentou. Mas com o tempo experimentei inverter um pouco a ordem.
Antes de refatorar o código( criar as camadas e separar as responsabilidades ) eu tento criar alguns testes e após ter esses testes passando, vou pegando cada cenário do teste e vou ajustando e rodando o teste.
Dessa maneira eu tenho a garantia que o resultado esperado sempre será o mesmo.