TDD – Test Driven Development

É realmente bem estranho testar algo sem que ele exista. Mas é exatamente isso que esta metodologia ágil descreve. A filosofia do método é:

  • Escreva um pequeno teste (em alguns casos ele não vai compliar).
  • Rode este teste e veja quais foram os erros encontrados.
  • Faça uma pequena alteração para que o teste passe com sucesso
  • Efetue todos os testes e veja se o teste foi bem sucedido
  • Refatore e remova as duplicatas que foram feitas para que o teste passe

Além de escrever o teste antes da criação do código, o design incremental do seu código é outro item fundamental no TDD.Mas qual é o ganho em utilizar esta metodologia?

Código limpo, aumento da qualidade e da produtividade são os objetos da aplicação do TDD.

Nesta pequena introdução de desenvolvimento orientado a testes, pretendo descrever passo a passo como desenvolver uma aplicação para o calculo de IMC (Índice de Massa Corporal) que é feito da seguinte forma:

IMC = PESO / (ALTURA²)

Antes de começar verifique os pré-requisitos descritos abaixo:

  1. Uma IDE com suporte a refatoração (Vou utilizar o Eclipse)
  2. JUnit (preferência a versão 4.0 com suporte a annotations)

Vamos ao primeiro teste:

import org.junit.Test;

public class testIMC {
@Test
public void testCalculoIMC(){
IMC imc = new IMC (74.0f,1.80f);
assertEquals(22,8f,imc.getImcResult());
}

}

Estamos com alguns problemas aqui. O teste não compila porque a classe IMC não existe, muito menos o seu construtor e o atributo imcResult. Além disso estamos acessando o atributo de classe diretamente, o que não é conveniente.

Vamos então aos baby steps, corrigindo os erros com pequenas alterações até que o código do teste seja compilado e executado. Lembre-se de utilizar a IDE para facilitar a sua vida na geração das classes, métodos etc.

O primeiro passo é criar a classe IMC:


public class IMC{

}

Acrescente o construtor:


public class IMC{

public IMC(float peso, float altura){

}

}

Finalmente acrescente o atributo imcResult


public class IMC{

private float imcResult;

public IMC(float peso, float altura){

}

}

Neste momento o teste é compilado e roda com erros. O próximo passo é fazer com que a barra vermelha fique verde. Acrescente um método que retorne um valor que resulte o sucesso do teste e encapsule o atributo imcResult.


public IMC(float peso, float altura){

public float getImcResult(){

return 22,8f;

}

}

Neste momento o teste passa para verde, mas precisamos melhorar o nosso código refatorando e removendo a duplicação.Veja o código completo:


public class IMC {

private float imcResult;

public IMC(float peso, float altura) {
imcResult = peso / (altura * altura);
}

public float getImcResult() {
return imcResult;
}

}

Este post foi uma pequena introdução do que é o TDD e para que serve. Os “devotos” do desenvolvimento de software baseado em XP já estão bem acostumados com o TDD. Para um maior aprofundamento desta técnica acesse os sites:

http://dojofloripa.wordpress.com/category/tdd/

http://www.improveit.com.br/xp/praticas/tdd

Comentários sobre o post serão muito bem vindos!

Anúncios

~ por Glaucio Guerra em outubro 10, 2007.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: