apresentação de tdd na fatec jundiaí

47
Fatec - Jundia 09/04/20 Introdução ao Test-Driven Development

Upload: fernando-hamasaki-de-amorim

Post on 25-Jun-2015

1.910 views

Category:

Technology


2 download

DESCRIPTION

Apresentação de introdução ao TDD - Test Driven-Development realizada na Fatec Jundiaí.

TRANSCRIPT

Page 1: Apresentação de TDD na Fatec Jundiaí

Fatec - Jundiaí09/04/2009

Introdução ao Test-Driven Development

Page 2: Apresentação de TDD na Fatec Jundiaí

Test-Driven Development

“Escreva código novo apenas se você primeiro tiver um teste falhando.”

Kent Beck

Page 3: Apresentação de TDD na Fatec Jundiaí

Por que testar?

• Não existe software sem erros• Aumenta a qualidade do software• Evita retrabalho

Page 4: Apresentação de TDD na Fatec Jundiaí

Modelo Waterfall

Page 5: Apresentação de TDD na Fatec Jundiaí

Test-Driven Development

• Test-first• Design incremental

Page 6: Apresentação de TDD na Fatec Jundiaí

Test-first

Escrever testes antes da implementação:

• Faz você pensar no comportamento• Reduz código especulativo• Documenta• Aumenta a qualidade

Page 7: Apresentação de TDD na Fatec Jundiaí

Design incremental

• Adição de novas funcionalides em pequenos passos

• O conceito chave de TDD é ter um feedback rápido das mudanças no código

Page 8: Apresentação de TDD na Fatec Jundiaí

Test-Driven Development

• TDD é mais sobre design de software do que testes

Page 9: Apresentação de TDD na Fatec Jundiaí

Test-Driven Development

“Está pronto, só falta testar.”

• Usando TDD, quando acabamos, realmento acabamos.

Page 10: Apresentação de TDD na Fatec Jundiaí

Eu não quero usar TDD…

As 5 maiores desculpas para quem não quer desenvolver orientado a testes:

• Vai demorar muito mais• A funcionalidade é muito fácil• Não sei como testar• Isso não dá para testar• Melhor deixar os testes com os

testadores

Page 11: Apresentação de TDD na Fatec Jundiaí

Eu não quero usar TDD…

“Você não tem tempo para escrever testes unitários, porque gasta tempo demais debugando.”

Page 12: Apresentação de TDD na Fatec Jundiaí

Processo para usar TDD

• Lista de testes• Red/Green/Refactor

Page 13: Apresentação de TDD na Fatec Jundiaí

Red/Green/Refactor

Page 14: Apresentação de TDD na Fatec Jundiaí

Refatoração

• Melhora e aperfeiçoamento do código existente sem alterar o seu comportamento externo.

Page 15: Apresentação de TDD na Fatec Jundiaí

Passos para criação de testes

• Escreva um teste• Compile o teste (ele não deverá compilar, pois não

implementou nada ainda)• Implemente somente o suficiente para compilar• Rode o teste e veja-o falhar• Implemente somente o suficiente para o teste passar• Rode o teste e veja-o passar• Refatore para “limpar” e remover duplicação de código

(implementação e teste)• Rode o teste e veja-o passar• Repita desde o primeiro passo.

Page 16: Apresentação de TDD na Fatec Jundiaí

Ferramentas para testes de unidade

• .NET: MSTest (Visual Studio), NUnit• Java: JUnit, Jtest• Ruby: Test::Unit• Python: PyUnit• PHP: PHPUnit, SimpleTest• JavaScript: JSUnit

Page 17: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Lista de testes:• Somar dois números inteiros• Subtrair dois números inteiros• Multiplicar dois números inteiros• Dividir dois números inteiros• ...

Page 18: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Lista de testes:• Somar dois números inteiros• Subtrair dois números inteiros• Multiplicar dois números inteiros• Dividir dois números inteiros• ...

Page 19: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Soma_Dois_Numeros()

{

Calculadora c = new Calculadora();

int resultado = c.Soma(10, 10);

Assert.AreEqual(20, resultado);

}

Implementação

Exemplo – Calculadora

Page 20: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Soma_Dois_Numeros()

{

Calculadora c = new Calculadora();

int resultado = c.Soma(10, 10);

Assert.AreEqual(20, resultado);

}

Implementação

public class Calculadora

{

public int Soma(int num1, int num2)

{

return 0;

}

}

Exemplo – Calculadora

Page 21: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Page 22: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Soma_Dois_Numeros()

{

Calculadora c = new Calculadora();

int resultado = c.Soma(10, 10);

Assert.AreEqual(20, resultado);

}

Implementação

public class Calculadora

{

public int Soma(int num1, int num2)

{

int soma = num1 + num2;

return soma;

}

}

Exemplo – Calculadora

Page 23: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Page 24: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Soma_Dois_Numeros()

{

Calculadora c = new Calculadora();

int resultado = c.Soma(10, 10);

Assert.AreEqual(20, resultado);

}

Implementação

public class Calculadora

{

public int Soma(int num1, int num2)

{

int soma = num1 + num2;

return soma;

}

}

Exemplo – Calculadora

Page 25: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Soma_Dois_Numeros()

{

Calculadora c = new Calculadora();

int resultado = c.Soma(10, 10);

Assert.AreEqual(20, resultado);

}

Implementação

public class Calculadora

{

public int Soma(int num1, int num2)

{

return num1 + num2;

}

}

Exemplo – Calculadora

Page 26: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Page 27: Apresentação de TDD na Fatec Jundiaí

Exemplo – Calculadora

Page 28: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Lista de testes:• Criar uma instância de MusicPlayer

e verificar se a propriedade AutoStart é falsa por padrão;

• Verificar se propriedade IsPlaying é verdadeira quando um arquivo de música for configurado e AutoStart for verdadeiro;

• ...

Page 29: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Lista de testes:• Criar uma instância de MusicPlayer

e verificar se a propriedade AutoStart é falsa por padrão;

• Verificar se propriedade IsPlaying é verdadeira quando um arquivo de música for configurado e AutoStart for verdadeiro;

• ...

Page 30: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

Implementação

Exemplo 2 – Music Player

Page 31: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

Implementação

public class MusicPlayer

{

public bool AutoStart

{

return true;

}

}

Exemplo 2 – Music Player

Page 32: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 33: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

Implementação

public class MusicPlayer

{

public bool AutoStart

{

return false;

}

}

Exemplo 2 – Music Player

Page 34: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 35: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 36: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 37: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

[TestMethod]

public void Configura_Musica_Com_AutoStart()

{

MusicPlayer mp = new MusicPlayer();

mp.AutoStart = true;

mp.SetMusic(@"C:\musica.mp3");

Assert.IsTrue(mp.IsPlaying);

}

Implementação

public class MusicPlayer

{

public bool AutoStart

{

return false;

}

}

Exemplo 2 – Music Player

Page 38: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

[TestMethod]

public void Configura_Musica_Com_AutoStart()

{

MusicPlayer mp = new MusicPlayer();

mp.AutoStart = true;

mp.SetMusic(@"C:\musica.mp3");

Assert.IsTrue(mp.IsPlaying);

}

Implementação

public class MusicPlayer

{

private bool autoStart;

private bool isPlaying;

public bool AutoStart

{

get { return autoStart; }

set { autoStart = value; }

}

public bool IsPlaying

{

get { return isPlaying; }

set { isPlaying = value; }

}

public void SetMusic(string path)

{

}

}

Exemplo 2 – Music Player

Page 39: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 40: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

[TestMethod]

public void Configura_Musica_Com_AutoStart()

{

MusicPlayer mp = new MusicPlayer();

mp.AutoStart = true;

mp.SetMusic(@"C:\musica.mp3");

Assert.IsTrue(mp.IsPlaying);

}

Implementação

public class MusicPlayer

{

private bool autoStart;

private bool isPlaying;

public bool AutoStart

{

get { return autoStart; }

set { autoStart = value; }

}

public bool IsPlaying

{

get { return isPlaying; }

set { isPlaying = value; }

}

public void SetMusic(string path)

{

IsPlaying = true;

}

}

Exemplo 2 – Music Player

Page 41: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 42: Apresentação de TDD na Fatec Jundiaí

Teste

[TestMethod]

public void Instancia_Music_Player()

{

MusicPlayer mp = new MusicPlayer();

Assert.IsFalse(mp.AutoStart);

}

[TestMethod]

public void Configura_Musica_Com_AutoStart()

{

MusicPlayer mp = new MusicPlayer();

mp.AutoStart = true;

mp.SetMusic(@"C:\musica.mp3");

Assert.IsTrue(mp.IsPlaying);

}

Implementação

public class MusicPlayer

{

private bool autoStart;

private bool isPlaying;

public bool AutoStart

{

get { return autoStart; }

set { autoStart = value; }

}

public bool IsPlaying

{

get { return isPlaying; }

set { isPlaying = value; }

}

public void SetMusic(string path)

{

IsPlaying = true;

}

}

Exemplo 2 – Music Player

Page 43: Apresentação de TDD na Fatec Jundiaí

Teste

MusicPlayer mp = new MusicPlayer();

[TestMethod]

public void Instancia_Music_Player()

{

Assert.IsFalse(mp.AutoStart);

}

[TestMethod]

public void Configura_Musica_Com_AutoStart()

{

mp.AutoStart = true;

mp.SetMusic(@"C:\musica.mp3");

Assert.IsTrue(mp.IsPlaying);

}

Implementação

public class MusicPlayer

{

private bool autoStart;

private bool isPlaying;

public bool AutoStart

{

get { return autoStart; }

set { autoStart = value; }

}

public bool IsPlaying

{

get { return isPlaying; }

set { isPlaying = value; }

}

public void SetMusic(string path)

{

IsPlaying = true;

}

}

Exemplo 2 – Music Player

Page 44: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 45: Apresentação de TDD na Fatec Jundiaí

Exemplo 2 – Music Player

Page 46: Apresentação de TDD na Fatec Jundiaí

Test-Driven Development

“Escreva código novo apenas se você primeiro tiver um teste falhando.”

Kent Beck

Page 47: Apresentação de TDD na Fatec Jundiaí

Obrigado

Prodis’ Blog http://prodis.pro.bro