Enquanto sou programador profissional, nunca fui formalmente treinado em engenharia de software. Como eu frequentemente visito aqui e SO, notei uma tendência para escrever testes de unidade sempre que possível e, conforme meu software se torna mais complexo e sofisticado, vejo os testes automatizados como uma boa idéia para ajudar na depuração.
No entanto, a maior parte do meu trabalho envolve escrever SQL complexo e depois processar a saída de alguma maneira. Como você escreveria um teste para garantir que seu SQL retornasse os dados corretos, por exemplo? Então, digamos que se os dados não estavam sob seu controle (por exemplo, o de um sistema de terceiros), como você pode testar eficientemente suas rotinas de processamento sem ter que escrever manualmente grandes quantidades de dados fictícios?
A melhor solução em que posso pensar é fazer visualizações dos dados que, juntos, cobrem a maioria dos casos. Posso então associar essas visualizações ao meu SQL para ver se ele está retornando os registros corretos e processar manualmente as visualizações para ver se minhas funções etc. estão fazendo o que deveriam. Ainda assim, parece excessivo e flakey; particularmente encontrando dados para testar ...