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.