Aula 12 - Testes Unitários e de Integração 🔗
🏗️ A Pirâmide de Testes
A base da qualidade técnica de um sistema reside na proporção correta de tipos de testes automatizados. - Unitários: Testam componentes isolados (funções, classes). Devem ser maioria por serem rápidos e baratos. - Integração: Testam a comunicação entre dois ou mais componentes (ex: app e banco de dados).
graph TD
A[UI / E2E] --- B[Serviços / Integração]
B --- C[Unitários]
style C fill:#f9f,stroke:#333,stroke-width:4px 📐 Estrutura AAA (Arrange, Act, Assert)
Um bom teste automatizado deve ser organizado em três etapas claras:
- Arrange (Organizar): Configura o cenário, cria os objetos e prepara os dados.
- Act (Agir): Executa a ação ou função que se deseja testar.
- Assert (Verificar): Valida se o resultado obtido é igual ao esperado.
Exemplo (Python):
def test_deve_aplicar_desconto():
# Arrange
original_price = 100
expected_price = 90
# Act
final_price = apply_discount(original_price, 10)
# Assert
assert final_price == expected_price
🎭 Mocks e Dublês de Teste
Quando um componente depende de algo externo (como uma API de pagamentos ou um Banco de Dados), usamos Mocks. O Mock simula o comportamento da dependência, permitindo que o teste unitário continue sendo rápido e independente.
💻 Monitorando Cobertura Unitária
📝 Exercício de Fixação
- Por que não devemos testar o Banco de Dados real em um Teste Unitário?
- Identifique as fases (Arrange, Act, Assert) em um teste de login que você realizaria manualmente.
🚀 Mini-Projeto
Objetivo: Desenhar um teste de integração. - Cenário: Uma função que salva um pedido no banco e envia um email de confirmação. - Como você testaria isso sem enviar um email real para o cliente? - Desenhe o fluxo indicando onde entraria um Mock.
🔗 Materiais da Aula
-
Slides --- Material visual com diagramas e conceitos-chave. Slide 12
-
Quiz --- Teste seu conhecimento com 10 questões interativas. Quiz 12
-
Exercícios --- 5 exercícios progressivos (básico → desafio). Exercício 12
-
Projeto --- Aplicação prática dos conceitos da aula. Projeto 12