Este é um acompanhamento para esta pergunta. Eu estava perguntando como fazer testes de unidade quando você tem uma biblioteca de algoritmos científicos. Eu tenho um problema semelhante agora, mas com um projeto diferente.
Estou trabalhando em uma abstração de estrutura de mecanismo de gráficos 3D para DirectX, OpenGl, WebGl, Silverlight, WPF e basicamente qualquer API 3D existente, em C #, chamada Rendering .NET . O cenário é o seguinte, o projeto está sendo desenvolvido por uma pequena equipe de colegas meus, todos trabalhando no mesmo escritório. Somos todos cientistas da computação, pouco interessados na comunidade e nas práticas de engenharia de software. Eu até tive dificuldade em convencer a mudar do Subversion para o Git e publicar o projeto no Codeplex. O projeto está ficando grande (cerca de 80 mil linhas de C #) e agora abrange a maior parte do DirectX e do OpenGl até o Shader Model 5.0, portanto, não é um projeto único como o descrito na pergunta vinculada. Também queremos incentivar a comunidade de código aberto a colaborar.
Até agora, testamos escrevendo pequenos aplicativos que envolvem a inicialização de todos os dispositivos e recursos, a criação de uma cena e o desenho. O problema é que não sei como diferenciá-lo, quero dizer, como projetar pequenos casos de teste que testam recursos específicos da estrutura, como alocação de recursos, mosaico primitivo, compilação de sombreamento, etc., sem ter que recriar o inicialização do mecanismo inteiro. Para alguns desses casos, posso pensar em zombarias úteis, mas, em geral, como posso testar a correção de um algoritmo de renderização quando a saída é visual (uma imagem ou uma cena animada)? No momento, a coisa mais inteligente que encontramos é renderizar a mesma cena para um renderizador de software, DirectX e OpenGl, e compará-los pixel por pixel,
Então, qual é a abordagem de teste "correta" aqui?