40
Testes de Software Conceitos, Benefícios e Aplicabilidade

Teste Unitários e TDD

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Teste Unitários e TDD

Testes de Software

Conceitos, Benefícios e Aplicabilidade

Page 2: Teste Unitários e TDD

Diogo Damiani

Desenvolvedor de Software

Estudante compulsivo de Arquitetura de Software e Boas Práticas de Desenvolvimento.

Page 3: Teste Unitários e TDD

Tipos de Testes

Page 4: Teste Unitários e TDD

Unitários

Integrados

Regressão

Funcionais

Stress

...

Page 5: Teste Unitários e TDD

Unitários

Integrados

Regressão

Funcionais

Stress

...

Page 6: Teste Unitários e TDD

Teste Unitário

“É um código executável que testa uma unidade funcional

do software”Geralmente uma classe, um método.

Page 7: Teste Unitários e TDD

Por que testes?

Page 8: Teste Unitários e TDD

“Testes são documentação executável”

Page 9: Teste Unitários e TDD

“Testes garantem a mudança sem medo”

Page 10: Teste Unitários e TDD

Desculpas para não escrever testes...

Page 11: Teste Unitários e TDD

Não tenho tempo para isso!Pode piorar!

Page 12: Teste Unitários e TDD

Vou demorar muito mais!Depende!

Page 13: Teste Unitários e TDD

Código legado é impossível de testar!Mito!

Page 14: Teste Unitários e TDD

Isso é responsabilidade do testador! Nem sempre!

Page 15: Teste Unitários e TDD

Compila! Logo, funciona!O compilador é só mais um teste, quando existe!

Page 16: Teste Unitários e TDD

Consequências da Falta de Testes

Page 17: Teste Unitários e TDD

“Desenvolvedor que não faz testes é como um cirurgião que não lava as mãos”

Uncle Bob (Robert C. Martin)

Page 18: Teste Unitários e TDD

“Software sem testes dá medo!”

Giovanni Bassi

Page 19: Teste Unitários e TDD
Page 20: Teste Unitários e TDD
Page 21: Teste Unitários e TDD
Page 22: Teste Unitários e TDD
Page 23: Teste Unitários e TDD

Para testar, o software tem que ser testável!

SRPSeparação de ReponsabilidadesCoesãoInversão de ControleInjeção de Dependência...

Page 24: Teste Unitários e TDD

TDD

Test Driven Development

Page 25: Teste Unitários e TDD

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!

Page 26: Teste Unitários e TDD
Page 27: Teste Unitários e TDD
Page 28: Teste Unitários e TDD
Page 29: Teste Unitários e TDD

Benefícios dos Testes

Page 30: Teste Unitários e TDD

TDD: garante a existência de testes unitários

Oba! Ganhei um conjunto de testes!

Page 31: Teste Unitários e TDD

Diminui a quantidade de errosMais qualidade de código!

Page 32: Teste Unitários e TDD

Testes servem como especificaçãoAgora eu sei como isso funciona!

Page 33: Teste Unitários e TDD

Melhora a arquitetura do softwareMais desacoplamento e coesão!

Page 34: Teste Unitários e TDD

Princípios

Page 35: Teste Unitários e TDD

Testes devem ser isoladosUm teste não deve depender do sucesso do outro!

Page 36: Teste Unitários e TDD

Testes devem ser limposLegibilidade = clareza + simplicidade + consistência

Page 37: Teste Unitários e TDD

Um conceito e uma confirmação por testeUma análise, uma conclusão

Page 38: Teste Unitários e TDD

Ferramentas

Page 39: Teste Unitários e TDD
Page 40: Teste Unitários e TDD