🧪

Aula 3 - Engenharia de Software: Teste de Software

Jun 14, 2024

Aula 3 - Engenharia de Software: Teste de Software

Abertura

  • Data: Segunda-feira, 3 de Junho
  • Disciplina: Engenharia de Software (20241)
  • Curso: Informática para Internet
  • Instituição: IFCE Paracuru
  • Tema: Teste de Software
  • Feedback sobre as atividades entregues e ajustes no Moodle

Tema: Teste de Software

Problema com arquivos no Moodle

  • Dificuldade em abrir arquivos de atividades no Excel
  • Soluções sugeridas: tentar com WPS, LibreOffice ou Google Docs
  • Enviar links de planilhas do Google ao invés dos arquivos para resolver possíveis incompatibilidades

Unidade 3 - Teste de Software

  • Slides de apoio e vídeos sobre testes unitários:
    • Fórum de discussão sobre estratégias de teste
    • Tarefa: Download, responder e depositar a atividade na plataforma

Importância dos Testes de Software

  • Fundamental para garantir a qualidade e funcionalidade do sistema
  • Muitas vezes negligenciado por questões de prazo e entrega
  • Testes precisam ser bem conduzidos para evitar a entrega de código com defeitos
  • Testar é uma prática que ajuda a documentar e corrigir possíveis falhas antes do produto final
  • Verificação e validação são processos distintos e complementares
    • Verificação: Assegura que o software é construído corretamente (foco técnico)
    • Validação: Assegura que o software atende às necessidades do usuário (foco nas necessidades do cliente)

Tipos e Etapas dos Testes

Teste de Desenvolvedor vs. Teste de Usuário

  • Desenvolvedor pode ter viés ao testar seu próprio código
  • Envolver usuários e outros desenvolvedores pode melhorar a detecção de falhas

Tipos de Teste

  • Teste de Desenvolvimento: Executado paralelamente ao desenvolvimento do código
  • Teste de Release: Equipe separada testa uma versão do sistema antes de liberação
  • Teste de Usuário: Usuários testam o sistema em seus ambientes reais

Abordagens de Teste

  • Teste de Caixa Branca: Focado em verificar o código fonte
  • Teste de Caixa Preta: Focado na funcionalidade sem olhar o código

Verificação e Validação

  • Inspeção de Software: Checagem do código, geralmente de forma estática
  • Testes: Execução do sistema com dados de entrada e verificação dos resultados
  • Testes Unitários: Verificação de unidades individuais do código
  • Testes de Componentes e de Sistema: Verificações mais amplas de integrações e funcionamento geral

Desenvolvimento Dirigido a Testes (TDD)

  • Processo onde o teste é escrito antes do código funcional
  • Metodologia propõe um ciclo de desenvolvimento eficiêncial: escrever teste, escrever código para passar no teste e refatorar
  • Benefícios incluem melhoria na qualidade do código, documentação e design, e feedback mais rápido

Ferramentas e Execução de Testes Automatizados

  • Importância dos testes automatizados para grandes sistemas
  • Ferramentas comuns: JUnit, TestNG, Selenium, PyTest, etc.
  • Integração contínua: Automação que permite executar testes de forma periódica

Exemplos e Ferramentas

  • Exemplos práticos de código para testes unitários em Python e JavaScript
  • Testes de Integração, Sistema, e Regresso
  • Testes de Desempenho: Verificação da capacidade do sistema em suportar altas cargas

Perguntas e Interação

  • Discussão sobre a quantidade e abrangência dos testes necessários
  • Importância e desafio da automação de testes
  • Exemplo de execução de testes automatizados via scripts

Encerramento

  • Discussão adicional sobre integração de testes na metodologia de trabalho
  • Reforço sobre a importância de testes para garantir a qualidade e funcionalidade do software
  • Notas sobre envio de atividades, extensão de prazo e esclarecimentos

Próximo Encontro: Sexta-feira no laboratório