Test-Driven Develpment - TDD
-
Upload
kleber-bernardo -
Category
Technology
-
view
276 -
download
0
description
Transcript of Test-Driven Develpment - TDD
Test-Driven Development
TDD
Sumário Manifesto Ágil
O que é?
Ciclo do TDD
Vantagens
Aplicabilidade
APIs e Sistemas
Bugfixes
Sistemas Legados
Ferramentas para Testes
Caso de Uso com TDD
Bibliografia Recomendada
Manifesto Ágil
Indivíduos e interações > Processos e ferramentas
Software em funcionamento > Documentação abrangente
Colaboração com o cliente > Negociação de contratos
Resposta a mudanças > Seguir um plano
O que é?
“Escrever os testes para o código antes de escrever o
código em si”
É comum no desenvolvimento ágil
Pode ser usada em qualquer tipo de desenvolvimento, até
em pesquisas
Desenvolvimento como um processo de Aprendizado
O que é?
Princípios do TDD – F.I.R.S.T. Principles:
Fast – Testes devem ser executados em < 1 segundo
Isolated – Falhas são claramente isoladas
Repeatable – Comportamento constante
Self-verifying – Passa ou Falha
Timely – 1 mudança de código = 1 teste
Ciclo do TDD
Vantagens
Antecipa o comportamento do código
Reduz os custos de desenvolvimento e de
manutenção
Educa o programador a pensar e criar códigos
“limpos”
Componentes livremente acoplados
Desestimula recursos desnecessários
Vantagens
Desenvolvimento como um processo de
aprendizado
Aperfeiçoamento do código: Refatoração
Foco na aceitação, integração e unidade
Blindagem do código
Combate a Síndrome Nostradamus
Aplicabilidade
Se livrando de Bugs:
Relatório de Bug
Teste que reproduz o Bug: Fail
Correção do Bug
Execução do teste: Pass
9
Aplicabilidade
Sistemas Legados
Funcionalidade Duvidosa: ???
Escreva um teste para ver se você entendeu: Fail
Adapte o teste (iterativamente)
Execução do teste: Pass
Cuidado, Vá devagar
Esteja preparado para desfazer as mudanças
10
Aplicabilidade
Testes servem como documentação
Auxilia no design
Se adapta a qualquer metodologia de
desenvolvimento de software
11
Ferramentas para Testes
JUnit – Java
NUnit, MsTest – .NET
PyUnit – Python
Perl – Test::More
PHPUnit – PHP
Test::Unit – Ruby
Test.More – Javascript
12
Caso de Uso com TDD
Como usuário eu gostaria de me cadastrar
fornecendo: nome, email, senha, confirmação
Condição:
O usuário deve possuir uma senha válida
Ação:
Verificar se a confirmação da senha é válida, senão
enviar mensagem de erro adequada
13
Caso de Uso com TDD
14
Criando o Teste Falho
Caso de Uso com TDD
15
Implementado
Caso de Uso com TDD
16
Teste Passa
Caso de Uso com TDD
17
Adicionando novas Falhas
Caso de Uso com TDD
18
Implementação
Caso de Uso com TDD
19
Teste Passa
Caso de Uso com TDD
20
Caso de uso ainda incompleto
Caso de Uso com TDD
21
Nova implementação
Caso de Uso com TDD
22
Teste Passa
Caso de Uso com TDD
23
Nova Falha – Refatoração
Caso de Uso com TDD
24
Implementação
Caso de Uso com TDD
25
Teste Passa: Fim de Caso de Uso
Bibliografia Recomendada
TDD – Desenvolvimento Guiado por Testes. Kent Beck
Desenvolvimento de Software Orientado a Objetos,
Guiado por Testes. Steve Freeman, Nat Pryce.
Professional Test Driven Development with C#. James
Bender, Jeff McWherter
Código Limpo (Clean Code): Habilidades Práticas do
Agile Software. Robert C Martin
Obrigado!!!
Créditos:
http://www.slideshare.net/Pigor/palestra-tddcompleta-5460534
http://www.slideshare.net/Skud/test-driven-development-tutorial
Contato:
www.great.ufc.br