Testes em desenvolvimento de Software - você precisa disto ?
"Há um mito segundo o qual , se fôssemos realmente bons para programar , não haveria 'bugs' a ser procurados. Se pudéssemos realmente nos concentrar, se todos usassem programação estruturada, projeto 'top-down' , tabelas de decisão, se tivéssemos as balas de prata certas, então não haveria 'bugs'." Beizer, 90 |
A tarefa de efetuar testes em software foi considerada secundária por muito tempo. Geralmente era vista com o um castigo para o programador , ou como uma tarefa onde não se deveria gastar muito com tempo e investimentos. O tema esteve relegado a segundo plano, e, até alguns anos atrás não se encontrava muita literatura sobre o assunto.
Parece que as coisas mudaram; com a globalização e o acirramento da competição entre as empresas de software esta havendo uma grande preocupação em aprimorar e aperfeiçoar os processos de testes em desenvolvimento de software com vistas a reduzir custos com manutenção e em produzir um produto de melhor qualidade.
Veja esta matéria acessada em : http://informatica.terra.com.br/interna/0,,OI501471-EI553,00.html
..... Por muito tempo, gigantes como a Microsoft realizavam seus testes por conta própria. Mas os analistas dizem que especialistas independentes vêm sendo cada vez mais procurados para garantir a neutralidade do processo e manter os custos sob controle. Um sinal importante quanto à nova tendência surgiu no ano passado, quando a Aztec Software and Technology Services, da Índia, adquiriu a Disha Technologies, uma empresa de testes de capital fechado, por US$ 12 milhões. ..... |
Mas por que precisamos realizar testes ?
Você conhece as leis de Muphy ? Não ? Então vejamos:
- Leis de Murphy
"É de conhecimento geral entre os analistas de
software que nunca se elimina o último bug de um programa. Os bugs são aceitos
como uma triste realidade. Esperamos eliminá-los todos, um por um, mas nunca
conseguiremos nos livrar deles."
DeMarco, Tom , Editora Campus, 91
mas geralmente temos as seguintes situações:
- "Depois eu escrevo o plano de testes..."
- "Vamos deixar os testes para a próxima fase..."
- "Na minha máquina funcionou..."
- "Temos que entregar o produto na semana que vem..."
Mas o que são testes de software ?
"O teste consiste em executar o programa com a intenção de encontrar erros (bugs)". Myers, 1979
Dentre os principais objetivos do processo de teste temos: (Beizer, 90)
Naturalmente o assunto não é tão simples assim pois :
Antes de continuar deve ficar bem claro que teste e depuração são conceitos diferentes.
Objetivos do teste : mostrar que o software tem erros.
Objetivos da depuração : encontrar a causa do erro detectado no teste, e projetar e implementar as modificações no programa para correção do erro.
Para poder realizar testes com eficácia é necessário definir um processo de teste de software. Podemos seguir as seguintes etapas:
Os principais tipos de testes com processos definidos são :
Teste Estrutural (Caixa Branca) - são
testados os caminhos lógicos através do software, fornecendo casos de teste que
põem a prova conjuntos específicos de condições e/ou garante que todos os
caminhos independentes dentro de um módulo tenham sido exercitados pelo menos
uma vez.
Executa todas as decisões lógicas para valores falsos ou
verdadeiros
Executa todos os laços em suas fronteiras
Exercita as estruturas de dados internas
Teste funcional (caixa preta): são
usados para demonstrar que as funções dos softwares são operacionais, que a
entrada é adequadamente aceita e a saída é corretamente produzida; que a
integridade das informações externas é mantida.
Atividade complementar aos testes de caixa branca, com
a finalidade de descobrir tipos/classes de erros.
Procura descobrir erro em:
funções incorretas ou ausentes;
erros de interface;
erros nas estruturas de dados ou n
acesso a bancos de dados externos;
erros de desempenho;
erro de inicialização e término
Baseada em erros: consiste em incluir propositalmente algum erro no
programa e observar o comportamento do programa com erro, comparando-o com
o comportamento do programa original.
Teste de Unidade
Teste de Sistema :
Teste de Regressão
Teste de Aceitação
Trazendo o assunto para um nível mais
prático podemos usar as seguintes técnicas básicas para efetuar testes
em software:
- Teste o código em seus limites;
Para cada pequeno trecho de código (um laço, ou if por
exemplo) verifique o seu bom funcionamento;
Tente ume entrada vazia, um único item, um vetor cheio, etc.
- Teste de pré e pós condições;
Verificar certas propriedades antes e depois de trechos de
código;
- Programe defensivamente;
- Sempre verificar se ocorreram erros ao abrir, ler, escrever e
principalmente fechar arquivos;
- Use os códigos de erro;
- Sempre tratar as possíveis exceções;
- Teste incrementalmente
Durante a construção do sistema;
Após testar dois pacotes independentemente teste se eles
funcionam juntos;
- Teste primeiro partes simples
Tenha certeza que partes básicas funcionam antes de
prosseguir;
Testes simples encontram erros simples;
- Conheça as saídas esperadas
Conheça a resposta certa;
Para programas mais complexos valide a saída com exemplos
conhecidos;
Compiladores - arquivos de teste;
Numéricos - exemplos conhecidos, características;
Gráficos - exemplos, não confie apenas nos seus olhos;
- Testar com grandes quantidades de dados
Gerados automaticamente;
Erros comuns:
Overflow nos buffers de entrada, vetores e contadores;
- Não continue a implementação de novas
características se já foram encontrados erros;
- Teste em várias máquinas, compiladores e SOs(Se possível)
Conclusão:
"Teste e depois codifique" (Hetzel)
e "Teste
cedo e frequentemente" (Beizer)
E um desenvolvimento de software sem bugs (ou com pouquíssimos bugs) para
você...
Para você ter um idéia de como elaborar um documento de descrição de testes , estou disponibilizando um documento (modelo word) para ajudá-lo nesta tarefa.
Pegue aqui : docTestes.zip
Veja também o meu artigo: Um esboço sobre o processo de Testes de Software
Ate o próximo artigo....
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
www.testing.com - site de Brian Marick , com algumas ferramentas grátis para testes
www.testingstuff.com - artigos , ferramentas links.
www.testingfaqs.org - ferramentas e links.