Teste de software é a processo de verificar se o produto esta de acordo com as especificações determinadas e que funciona corretamente no qual foi projetado. O objetivo dos testes é de achar erros ou falhas para que a equipe de desenvolvimento possa corrigi-lo o mais rápido possível, pois quanto mais rápido descobrir um erro, mais barato ele fica. Por essas características a disciplina de teste é considerável "destrutiva" e não "construtiva".

Para que possamos dar prosseguimento na disciplina de testes temos que conhecer alguns conceitos como Defeito, Erro e falhas. 

Defeito
 
É qualquer imperfeição ou inconsistência no produto do software ou em seu processo, um defeito é também uma não conformidade. O Defeito faz parte do produto, é algo que esta implementada no código de maneira errada.

Erro 

O Erro pode ser um resultado de um defeito ou uma falha, como um retorno esperado, que por causa de uma falha teve um valor diferente do que esperado.

Falha

Esta mais ligada ao hardware, como uma rede inacessível, queda de energia. Uma falha pode ocorrer por causa de um erro, por exemplo, houve um retorno de um valor não esperado, como null, isso é um erro, e por causa desse null ocasionou uma falha no sistema.

Os defeitos são ocasionados por vários motivos como:

  •     Usuários especificam os requisitos errados;
  •     Analistas interpretam erradamente os requisitos
  •     Especificações Funcionais e Técnicas elaboradas erroneamente;
  • Codificação errada;
  •     Dados errados;
  •     Correções erradas de defeitos;
  •     Inconsistência nos dados.

Podemos classificar os defeitos em alguns itens como:

Tratamento de erros
Não antecipar-se as falhas ou não evitando travamentos ou comportamentos anormais no programa.

Erros de cálculos
Falhas decorrentes de cálculos computacionais, tais como divisão por zero, estouro de campos, algoritmos errados.


Erros de inicialização
Estados iniciais e finais de variáveis errados;

Manipulação de dados
Dados tratados ou manipulados erradamente ou não tratados, como datas invalidas ou dados null.

Hardware
Falta de tratamento de retorno dos códigos dos periféricos como verificar se a impressora esta ligada, ao fazer uma comunicação com outra maquina verificar se a rede esta ativa.

Controle do código fonte
Não controlar adequadamente o código fonte do sistema.

Documentação
Não manter a documentação atualizada

Testes
Não ter uma política de teste, um planejamento e execução adequada, não definir o escopo

Reportando Defeitos

Sempre que um defeito for identificado devemos reportá-los a área responsável, como algumas informações básicas

  •     Categoria do defeito (validação, algoritmo, acessos...)
  •     Severidade (Alta, Média ou Baixa) ou classificada por número.
  •     Prioridade (Alta, Media ou Baixa) ou classificada por número.
  • Descrição do defeito ou do comportamento resultado ou a própria mensagem de erro.
  •     Reproduzível? 
  •     Reincidente?
  •     Dados usados no teste