Prévia do material em texto
DETALHAMENTO COMPLETO DO CONTEÚDO – Testes Automatizados (Prof. Marcelo Fantinato – Univesp) 🟦 1. Contexto da Aula A aula faz parte do módulo sobre Entrega Contínua, composta por três partes correlacionadas: · Testes automatizados (aula atual) · Entrega contínua · Práticas associadas a pipelines e qualidade O professor destaca que testes automatizados são fundamentais para entregar software continuamente de forma rápida, segura e confiável. 🟦 2. Por que automatizar testes? ✔️ 2.1. Aumento de produtividade · Testes automáticos executam em segundos/minutos. · Elimina repetição manual. · Permite executar testes com maior frequência. · Isso acelera o desenvolvimento e libera o time para tarefas mais complexas. ✔️ 2.2. Aumento da qualidade · Como a execução é rápida, é possível: · Rodar mais testes; · Validar mais cenários; · Encontrar mais falhas; · Corrigir problemas cedo no ciclo. · Resultado: qualidade significativamente maior. 🟦 3. Mito: “Automação de testes custa muito caro” O professor explica: ✔️ Sim, existe um custo inicial elevado · Testadores especializados: Engenheiros de automação. · Planejamento dos testes. · Criação dos scripts automatizados. · Manutenção dos testes. ✔️ Mas esse custo se paga rapidamente · Quanto mais vezes o teste automatizado é executado, menor o custo por execução. · Executar 100, 200 ou 300 vezes compensará o esforço inicial. ❌ Quando NÃO compensa automatizar · Quando o teste não será executado repetidamente. · Ou quando o software/teste muda tanto que exige reescrita constante do script. 🟦 4. Quais testes automatizar? ✔️ Regra geral: Automatizar “quase tudo” · Cada caso de teste idealmente deve ser automatizado. · Porque isso maximiza produtividade e qualidade. ❌ Exceções – testes que não devem ser automatizados 4.1. Testes exploratórios · Executados apenas uma vez. · O testador interage livremente com o sistema buscando comportamentos inesperados. · Automatizar não faz sentido, pois não haverá repetição. 4.2. Testes que dependem de criatividade humana · Usabilidade · UX · Avaliação subjetiva 🟦 5. Atividades que podem ser automatizadas ✔️ 5.1. Geração automática ou semiautomática de casos de teste Ferramentas podem: · Sugerir dados de entrada; · Gerar combinações estruturadas; · Basear-se em critérios estruturais e funcionais previamente estudados. Isso reduz o esforço manual do analista. ✔️ 5.2. Execução automatizada dos casos de teste É onde está o maior benefício: · Execução rápida · Menor custo operacional · Possibilidade de integração com pipelines (CI/CD) · Resultados objetivos e rastreáveis ✨ A diferença está no nível do teste: 🟦 6. Automação por níveis de teste 🟩 6.1. Teste de Unidade · Feito pelo próprio desenvolvedor. · Ferramentas: JUnit (Java). · Para cada classe do sistema, cria-se uma classe de teste correspondente. · Uso de drivers, stubs, mocks para simular dependências. Objetivos: · Verificar comportamento isolado. · Garantir pequenas partes do sistema antes de integrar. 🟩 6.2. Teste de Integração · Faz uso de ferramentas de unidade, mocks e automação parcial. · Verifica o comportamento entre módulos. 🟦 6.3. Teste de Aceitação / Sistema · Executado do ponto de vista do usuário final. · O analista de testes projeta cenários. · Testadores executam manualmente ou engenheiros de automação criam scripts. Ferramentas: Selenium · Funciona com captura e repetição (record/playback). · Primeira execução é manual → a ferramenta grava um script. · Depois, o script pode ser executado quantas vezes quiser. · Na prática, é necessário editar o script: · adicionar verificações (asserts); · adicionar pontos de prova; · ajustar interações dinâmicas. 🟦 7. Ambientes e ecossistemas de automação Além das ferramentas específicas, há ambientes completos, que funcionam como “suites de automação”, oferecendo: · Banco de dados de casos de teste · Gestão de resultados e históricos · Relatórios de cobertura · Relatórios de falhas · Modelagem, simulação e análise · Painéis para acompanhar execuções Esses ambientes permitem: · Saber quantos casos passaram/falharam · Ver a cobertura do código · Integrar com pipelines de entrega contínua 🟦 8. Referências citadas na aula 1. Pressman & Maxim – Engenharia de Software (10ª edição, 2021) 2. Humble & Farley – Continuous Delivery: Como entregar software de forma rápida e confiável Apesar de não ser um livro dedicado a testes, o segundo aborda automação como componente essencial da entrega contínua. 🟩 Resumo Final (bem direto) Tópico Essência Por que automatizar? Produtividade + Qualidade O custo é alto? Sim, mas se paga rapidamente Automatizar o quê? Quase tudo, exceto testes exploratórios Geração automática? Pode ser automatizada/semi-automatizada Execução automática? Maior ganho (rápida, repetitiva, confiável) Teste de unidade Automatizado pelo desenvolvedor (JUnit) Teste de aceitação Ferramentas como Selenium (record/playback) Ambientes de automação Relatórios, cobertura, banco de dados de testes