Aula 10 – Testes de Software
🎯 Objetivos de Aprendizagem
- Entender a importância dos testes automatizados.
- Conhecer a Pirâmide de Testes.
- Diferenciar Testes Unitários de Integração e E2E.
- Introduzir o conceito de TDD (Test Driven Development).
📚 Conteúdo
1. Por que testar automaticamente?
Testar manualmente (clicar no botão todas as vezes que muda o código) é lento e propenso a erros. Testes automatizados são robôs que verificam seu código em milissegundos.
Confiança para Mudar
Ter uma boa base de testes permite que você altere o código sem medo de quebrar algo que já funcionava (regressão).
2. A Pirâmide de Testes
Sugere o equilíbrio ideal entre velocidade e cobertura dos testes:
graph TD
A["E2E (Interface) - Poucos"] --> B["Integração - Alguns"]
B --> C["Unitários - Muitos"]
style C fill:#f9f,stroke:#333,stroke-width:4px
O Segredo da Pirâmide
A base (Unitários) deve ser grande porque são testes rápidos e baratos. O topo (E2E) deve ser pequeno porque são testes lentos e difíceis de manter.
3. Tipos de Teste
A) Teste Unitário
Testa a menor parte do código isoladamente (uma função).
- Ex: "A função calcularTotal(10, 5) retorna 15?"
B) Teste de Integração
Testa se duas ou mais peças funcionam bem juntas. - Ex: "A lógica do app consegue ler os dados do Banco de Dados?"
C) Teste End-to-End (E2E)
Testa o fluxo completo do usuário no navegador ou app.
4. TDD: Teste Primeiro, Código Depois
O TDD (Desenvolvimento Orientado a Testes) segue um ciclo repetitivo:
- RED: Escreva um teste que falha (o código ainda não existe).
- GREEN: Escreva o código mínimo para o teste passar.
- REFACTOR: Melhore o código garantindo que o teste continue passando.
📝 Exercícios Progressivos
- [Básico] O que são testes automatizados?
- [Básico] Desenhe a Pirâmide de Testes e nomeie suas faces.
- [Intermediário] Qual a principal diferença entre um teste Unitário e um de Integração?
- [Intermediário] Explique as três fases do ciclo TDD (Red, Green, Refactor).
- [Desafio] Por que não devemos ter apenas testes de Interface (E2E) em um projeto grande?
🚀 Mini-Projeto 10: O Roteiro de Teste
Para uma funcionalidade de "Saque no Caixa Eletrônico", liste 3 testes unitários que você criaria (pense em valores válidos, valores negativos e saldo insuficiente).
📅 Atividades
- [ ] Ver Slides da Aula
- [ ] Fazer Quiz
- [ ] Praticar Exercícios
- [ ] Realizar Projeto