Test-Driven Develpment - TDD

Post on 11-Jun-2015

276 views 0 download

Tags:

description

Apresentação sobre o TDD: * Introdução * Conceitos * Aplicabilidade * Ferramentas

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