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