Algo que todos os envolvidos na atividade de desenvolvimento de software têm certa noção prática, mas que merece ser comentado por ser curioso:
De acordo com Roger S. Pressman1, o teste de software pode tão somente mostrar a existência de bugs, mas nunca pode garantir que eles não existem. Mais grave que isso: “Um bom caso de teste é aquele que tem uma elevada probabilidade de revelar um erro ainda não descoberto” e “Um teste bem-sucedido é aquele que revela um erro ainda não descoberto”. Os objetivos dos testes na realidade devem ser bem contrários ao “ponto de vista comumente defendido em que um teste bem-sucedido é aquele em que nenhum erro é encontrado”.
Eis um parágrafo bastante elucidativo do mesmo autor:
À medida que os resultados de teste são reunidos e avaliados, uma indicação qualitativa da qualidade e da confiabilidade do software começa a vir à tona. Se erros graves, que exijam modificação de projeto, forem encontrados com regularidade, a qualidade e a confiabilidade do software são suspeitas, e testes adicionais são indicados. Se, por outro lado, as funções do software parecerem estar funcionando adequadamente e os erros encontrados forem facilmente corrigíveis, pode-se tirar uma entre duas conclusões: (1) a qualidade e a confiabilidade do software são inaceitáveis; ou (2) os testes são inadequados para revelar erros graves! Finalmente, se a atividade de teste não descobrir nenhum erro, não há dúvida de que a configuração de teste não foi suficientemente elaborada e que erros estão escondidos no software. Esses defeitos serão por fim descobertos pelos usuários e corrigidos pelo desenvolvedor durante a fase de manutenção (quando o custo por correção pode ser de 60 a 100 vezes o custo por correção durante a fase de desenvolvimento).
O mais curioso de tudo é que Pressman não chega a esse ponto mas, se os testes devem encontrar erros, podemos deduzir que os bugs são inerentes ao software. Então, enquanto alguns desenvolvedores sentem-se frustrados ao ter que fazer testes e principalmente ao constatar erros, devemos sempre considerar a atividade de teste como algo construtivo. Afinal, embora não prove que o software seja desprovido de erros, a condução de testes auxilia muito para indicar a qualidade do software como um todo, se cumpre as especificações e requisitos de desempenho e confiabilidade.
1 PRESSMAN, Roger S. Engenharia de software. Trad. José Carlos Barbosa dos Santos. São Paulo: Pearson Makron Books, 1995. p. 786-790.
Post scriptum (10 mai. 2008)
Eis um engraçado post sobre o assunto, de Nerdson não vai à escola: “Testem, macacos, testem!”

[...] Prof. Aline, convido os colegas a darem uma olhada em algo que escrevi em meados do ano passado: Curiosidades sobre testes de software. Envie um [...]
[...] E, a propósito de algo que foi comentado pela Prof. Aline, convido os colegas a darem uma olhada em algo que escrevi em meados do ano passado: Curiosidades sobre testes de software. [...]