Download - Teste Unitários e TDD
Testes de Software
Conceitos, Benefícios e Aplicabilidade
Diogo Damiani
Desenvolvedor de Software
Estudante compulsivo de Arquitetura de Software e Boas Práticas de Desenvolvimento.
Tipos de Testes
Unitários
Integrados
Regressão
Funcionais
Stress
...
Unitários
Integrados
Regressão
Funcionais
Stress
...
Teste Unitário
“É um código executável que testa uma unidade funcional
do software”Geralmente uma classe, um método.
Por que testes?
“Testes são documentação executável”
“Testes garantem a mudança sem medo”
Desculpas para não escrever testes...
Não tenho tempo para isso!Pode piorar!
Vou demorar muito mais!Depende!
Código legado é impossível de testar!Mito!
Isso é responsabilidade do testador! Nem sempre!
Compila! Logo, funciona!O compilador é só mais um teste, quando existe!
Consequências da Falta de Testes
“Desenvolvedor que não faz testes é como um cirurgião que não lava as mãos”
Uncle Bob (Robert C. Martin)
“Software sem testes dá medo!”
Giovanni Bassi
Para testar, o software tem que ser testável!
SRPSeparação de ReponsabilidadesCoesãoInversão de ControleInjeção de Dependência...
TDD
Test Driven Development
TDD
“É uma técnica para desenvolvimento de software cujo processo é formado por
pequenas iterações e os testes são escritos primeiro”
Não é um método para testar software, mas para (re)construir software!
Benefícios dos Testes
TDD: garante a existência de testes unitários
Oba! Ganhei um conjunto de testes!
Diminui a quantidade de errosMais qualidade de código!
Testes servem como especificaçãoAgora eu sei como isso funciona!
Melhora a arquitetura do softwareMais desacoplamento e coesão!
Princípios
Testes devem ser isoladosUm teste não deve depender do sucesso do outro!
Testes devem ser limposLegibilidade = clareza + simplicidade + consistência
Um conceito e uma confirmação por testeUma análise, uma conclusão
Ferramentas