Eu estou olhando para uma base de código pequena (~ 70kLOC incluindo C # gerada) (.NET 4.0, alguns Silverlight) que possui uma cobertura de teste muito baixa. O código em si funciona porque passou no teste de aceitação do usuário, mas é frágil e, em algumas áreas, não é muito bem fatorado. Eu gostaria de adicionar uma cobertura sólida de teste de unidade em torno do código legado usando os suspeitos do costume (NMock, NUnit, StatLight para os bits do Silverlight).
Minha abordagem normal é começar a trabalhar no projeto, teste de unidade e refatoração, até que eu esteja satisfeito com o estado do código. Eu fiz isso muitas vezes no passado e funcionou bem.
No entanto, desta vez, estou pensando em usar um gerador de teste (em particular o Pex ) para criar a estrutura de teste e, em seguida, aprimorá-la manualmente.
Minha pergunta é: você já usou geradores de teste de unidade no início do trabalho em uma base de código herdada? Em caso afirmativo, você os recomendaria?
Meu medo é que os testes gerados não atinjam as nuances semânticas da base de código, levando à terrível situação de ter testes para a métrica de cobertura, em vez de testes que expressam claramente o comportamento pretendido no código.
fonte
Respostas:
Eu sugeriria olhar as coisas um pouco diferente. Adicionar novo código de teste de unidade a um aplicativo existente sem incidentes pode não fornecer os melhores resultados. Se você estiver fazendo isso para se familiarizar com a base de código ou se realmente tiver tempo para matar e quiser testar os geradores de teste, ignore meus comentários.
Para ser pragmático, você deve examinar todas as listas de erros. Em seguida, crie testes de unidade para cada um dos erros, resultando em como ele deve se comportar. Idealmente, você adicionaria apenas um novo código para cada bug à medida que o alcançasse.
Tempos para adicionar código de teste de unidade:
É difícil quantificar o valor da adição de testes de unidade após o fato.
Normalmente, não me permito escrever respostas contrárias ao que o solicitante deseja, mas acho que essa é uma boa lição para passar adiante.
fonte