2. • No processo de desenvolvimento de software, todos
os defeitos são humanos e, apesar do uso dos
melhores métodos de desenvolvimento, ferramentas
ou profissionais, permanecem presentes nos
produtos, o que torna a atividade de teste
fundamental durante o desenvolvimento de um
software.
3. • O tamanho do projeto a ser desenvolvido e a
quantidade de pessoas envolvidas no processo são
dois possíveis fatores que aumentam a complexidade
dessa tarefa, e consequentemente aumentam a
probabilidade de defeitos. Assim, a ocorrência de
falhas é inevitável. Mas o que significa dizer que um
programa falhou? Basicamente significa que o
funcionamento do programa não está de acordo com
o esperado pelo usuário.
4. Esse tipo de falha pode ser originado por diversos
motivos:
• A especificação pode estar errada ou incompleta;
• A especificação pode conter requisitos impossíveis
de serem implementados devido a limitações de
hardware ou software;
• A base de dados pode estar organizada de forma
que não seja permitido distinguir os tipos de usuário;
• Pode ser que haja um defeito no algoritmo de
controle dos usuários.
5. Níveis de teste de software
O planejamento dos testes deve ocorrer em diferentes níveis e
em paralelo ao desenvolvimento do software :
• Teste de Unidade: também conhecido como testes unitários.
Tem por objetivo explorar a menor unidade do projeto,
procurando provocar falhas ocasionadas por defeitos de
lógica e de implementação em cada módulo, separadamente.
O universo alvo desse tipo de teste são os métodos dos
objetos ou mesmo pequenos trechos de código.
• Teste de Integração: visa provocar falhas associadas às
interfaces entre os módulos quando esses são integrados para
construir a estrutura do software que foi estabelecida na fase
de projeto.
6. • Teste de Sistema: avalia o software em busca de falhas
por meio da utilização do mesmo, como se fosse um
usuário final. Dessa maneira, os testes são executados
nos mesmos ambientes, com as mesmas condições e
com os mesmos dados de entrada que um usuário
utilizaria no seu dia-a-dia de manipulação do software.
Verifica se o produto satisfaz seus requisitos.
• Teste de Aceitação: são realizados geralmente por um
restrito grupo de usuários finais do sistema. Esses
simulam operações de rotina do sistema de modo a
verificar se seu comportamento está de acordo com o
solicitado.
7. • Teste de Regressão: Teste de regressão não
corresponde a um nível de teste, mas é uma
estratégia importante para redução de “efeitos
colaterais”. Consiste em se aplicar, a cada nova
versão do software ou a cada ciclo, todos os testes
que já foram aplicados nas versões ou ciclos de teste
anteriores do sistema. Pode ser aplicado em
qualquer nível de teste
8. • Técnica Estrutural (ou teste caixa-branca)
Técnica de teste que avalia o comportamento interno
do componente de software. Essa técnica trabalha
diretamente sobre o código fonte do componente de
software para avaliar aspectos tais como: teste de
condição, teste de fluxo de dados, teste de ciclos e
teste de caminhos lógicos (PRESSMAN, 2005)
9. • Teste Funcional (ou teste caixa-preta)
Técnica de teste em que o componente de software a ser testado é
abordado como se fosse uma caixa-preta, ou seja, não se considera o
comportamento interno do mesmo. Dados de entrada são fornecidos,
o teste é executado e o resultado obtido é comparado a um resultado
esperado previamente conhecido. Haverá sucesso no teste se o
resultado obtido for igual ao resultado esperado. O componente de
software a ser testado pode ser um método, uma função interna, um
programa, um componente, um conjunto de programas e/ou
componentes ou mesmo uma funcionalidade. A técnica de teste
funcional é aplicável a todos os níveis de teste (PRESSMAN, 2005).
10. • Análise do valor limite
Por razões não completamente identificadas, um
grande número de erros tende a ocorrer nos limites do
domínio de entrada invés de no “centro”. Esse critério
de teste explora os limites dos valores de cada classe
de equivalência para preparar os casos de teste.
Se uma condição de entrada especifica uma faixa de
valores limitada em a e b, casos de teste devem ser
projetados com valores a e b e imediatamente acima e
abaixo de a e b. Exemplo: Intervalo = {1..10}; Casos de
Teste {1, 10, 0,11}.
11. • Caixa-cinza
A técnica de teste de caixa-cinza é um mesclado do uso
das técnicas de caixa-preta e de caixa-branca.
12. • Análise do valor limite
Por razões não completamente identificadas, um
grande número de erros tende a ocorrer nos limites do
domínio de entrada invés de no “centro”. Esse critério
de teste explora os limites dos valores de cada classe
de equivalência para preparar os casos de teste.
Se uma condição de entrada especifica uma faixa de
valores limitada em a e b, casos de teste devem ser
projetados com valores a e b e imediatamente acima e
abaixo de a e b. Exemplo: Intervalo = {1..10}; Casos de
Teste {1, 10, 0,11}.
13. • Grafo de causa-efeito
Esse critério de teste verifica o efeito combinado de
dados de entrada. As causas (condições de entrada) e
os efeitos (ações) são identificados e combinados em
um grafo a partir do qual é montada uma tabela de
decisão, e a partir desta, são derivados os casos de
teste e as saídas. (usado em alguns casos)
15. • Testes Manuais
– Revelam muitas falhas;
– Tarefa complexa, desgastante e consome muito tempo;
– Pode não ser efetiva para certas partes do software.
• Testes automatizados
– Podem ser executados rapidamente;
– Custo mais efetivo;
– Requer um maior gerenciamento a fim de manter os casos
de teste;
– Necessário conhecimento técnico.
16. - Automação dos testes
- Planejamento e execução
de testes...