Verificação e Validação: Tipos de Teste de Software
Classificado em Computação
Escrito em em português com um tamanho de 5,6 KB
Verificação Estática vs. Dinâmica
Verificação Estática
Consiste em inspeções de software, relacionadas à análise de representações estáticas do sistema para descobrir problemas. Este processo pode ser suplementado por um documento baseado em ferramenta e análise de código. A aplicação não precisa estar em execução.
Verificação Dinâmica (Teste de Software)
Relacionada ao exercício e à observação do comportamento do produto. O sistema é executado com dados de teste e seu comportamento operacional é observado. A aplicação precisa estar em execução.
Princípios do Teste de Programa
- Pode revelar a presença de defeitos, mas não a sua ausência.
- É a principal técnica de validação para requisitos não funcionais, visto que o software é executado para se observar como ele se comporta.
- Deve ser usado em conjunto com a verificação estática para fornecer uma cobertura completa de Verificação e Validação (V&V).
Tipos de Teste: Validação vs. Defeitos
Teste de Validação
Pretende mostrar que o software atende aos seus requisitos. Um teste bem-sucedido é aquele que mostra que um requisito foi adequadamente implementado.
Teste de Defeitos
Testes projetados para descobrir defeitos no sistema. Um teste de defeitos bem-sucedido é aquele que revela a presença de falhas.
Teste vs. Depuração (Debugging)
Teste e debugging (depuração) de defeitos são processos distintos. A verificação e a validação estão relacionadas ao estabelecimento da existência de defeitos, enquanto a depuração consiste em:
- Localizar o erro;
- Projetar o reparo do erro;
- Reparar o erro;
- Retestar o programa.
O Processo de Inspeção de Software
Etapas do Processo
- Planejamento
- Visão Geral
- Preparação Individual
- Reunião de Inspeção
- Retrabalho
- Acompanhamento
Procedimento de Inspeção
- Uma visão geral do sistema é apresentada para a equipe de inspeção.
- O código e os documentos associados são previamente distribuídos para a equipe.
- A inspeção ocorre e os erros descobertos são anotados.
- Modificações são feitas para reparar os erros descobertos.
- Uma nova inspeção pode ou não ser necessária.
Checklists de Inspeção
Um checklist de erros comuns deve ser usado para direcionar a inspeção. Esses checklists são dependentes da linguagem de programação e refletem os erros característicos com maior probabilidade de surgimento na linguagem. Em geral, a verificação de tipo fraco constitui a maior parte do checklist.
Exemplos: Iniciação de variáveis, nomeação de constantes, terminação de loops, limites de vetores, etc.
Teste de Sistema
É um teste baseado em uma especificação do sistema que envolve a integração de dois ou mais componentes para criar um sistema ou subsistema. Pode envolver o teste de um incremento a ser entregue ao cliente.
Fases do Teste de Sistema:
- Teste de Integração: A equipe de teste tem acesso ao código-fonte do sistema, e o sistema é testado à medida que os componentes são integrados.
- Teste de Release (Lançamento): A equipe de teste avalia o sistema completo a ser entregue como uma "caixa-preta". A meta primária é aumentar a confiança do fornecedor de que o sistema atende aos seus requisitos.
Abordagens de Teste de Defeitos
A meta do teste de defeitos é descobrir falhas em programas. Um teste de defeitos bem-sucedido é aquele que faz um programa se comportar de maneira anômala.
Teste de Desempenho
Parte do teste de release pode envolver o teste de propriedades emergentes de um sistema, tais como desempenho e confiabilidade. Testes de desempenho geralmente envolvem o planejamento de uma série de testes onde a carga é constantemente aumentada até que o desempenho do sistema se torne inaceitável.
Teste de Estresse
Exercita o sistema além de sua carga máxima de projeto. O estresse de um sistema frequentemente causa o surgimento de defeitos e testa o comportamento de falha, pois os sistemas não devem falhar catastroficamente. O teste de estresse verifica uma perda inaceitável de serviço ou de dados e é particularmente relevante para sistemas distribuídos.
Tipos de Teste: Caixa Branca vs. Caixa Preta
Teste Caixa Branca (Estrutural)
É aquele no qual se possui acesso ao código-fonte. Usado em unidades de programas e sub-rotinas (Teste de Unidade, Teste de Caminhos Básicos), o seu objetivo é exercitar todas as declarações do programa, onde cada caminho é executado pelo menos uma vez.
Teste Caixa Preta (Funcional)
É aquele no qual não se tem acesso ao código-fonte, então se seguem os casos de teste (entradas especificadas e saídas correspondentes). Prioriza testar as funcionalidades da aplicação (Teste de Sistema).
Outras Estratégias de Teste
Teste Baseado em Requisitos
É uma abordagem de validação onde cada requisito é considerado e um conjunto de testes é formado para ele, visando mostrar que o sistema tem seus requisitos adequadamente implementados.
Teste de Regressão
Tem como objetivo oferecer confiança de que as partes alteradas de um software modificado se comportam como esperado e que as partes não alteradas não foram afetadas pelas modificações.