Procurando mais livros de programação?
Conheça a editora Casa do Código.

É hora de escrever código com qualidade!

Test-Driven Development

Teste e Design no Mundo Real

Capa do livro

Por que não testamos software? Por que é caro? Por que é demorado? Por que é chato? Testes automatizados são a solução para todos esses problemas. Aprenda a escrever um programa que testa seu programa de forma rápida, barata e produtiva, e aumente a qualidade do seu produto final.

Neste livro, você aprenderá sobre TDD, uma das práticas ágeis de desenvolvimento de software mais populares. TDD faz o desenvolvedor escrever o teste antes mesmo de implementar o código. Essa simples inversão na maneira de se trabalhar, faz com o que o desenvolvedor escreva código mais testado, com menos bugs, e inclusive com mais qualidade. Seja profissional, teste seu software!

Para quem é o livro

Esse livro é destinado a desenvolvedores que querem aprender a escrever testes de maneira eficiente, e que desejam aprender a como melhorar ainda mais o código que produzem. Neste livro, utilizamos Java para demonstrar os conceitos discutidos, mas você pode facilmente levar as discussões feitas aqui para a sua linguagem de programação favorita. Mesmo que você já pratique TDD, tenho certeza que aqui encontrará discussões interessantes sobre como a prática dá feedback sobre problemas de acoplamento e coesão, bem como técnicas para escrever testes melhores e mais fáceis de serem mantidos.

Apesar dos exemplos do livro usarem Java, as discussões independem de tecnologia. Ou seja, se você é programador C#, Ruby, Scala, ou qualquer outra linguagem, se beneficiará também das discussões.

Conteúdo

  1. Introdução
    1. Era uma vez um projeto sem testes...
    2. Por que devemos testar?
    3. Por que não testamos?
    4. Testes automatizados e TDD
    5. Conclusão
  2. Testes de Unidade
    1. O que é um teste de unidade?
    2. Preciso mesmo escrevê-los?
    3. O Primeiro Teste de Unidade
    4. Continuando a testar
    5. Conclusão
  3. Introdução ao Test-Driven Development
    1. O problema dos números romanos
    2. O primeiro teste
    3. Refletindo sobre o assunto
    4. Quais as vantagens?
    5. Um pouco da história de TDD
    6. Conclusão
  4. Simplicidade e Baby Steps
    1. O Problema do Cálculo de Salário
    2. Implementando da maneira mais simples possível
    3. Passos de Bebê (ou Baby Steps)
    4. Usando baby steps de maneira consciente
    5. Conclusão
  5. TDD e Design de Classes
    1. O Problema do Carrinho de Compras
    2. Testes que influenciam no design de classes
    3. Diferenças entre TDD e testes da maneira tradicional
    4. Testes como rascunho
    5. Conclusão
  6. Qualidade no Código do Teste
    1. Repetição de código entre testes
    2. Nomenclatura dos testes
    3. Test Data Builders
    4. Testes Repetidos
    5. Escrevendo boas asserções
    6. Testando listas
    7. Separando as Classes de Teste
    8. Conclusão
  7. TDD e a Coesão
    1. Novamente o Problema do Cálculo de Salário
    2. Ouvindo o feedback dos testes
    3. Testes em métodos privados?
    4. Resolvendo o Problema da Calculadora de Salário
    5. O que olhar no teste em relação a coesão?
    6. Conclusão
  8. TDD e o Acoplamento
    1. O Problema da Nota Fiscal
    2. Mock Objects
    3. Dependências explícitas
    4. Ouvindo o feedback dos testes
    5. Classes estáveis
    6. Resolvendo o Problema da Nota Fiscal
    7. Testando métodos estáticos
    8. TDD e a constante criação de interfaces
    9. O que olhar no teste em relação ao acoplamento?
    10. Conclusão
  9. TDD e o Encapsulamento
    1. O Problema do Processador de Boleto
    2. Ouvindo o feedback dos testes
    3. Tell, Don't Ask e Lei de Demeter
    4. Resolvendo o Problema do Processador de Boletos
    5. O que olhar no teste em relação ao encapsulamento?
    6. Conclusão
  10. Testes de Integração e TDD
    1. Testes de unidade, integração e sistema
    2. Quando não usar mocks?
    3. Testes em DAOs
    4. Devo usar TDD em testes de integração?
    5. Testes em aplicações Web
    6. Conclusão
  11. Quando não usar TDD?
    1. Quando não praticar TDD?
    2. 100% de cobertura de código?
    3. Devo testar códigos simples?
    4. Erros comuns durante a prática de TDD
    5. Como convencer seu chefe sobre TDD?
    6. TDD em Sistemas Legados
    7. Conclusão
  12. E agora?
    1. O que ler agora?
    2. Dificuldade no aprendizado
    3. Como interagir com outros praticantes?
    4. Conclusão Final
  13. Apêndice: Princípios SOLID
    1. Sintomas de Projetos de Classes em Degradação
    2. Princípios de Projeto de Classes
    3. Conclusão
Comprar o livro na Casa do Código

O livro também está disponível em PDF, MOBI e EPUB.

Continue a discussão no fórum do Google Groups junto com o autor!

Sobre o Autor

Mauricio Aniche

Mauricio Aniche

Mauricio é instrutor e desenvolvedor da Caelum, possui mais de 9 anos de experiência de desenvolvimento de softwares, tendo participado de projetos para grandes empresas nacionais e internacionais. Mauricio é também mestre em Ciência da Computação pela Universidade de São Paulo (USP) onde pesquisa sobre TDD e sua influência no design de sistemas orientados a objetos. Atualmente é aluno de doutorado pelo mesmo instituto. Palestrante em eventos nacionais e internacionais, com destaque para sua apresentação no 1o Workshop Internacional sobre Test-Driven Development, localizado em Paris, no ano de 2010, Agile Brazil 2010, 2011 e 2012, e QCON SP 2010 e 2012. Mauricio gosta de discutir sobre TDD, melhores práticas e princípios de orientação a objetos, métodos ágeis de desenvolvimento de software e linguagens de programação.

Fale com o autor: mauricio.aniche@caelum.com.br

Professor, quer usar o livro em sala de aula? Entre em contato.

Conheça também o curso online de testes automatizados escrito pelo autor no Caelum Online!