Visão Geral
O curso TDD – Test-Driven Development (Desenvolvimento Orientado a Testes) apresenta os conceitos, princípios, práticas e técnicas necessárias para aplicar o desenvolvimento orientado a testes no ciclo de desenvolvimento de software.
O treinamento aborda a utilização de testes automatizados como parte fundamental do processo de desenvolvimento, explorando o ciclo Red-Green-Refactor, criação de testes unitários, definição de comportamentos esperados, refatoração segura, isolamento de dependências, mocks e stubs, cobertura de testes e integração do TDD às práticas modernas de engenharia de software.
A abordagem é predominantemente prática, permitindo aos participantes desenvolver funcionalidades a partir dos testes e compreender como o TDD pode contribuir para a qualidade, manutenibilidade, confiabilidade e evolução dos sistemas.
Conteúdo Programatico
Módulo 1 – Fundamentos de Test-Driven Development
- Conceitos de TDD
- Evolução das práticas de desenvolvimento orientado a testes
- TDD x testes tradicionais
- Benefícios e limitações
- Princípios fundamentais
- TDD e qualidade de software
- TDD e engenharia de software
Módulo 2 – O Ciclo Red-Green-Refactor
- Conceito do ciclo TDD
- Escrevendo o primeiro teste
- Red: teste inicialmente falhando
- Green: implementação mínima
- Refactor: melhoria do código
- Pequenos ciclos de desenvolvimento
- Feedback rápido
- Evolução incremental da implementação
Módulo 3 – Testes Unitários
- Conceitos de testes unitários
- Estrutura de um teste
- Arrange, Act, Assert
- Testes positivos e negativos
- Testes de exceções
- Testes parametrizados
- Organização dos testes
- Boas práticas para testes unitários
Módulo 4 – TDD e Design de Software
- Testabilidade como característica de design
- Baixo acoplamento
- Alta coesão
- Separação de responsabilidades
- Dependency Injection
- Interfaces e abstrações
- TDD como ferramenta de design
- Evolução incremental da arquitetura
Módulo 5 – Test Doubles
- Conceito de Test Doubles
- Mocks
- Stubs
- Fakes
- Spies
- Isolamento de dependências
- Quando utilizar cada técnica
- Problemas decorrentes do excesso de mocks
Módulo 6 – Refatoração Orientada por Testes
- Conceito de refatoração
- Identificação de code smells
- Refatoração segura
- Preservação do comportamento
- Simplificação de código
- Melhoria de legibilidade
- Evolução contínua do design
Módulo 7 – TDD na Prática
- Desenvolvimento incremental de uma funcionalidade
- Definição dos testes
- Implementação mínima
- Refatoração
- Tratamento de cenários alternativos
- Evolução da suíte de testes
- Exercícios práticos
Módulo 8 – TDD em Projetos Reais
- Integração do TDD ao ciclo de desenvolvimento
- TDD e integração contínua
- TDD e pipelines de CI/CD
- Cobertura de testes
- Manutenção da suíte de testes
- Principais dificuldades de adoção
- Estratégias para implantação do TDD nas equipes