tdd: técnicas, benefícios e limitação

Post on 11-Jun-2015

967 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Desenvolvimento Orientado a Testes

Benefícios, Técnicas e Limitações

quem sou eu?

Analista de Sistemas

@icarocamelo http://icarocamelo.wordpress.com

roteiro

Por que testar?O que é TDD?TécnicasRefactoringHands On!Limitações

por que testar?!

por que testar?!

•Sucesso/Fracasso do projeto•Perder Clientes•Alto Acoplamento•Escalabilidade ruim•Prejuízo financeiro

o que é TDD?

“Teste de unidade é toda aplicação de teste nas assinaturas de

entradas e saídas de um sistema, consiste em validar dados válidos e

inválidos via I/O (entrada/saída)”.

bons testes?!

•Isolado•Cobrir 100% da implementação•Executado por terceiro

desculpas comuns...

“(...) Vai demorar muito mais ” (...)

“(...) A funcionalidade é muito fácil” (...)

“(...)Não sei como testar ” (...)

“(...) Melhor deixar os testes com testadores ” (...)

o que é TDD?

“Extreme Programming is

successful because it stresses customer

satisfaction”.

o que é TDD?

Kent Beck

o que é TDD?

1. Adicione um teste que falhe

2. Faça o teste passar

3. Refatore o código

o que é TDD?

refactoring?!

Martin Fowler

refactoring?!

•Design do software•Fácil compreensão•Escrever código rapidamente•Encontrar bugs

refactoring?!

“Não é preciso ler todo o código para identificar um

código ruim”.

refactoring?!

Principle KISSDRY – Don´t Repeat Yourself

You ain´t gonna need it

Interface Segregation

Principle

Dependency InversionPrinciple

técnicas!

Baby Steps

MocksFake it!

técnicas: Babies steps!

Codificar teste unitárioTestar um comportamento por vezRefatorar

técnicas: Fake it!

Utilizar constantes

Refatorar

Confiança ao refatorar

Aspecto psicológico

ALERTA: Mais testes são

necessários

técnicas: Mock!

Versão falsa do objetoBanco de dados

o que é TDD?

“Todo código é culpado até que prove

ser inocente”.

Hands On!

limitações!

limitações!

Time não acredita na ideia

Tempo curto para o aprendizado

Psicológico do desenvolvedor

Não é possível automatizar testes

Outros Testes?!

Testes de IntegraçãoTestes SistêmicosTestes de Aceitação

dúvidas?!

top related