Tags:

TDD – Desenvolvimento Orientado a Testes

Não sabe o que é TDD (Test Driven Development ou Desenvolvimento Orientado a Testes)? Já ouviu falar, porém nunca experimentou? É um expert no assunto?

Se você se enquadra em qualquer um desses grupos esse post é pra você!

TDD é uma técnica de desenvolvimento de software onde os testes automáticos são construídos antes da codificação.

Oi? Como é possível testar algo que não existe?

Simples! Observe os passos abaixo e note que essa ideia não é tão absurda como parece.

Passos para o ciclo:

  • Testar (escreva um teste que a princípio falha);
  • Codificar (faça-o passar da maneira mais simples possível);
  • Refatorar (realize melhorias no código).

O TDD é um dos pilares do XP e utiliza muito o conceito de baby steps a fim de obter feedback rapidamente sobre os processos alterados.

Mas, qual é a vantagem de usar essa abordagem?

  • Segurança e confiança do desenvolvedor na criação/alteração de código.
  • Maior cobertura de testes, uma vez que, estes foram planejados e não contaminados com a visão do código.
  • Possibilidade de execução em ambiente contínuo assegurando futuras alterações.
  • Mais rápido comparado ao teste manual (imagine retestar algo N vezes seguidas de forma exatamente igual e obtendo exatamente os mesmo resultados… algo que não é impossível de acontecer).

Para que esses conceitos fiquem mais claros que tal por a mão na massa?

Vamos fazer um exercício básico, sendo que o teste deve verificar a soma de dois números e a funcionalidade a ser criada deve realizar essa soma.

Pra começar vamos criar a classe de teste (SEMPRE começamos pelo teste):

package com.matera.tdd;

import org.testng.annotations.Test;

import com.matera.tec.dbtest.util.Assert;

@Test
public class SomaTest {
	/**
	 * Método de teste responsável por validar 
	 * se a soma entre dois números inteiros foi realizada com sucesso.
	 * @throws Exception
	 */
	public void somaTest() throws Exception {
		//Declaração de Variáveis
		int a =3;
		int b= 4;
		int result = 0;
		
		Calc c = new Calc(); 
		result = c.soma(a, b);
		//Verifico se o valor da soma está correto
		Assert.numberEquals(7, result);
	}

}

Esse método de teste verifica se o valor da soma de dois números está correto de acordo com a funcionalidade implementada. O teste estará com erros de compilação, e ao executá-lo exibirá mensagens de falha. TDD_Teste_Falha Agora é hora de codificar! Vamos criar a classe Calc e o método soma da maneira mais simples possível, o importante é que o teste seja executado com sucesso.

package com.matera.tdd;
/**
 * Método responsável por somar 2 números inteiros e retornar o valor da soma
 * @param valorA - Valor inteiro usado na soma.
 * @param valorB - Valor inteiro usado na soma.
 * @return - Soma do valorA e valorB.
 */
public class Calc { 
  public int soma(int valorA, int valorB){ 
     return valorA + valorB; 
  } 
}

Após implementar a classe Calc o teste foi executado sem nenhuma falha. TDD_Teste_Executado Antes de chegar ao fim do nosso primeiro ciclo é necessário refatorar o código. O exemplo demonstrado é muito simples e não requer muitas melhorias.

package com.matera.tdd;

public class Calc {

	/**
	 * Método responsável por somar 2 números inteiros e retornar o valor da soma
	 * @param valorA - Valor inteiro usado na soma.
	 * @param valorB - Valor inteiro usado na soma.
	 * @return - Soma do valorA e valorB.
	 */
	
	public int soma(int valorA, int valorB){
		
		return valorA + valorB;
		
	}
}

TDD pode ser aplicado em inúmeras situações, porém sabemos que não existe uma “bala de prata” que resolverá todos os problemas do mundo da codificação.

Utilizar TDD pode ser muito criticado já que o tempo de desenvolvimento é maior. Porém, o processo gera mais confiança ao desenvolvedor e qualidade ao software.

Espero que todos tenham gostado do post. O que achou dessa abordagem? Quais experiências (boas ou ruins) já vivenciou utilizando-a? Compartilhe conosco!

Por KARINA COSTA MINEIRO

Analista de Sistemas, motivada por desafios, adepta ao desenvolvimento Ágil! Ama filmes e séries, louca por cachorros e entusiasta DIY.

Postado em: 16 de dezembro de 2015

Confira outros artigos do nosso blog

Matera participa da 9ª edição do meetup DevTests Campinas

03 de setembro de 2018

Ariane Ferreira Izac

Teste de mutação com PITest

24 de agosto de 2018

Julio Cesar Consolini

Introdução ao Dev-Test Pairing

13 de junho de 2018

Caio Rizolli

Falando sobre Teste de Intrusão (ou PenTest)

03 de abril de 2018

Jacqueline Costa

Deixe seu comentário