Fundamental Concepts

Fundamental Concepts

Introdução aos Testes de Software

Conceitos Fundamentais

  • Antes de discutir testes de software, é crucial entender conceitos fundamentais e a terminologia envolvida.
  • O engenheiro de requisitos entrevista stakeholders para criar especificações que os desenvolvedores usam para escrever o código.

Papel do Testador

  • O testador lê documentos de requisitos e executa testes manuais ou automatizados para verificar se o sistema funciona conforme esperado.
  • Os testes podem simular o uso da interface gráfica ou partes isoladas do sistema, invocando ações e observando resultados.

Processo de Verificação

  • O teste verifica se as ações realizadas no sistema geram os resultados esperados, alinhados com as especificações dos stakeholders.
  • A execução do código pelos desenvolvedores é acompanhada por testes que automatizam a verificação das funcionalidades.

Identificação e Correção de Erros

Relato de Problemas pelo Usuário

  • Usuários podem identificar comportamentos inesperados no sistema e abrir chamados (bug reports) para relatar erros ou questões como performance.
  • O testador analisa esses bug reports e escreve novos testes para garantir que problemas relatados não voltem a ocorrer.

Objetivos dos Testes

  • O principal objetivo dos testes é garantir qualidade, embora seja impossível obter uma garantia total em sistemas complexos.
  • Na prática, os testes fornecem evidências sobre o funcionamento das principais funcionalidades em situações específicas.

Importância da Suíte de Testes

Evidência da Qualidade

  • A força da evidência fornecida pelos testes depende da robustez da suíte de testes; um conjunto fraco pode resultar em evidências insuficientes.

Localização e Correção de Bugs

  • Um bom conjunto de testes ajuda na localização rápida dos problemas causadores, facilitando a correção eficaz dos bugs identificados.

Confiança nas Refatorações

A Importância do Investimento em Desenvolvimento de Software

Qualidade e Refatoração do Código

  • O investimento em desenvolvimento é crucial, pois não apenas identifica bugs, mas também assegura que as funcionalidades principais estejam operando como esperado.
  • Refatorações são essenciais para tornar o código mais modular e legível, contribuindo para a qualidade interna do sistema.

Terminologia e Conceitos Fundamentais

  • É necessário refinar os conceitos relacionados à terminologia utilizada na análise de falhas no software.
  • Uma falha é observada quando o sistema apresenta um comportamento inesperado durante sua execução, como lançar exceções ou mostrar mensagens de erro.

Distinção entre Falha, Bug e Erro

  • A falha refere-se ao comportamento observado pelo usuário, enquanto o bug (ou defeito) está relacionado a uma parte específica do código que causou essa falha.
  • Um erro é um problema interno no estado do sistema que pode não ser visível ao usuário, mas afeta a operação correta do software.

Causas das Falhas no Sistema

  • O erro ocorre quando o estado interno do sistema se torna inconsistente devido a um bug no código-fonte.
  • Para que uma falha ocorra, primeiro deve haver um alcance da parte defeituosa do código durante a execução com valores que causem o erro.

Modelo IPE: Entendendo as Falhas

  • O modelo IPE descreve como as falhas ocorrem: primeiro deve-se alcançar o defeito; depois executá-lo com valores específicos que provoquem um erro.

Compreendendo Falhas em Sistemas

Conceitos de Falha e Estado do Sistema

  • A infecção de um programa é caracterizada pela propagação de um estado infectado, levando a uma observação externa onde o comportamento do sistema não é esperado, resultando em falhas.
  • O estado interno do sistema está relacionado à modelagem como uma máquina de estados, com transições entre estados baseadas nas operações que o sistema pode realizar.

Representação e Cenários de Teste

  • A máquina de estados pode ser representada através de cenários que detalham o comportamento do sistema, servindo tanto para especificar requisitos quanto para testes.
  • Um teste é visto como um caminho dentro dessa máquina de estados, começando em um estado inicial (given), passando por ações (arestas), e culminando na verificação do estado final.

Metodologia e Documentação

  • A metodologia inclui a documentação dos testes com cenários específicos; cada cenário representa um caso de teste que deve ser validado.
  • Um documento pode conter múltiplos cenários; neste caso específico, são dois cenários que formam uma suíte de testes.

Casos Específicos nos Cenários

  • Os cenários incluem diferentes entradas (ex: aluno e professor), permitindo testar parâmetros variados no sistema.
Playlists: Testing+