TEST DRIVEN DEVELOPMENT
RECORDAR…
TESTES
DE
SOFTWARE
PRINCIPAIS
CONCEITOS
TESTE DE
UNIDADE
TESTE DE
INTEGRAÇÃO
TESTE
FUNCIONAL
TESTE DE
TENSÃO
TESTE DE
ACEITAÇÃO
TESTE
UNITÁRIO
TEST DRIVEN DEVELOPMENT
TDD=
TEST DRIVEN DEVELOPMENT
ACEITAÇÃO
TENSÃO
FUNCIONAL
INTEGRAÇÃO
UNITÁRIO
PATTERNS
TEST DRIVEN DEVELOPMENT
EMTDD
TESTES
TEST DRIVEN DEVELOPMENT
ISOLADOS
TESTES
TESTES
TESTES
* A execução de um teste não pode afetar outro teste.
TESTES
TEST DRIVEN DEVELOPMENT
TESTES
TESTES
TESTES
LISTA
* Fazer uma lista com todos os testes que o desenvolvedor acredita que será necessário escrever.
TEST DRIVEN DEVELOPMENT
FAÇA O TESTE
* Os testes devem ser escritos antes do código que será testado.
DADOS
TEST DRIVEN DEVELOPMENT
TESTES
EVIDENTES
DADOS
* Devem ser utilizados dados que tornem os testes fáceis de ler e seguir.
* Devem ser incluídos nos testes os dados esperados e o resultado atual.
POR QUE
TEST DRIVEN DEVELOPMENT
ONDE ESTÁ
TEST DRIVEN DEVELOPMENT
OBUG?
CORRIJA
RÁPIDO
TEST DRIVEN DEVELOPMENT
EN
TE
ND
A
TEST DRIVEN DEVELOPMENT
ME
LH
OR
CICLO
TEST DRIVEN DEVELOPMENT
DEVIDA
Adicionarum teste
Executaro teste
Modificar
Executaro teste
Ok
Erro Ok…
Adiciona
Teste
Vejatestefalhar
EscrevaCódigo
Rode ostestes
Refatore
E AGORA?
REGRAS
TEST DRIVEN DEVELOPMENT
BOAS PRÁTICAS
TDD
Especificar os testes, elaborando uma lista de
testes a serem executados.
Iniciar pelo teste mais simples.
Iniciar a construção do código pela construção
do teste.
Construir apenas o necessário que deseja
testar.
Evitar construir testes grandes, buscar dividir
em blocos.
JUnitFramework em JAVA
SHOW
ME
THE
CODE
JUnitFramework em JAVA
THE CODE IS THE DESIGN
import static org.junit.Assert.*;
import org.junit.Test;
public class TestCalculator{
@Test
public void testAdiciona() {
Calculator calcula = new Calculator();
double result = calcula.add(1.0,5.0);
assertEquals(6.0, result, 0);
}
}
JUnitFramework em JAVA
MEU TESTE
* Método de teste de unidade que garante a validação do método de soma da classe Calculator.
public class Calculator{
public double add(double numero1, double numero2){
return numero1 + numero2;
}
public double sub(double numero1, double numero2){
return numero1 - numero2;
}
public double mult(double numero1, double numero2){
return numero1 * numero2;
}
public double div(double numero1, double numero2){
return numero1 / numero2;
}
}
JUnitFramework em JAVA
MEU PROGRAMA
KEEP
THE
BAR
GREEN
JUnitFramework em JAVA
TEST DRIVEN DEVELOPMENT
GASPARETO, Otávio. Test Driven Development, Rio Grande do Sul, 2013. Disponível em: < http://www.inf.ufrgs.br/~cesantin/TDD-Otavio.pdf>. Acesso em: 22 mar. 2013.
REFERÊNCIAS BIBLIOGRÁFICAS
LOPES, Camilo. Princípios de TDD, 2012. Disponível em: < http://imasters.com.br/artigo/24242/desenvolvimento/principios-de-test-driven-development-tdd/>. Acesso em: 30 mar. 2013.
http://www.agiledata.org/essays/tdd.html
http://pt.wikipedia.org/wiki/Test_Driven_Development
GAMA, Alexandre. TDD Simples e Prático, Parte 1. Disponível em: <http://www.devmedia.com.br/tdd-simples-e-pratico-parte-i/18533>Acesso em: 30 mar. 2013.
MASSOL, Vincent e HUDTED, Ted. Junit em Ação, Rio de Janeiro, Editora Ciência Moderna, 1ª edição, 2005.
STEPHENS, Matt e ROSENBERG, Doug. Design Driven Testing, Estados Unidos da América, Springer Science+Business Media, 2010.
DICAS DE LEITURA