Bom pessoal, apos mais uma curta temporada sem atualizacoes por aqui, estou retornando para dar continuidade a serie de discussoes a respeito de pontos importantes da engenharia de software. O tema abordado na discussao dessa postagem divide opinioes e talvez traga comentarios interessantes a respeito de experiencias pessoais. Pois bem, hoje falaremos a respeito de Testes de Software.Essa e a penultima postagem da serie inicial de discussoes planejada, sendo assim aproveitem pois esta acabando. =)Universidade Federal de VicosaDepartamento de InformaticaMestrado em Ciencia da ComputacaoINF 622 - Engenharia de SoftwareResumo no 05 Fatos31 - Remocao de erro e a fase mais demorada do ciclo de vida.32 - Software que um tipico programador acredita ser testado varias vezes, tinha apenas cerca de 55 a 60% dos caminhos de sua logica executada. Utilizar o suporte automatizado, como os analisadores de cobertura, pode aumentar para cerca de 85 a 90%. E quase impossivel testar 100% dos caminhos logicos de software.33 - Mesmo se uma cobertura de 100% de teste fosse possivel, isso nao seria um criterio suficiente para o teste. Cerca de 35% de defeitos de software emerge da falta de caminhos logicos, e outros 40% da execucao de uma combinacao unica de caminhos logicos. Eles nao vao ser apanhados por uma cobertura de 100%.34 - E quase impossivel fazer um bom trabalho de remocao de erro sem ferramentas. Depuradores sao comumente utilizados, mas outros, como os analisadores de cobertura, nao sao.DiscussaoOs fatos estudados analisam os principais problemas relacionados aos testes de software. O fato 31 trata do tempo demandado para a remocao de erros de software. Muitos autores chamam essa fase do processo de desenvolvimento de software por nomes diferentes. Os nomes mais comuns de se ver sao Teste, Verificacao e Validacao. Glass prefere chamar essa fase pelo nome de Remocao de erros, pois considera esse o nome que melhor descreve a atividade.Segundo Glass [1], a fase de remocao de erros de software e a que gasta mais tempo em todo o processo, podendo gastar ate o dobro do tempo gasto em cada uma das outras fases do processo de software (Analise de requisitos, projeto e implementacao). Isso geralmente causa grandes surpresas aos desenvolvedores, pois de certa maneira, e possivel mensurar o tempo demandado em um projeto para recolher requisitos, projeta-los e codifica-los, porem o tempo gasto na remocao de erros de software e muito relativo, pois este vai depender da qualidade do trabalho realizado nas outras fases do processo. Portanto, quanto pior forem executadas as fases anteriores, maior sera o tempo demandado na remocao de erros.Uma maneira eficiente para diminuir o tempo demandado para remocao de erros de software e enfatizar mais a essencia do problema a ser resolvido, ou seja, quanto mais atencao for dada para a analise dos requisitos e o projeto, menor sera o tempo gasto com remocao de erros, pois erros de codificacao sao muito mais simples e menos custosos de serem resolvidos do que erros de requisitos.Considerando que o desenvolvimento de software seja iterativo, a remocao de erros e consequentemente feita tambem de forma iterativa durante todo o processo.O