Teste Unitários e TDD

Preview:

DESCRIPTION

Palestra para a equipe de desenvolvimento da Engeman EAM, em Julho de 2010.

Citation preview

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