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 com PHP

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 PHP 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 PHP, as discussões independem de tecnologia. Ou seja, se você é programador Java, 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 os autores!

Sobre os Autores

Andre Cardoso

Andre Cardoso

Andre Cardoso é desenvolvedor PHP, bacharelando em Análise e Desenvolvimento de Sistemas e Técnico em Informática com foco em desenvolvimento de sistemas Web-based. Trabalha exclusivamente com PHP há mais de 5 anos e durante este período esteve envolvido em projetos de todos os portes para grandes empresas como HSBC, Renault e Liquigás. Também desenvolveu sistemas para inúmeras startups nos estados do Paraná, Santa Catarina e São Paulo. Antes do PHP, aventurou-se com Java, um pouco de .Net e Delphi, mas foi no PHP que decidiu focar e especializar-se. Atualmente é Lead Developer na empresa Andrebian Soluções Web na cidade de Curitiba. Ministrou palestras e workshops sobre TDD, PHP e tecnologias que o complementam nos eventos SFD (Software Freedom Day), FTSL (Fórum de Tecnologia em Software Livre) e FLISOL (Festival Latino Americano de Instalação de Software Livre) e em diversas universidades de Curitiba. Tem uma enorme satisfação como profissional em compartilhar conhecimento e faz isso participando de diversos grupos de discussões e alguns projetos open source.

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 os autores:
andrecardosodev@gmail.com
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 Mauricio Aniche no Caelum Online!


Quer ganhar agora um cupom de 15% desconto? Clique aqui