tdd na veia

58
TDD NA VEIA a tortura de um código sem testes

Upload: bruno-maomeh

Post on 11-Jun-2015

1.859 views

Category:

Technology


0 download

DESCRIPTION

Curso sobre TDD na prática realizado pela M2MSolutions

TRANSCRIPT

Page 1: Tdd na veia

TDD NA VEIAa tortura de um código sem testes

Page 2: Tdd na veia

Matheus FechineGraduado em Ciencias da Computacão com pós graduacão em Desenvolvimento de Software com ênfase em arquitetura java, ambas pela Universidade de Fortaleza (UNIFOR), atua no mercado como desenvolvedor desde 2008 e Coordenador da comunidade JavaCE. Sente-se torturado ao ver um código sem cobertura de teste. Torcedor do Ceará, apreciador do Punk Rock e baixista nas horas vagas.https://github.com/matheusfechine/TCC/blob/master/Matheus Fechine Artigo.pdf

Page 3: Tdd na veia

Bruno MaomehGrande aficionado pelo conhecimento e suas diversas formas de representacão pelo mundo. Admirador do desenvolvimento de software para web e metodologias ágeis, com o que trabalha a mais de 5 anos. Também é apaixonado por comunidades, atuando como coordenador da JavaSF International e membro ativo da JavaCE. Além de tudo, adorador do Deus Metal.

Page 4: Tdd na veia

M2M SolutionsNós adicionamos tecnologia da informacão e comunicacão à infra-estrutura de transporte e veículos com o objetivo de aumentar a mobilidade urbana, a eficiência da frota e o lucro operacional. Isto é ITS, sigla em inglês para Sistemas de Transporte Inteligente.

Page 5: Tdd na veia

O que são teste?Teste é tudo aquilo que asegura que alguma coisa está funcionando

“Myers (2004) afirma que o teste de software é um processo, ou uma série de processos, projetado para se certificar a respeito do código de computador, além de fazer o que foi designado a cumprir, e sem realizar nada que não seja intencional.”

Page 6: Tdd na veia

O que são teste automatizados?Qualquer teste que execute automaticamente.

Page 7: Tdd na veia

O que são teste automatizados?Ferramentas para execução de testes

Page 8: Tdd na veia

O que é TDD?

É uma prática de programacão onde todo o código do sistema é escrito baseado em testes automatizados.

Page 9: Tdd na veia

O que é TDD?Só se escreve algum código novo no sistema, se houver algum código de teste quebrando.

Page 10: Tdd na veia

O que é TDD?Auxilia na detectacão de falhas no design do sistema

Se seu teste está ficando muito complicado, é um indício que existe problema no design. É hora de refatorar.

Page 11: Tdd na veia

O que é TDD?Ciclo do TDD: Vermelho-Verde-Amarelo.

Page 12: Tdd na veia

Teste de unidadeÉ um teste que executa a menor parcela de código de um software.

Mock de Objetos

Page 13: Tdd na veia

Teste de unidadeEm Java, essa menor parcela é representada por um método.

Page 14: Tdd na veia

Teste de unidade

Ajuda na rastreabilidade de bugs no sistema.

Page 15: Tdd na veia

Teste de unidade

Primeiro teste de unidade

Page 16: Tdd na veia

Antes de tudo

Page 17: Tdd na veia

Configurando o ambienteBaixar o projeto no github

git clone https://github.com/brunomaomeh/tddnaveia.git

Page 18: Tdd na veia

Configurando o ambienteExecutar o gradlew

./gradlew eclipse

Page 19: Tdd na veia

Configurando o ambiente

Importar o projeto no eclipse

Page 20: Tdd na veia

Configurando o ambiente

Importar o projeto no eclipse

Page 21: Tdd na veia

Configurando o ambiente

Importar o projeto no eclipse

Page 22: Tdd na veia

Teste de unidadeClasse Fatorial.java, iremos testa-la.

Page 23: Tdd na veia

Teste de unidadeClasse FatorialTest.java, nossa classe de teste.

Page 24: Tdd na veia

Teste de unidadeEntendendo o JUnit

Page 25: Tdd na veia

Teste de unidadeImplementando o primeiro teste

Page 26: Tdd na veia

Teste de unidadeImplementem outros testes

Page 27: Tdd na veia

Teste de unidadeRefatorando o código do sistema

Page 28: Tdd na veia

Teste de unidade

Se algum teste não passar, significa que sua refatoração está

inconsistente.

Execute todos os testes

Page 29: Tdd na veia

Não é um teste de unidadeSe ele conversa com o banco de dados

Page 30: Tdd na veia

Não é um teste de unidadeSe ele se comunica através de rede.

Page 31: Tdd na veia

Não é um teste de unidadeSe ele toca o sistema de arquivos.

Page 32: Tdd na veia

Não é um teste de unidadeSe ele não pode ser executado ao mesmo tempo de outros testes de unidade;

Page 33: Tdd na veia

Não é um teste de unidadeSe você tiver que configurar ou preparar o ambiente para executar os testes.

Page 34: Tdd na veia

Teste de IntegracãoPode-se acessar outros recursos do sistema, como também o banco de dados ou o sistema de arquivos.

Page 35: Tdd na veia

Teste de Integracão

Reducão na rastreabilidade de bugs (comparado ao teste de unidade)

Page 36: Tdd na veia

Teste de IntegracãoSão teste de caixa preta

Page 37: Tdd na veia

Teste de Integracão

Em via de regras gerais

Page 38: Tdd na veia

Teste de aceitação

Não entraremos nesse assunto!

Page 39: Tdd na veia

Praticando o ciclo do TDDEntrando no “mundo real”.

Page 40: Tdd na veia

Aplicando TDD no seu dia-a-diaVamos construir um CRUD simples utilizando:

E nos testes:

Page 41: Tdd na veia

Andando em passos de bebê

Começaremos com os testes de unidade para os controllers.

Vamos criar um CRUD simples de Cadastro de Usuários, onde iremos focar em resolver utilizando as tecnicas do tdd.

Page 42: Tdd na veia

Andando em passos de bebêbr.com.tddnaveia.controller.UsuarioControllerTest.java

(src/test/java)

Page 43: Tdd na veia

Andando em passos de bebêbr.com.tddnaveia.controller.UsuarioController.java

(src/java/java)

Page 44: Tdd na veia

Andando em passos de bebê

Page 45: Tdd na veia

Fake Object

São objetos "falsos", usados para dar suporte à algum comportamento do teste, para que este seja válido.

Page 46: Tdd na veia

Mock Objects

São objetos "simulados", usados para dar suporte à algum comportamento do teste, para que este seja válido.

Page 47: Tdd na veia

Mock ObjectsFerramentas de Mock

Page 48: Tdd na veia

Mock Objects● Quando devo “mockar”?

○ Quando se quer isolar as dependencias de um objeto;

○ Muito utilizado junto com testes de unidade;■ Caso uma dependencia apresente algum bug,

seu teste poderá ser afetado por ela.○ Também em testes de integracão, porém em casos

mais "especiais".

Page 49: Tdd na veia

Implementando os serviços

Page 50: Tdd na veia

Implementando os serviços

Page 51: Tdd na veia

Implementando os serviços

Page 52: Tdd na veia

Cobertura de códigoÉ uma medida utilizada para descrever a quantidade de um código-fonte que está sendo testado por um determinado conjunto de testes.

Page 53: Tdd na veia

Cobertura de código no eclipse

Cobertura de código

Page 54: Tdd na veia

Cobertura de código● 100% de cobertura do Código?

NÃO

Page 55: Tdd na veia

Projetos legadosUtilizando o mesmo princípio: Vermelho-Verde-Amarelo

Veja mais amanhã no curso de Caçadores de Mitos

AINDA DÁ TEMPO PARA SE INSCREVER!!!

Page 56: Tdd na veia

Algumas más práticas● Focar na cobertura e não nas

funcionalidades● Testar Strings (sql)● Testar getters e setters... (codigos gerados

pela IDE)● @Ignore quando o teste falha

Page 58: Tdd na veia

Conclusão