TDD/Testes de Unidade

TDD E TESTES DE UNIDADE: TESTANDO DE FORMA SUSTENTÁVEL

No cenário atual, é imprescindível para um bom profissional trabalhar com testes automatizados. Software bem testado é sinônimo de qualidade, pois reduz o risco de introdução de bugs na fase de desenvolvimento e após sua implantação.

Software bem testado é capaz de ser evoluído de forma mais ágil, pois os testes formam uma rede de segurança ao se alterar o código de produção.

Este workshop irá lhe apresentar os testes automatizados, por meio de seu tipo mais fundamental, os testes de unidade (unit tests), que formam a base de uma suíte de testes.

Você aprenderá a escrever código testável – fazendo uso da prática conhecida como Test-Driven Development (TDD), um dos pilares do Extreme Programming (XP) – e a manter seu código de teste com qualidade, aplicando técnicas de refactoring.

Todo o conteúdo é ilustrado com exemplos de código e serão realizados 5 labs práticos * para reforçar vários conceitos.

(*) poderão ser oferecidos labs extras, de acordo com o andamento da turma.

EXPERIÊNCIA

  • Experiência prática em projetos reais com TDD e Testes de Unidade desde 2010.
  • Testes de unidade no backend com C#/NUnit/MSTest/XUnit.Net e no frontend com Javascript/Typescript/Jasmine, com pequena familiaridade com testes em Ruby e Python.
  • Fui um dos primeiros do Mato Grosso do Sul a falar sobre TDD no evento Maré de Agilidade – Edição Pantanal, realizado em Campo Grande, em 2011.

CONTEÚDO

Automação de Testes
– Por que escrever testes?
– Custos com automação de testes
– Características de bons testes
– Estrutura de um teste e conceitos básicos
– Pirâmide de testes
– O que é um “teste de unidade”?
– Tipos de ferramentas

Test-Driven Development
– O que é TDD
– Ciclo do TDD
– Pontos positivos
– Erros comuns
– TDD e sua relação com o design de classes
– Padrões do TDD

Refactoring
– O que é refactoring
– O que são code smells

Test Doubles
– O que são test doubles e seus tipos
– Testes de estado e testes de interação
– Diferença entre mocks e stubs
– Usando um framework de mock

Refatorando código de teste
– Testes legíveis e robustos
– Exemplo de teste complexo e sua versão refatorada

Melhorando o setup dos testes
– Técnicas mais comuns
– Builders com interface fluente
– Evitando repetição/informação irrelevante com os builders
– Criando uma DSL com builders

Melhorando a verificação de resultados
– Técnicas mais comuns
– Igualdade em código de produção
– Igualdade em código de teste

Outras melhorias
– Classes de equivalência
– Testes parametrizáveis
– Organização das classes de teste

Testes em software legado
– A dificuldade de testar o legado
– Dicas gerais

Encerramento
– Revisando alguns princípios
– Referências de livros
– Outros conceitos relacionados

CARGA HORÁRIA

16 horas, divididas em 2 sábados de 8 horas.

TECNOLOGIA UTILIZADA

A linguagem utilizada nos exemplos é o C#, assim como todo o ferramental é da plataforma .Net. No entanto, os conceitos apresentados podem ser assimilados perfeitamente por programadores de qualquer linguagem. (Os labs, inclusive, poderão ser implementados com a linguagem de sua preferência.)

INVESTIMENTO

R$ 500,00 / pessoa *
(*) valor a combinar em caso de realização in-company.

Para mais informações, basta <<entrar em contato>>.