Estou prestes a reimplementar uma interface já definida (um conjunto de arquivos de cabeçalho C ++) em uma base de código antiga e relativamente grande. Antes de fazer isso, gostaria de ter a cobertura de teste o mais completa possível, para poder detectar erros de reimplementação o mais cedo e fácil possível. O problema é que a base de código já existente não foi projetada para ser facilmente testável, com (muito) grandes classes e funções, um alto grau de acoplamento, funções com (muitos) efeitos colaterais etc.
Seria bom saber de qualquer experiência anterior com tarefas semelhantes e algumas dicas boas e concretas sobre como você fez a adaptação de testes automatizados (unidade, integrações, regressão etc.) ao seu código legado.