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

  1. Planejamento
  2. Visão Geral
  3. Preparação Individual
  4. Reunião de Inspeção
  5. Retrabalho
  6. 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.

Entradas relacionadas: