Tdd na veia

Post on 11-Jun-2015

1.859 views 0 download

description

Curso sobre TDD na prática realizado pela M2MSolutions

Transcript of Tdd na veia

TDD NA VEIAa tortura de um código sem testes

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

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.

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.

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.”

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

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

O que é TDD?

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

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

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.

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

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

Mock de Objetos

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

Teste de unidade

Ajuda na rastreabilidade de bugs no sistema.

Teste de unidade

Primeiro teste de unidade

Antes de tudo

Configurando o ambienteBaixar o projeto no github

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

Configurando o ambienteExecutar o gradlew

./gradlew eclipse

Configurando o ambiente

Importar o projeto no eclipse

Configurando o ambiente

Importar o projeto no eclipse

Configurando o ambiente

Importar o projeto no eclipse

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

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

Teste de unidadeEntendendo o JUnit

Teste de unidadeImplementando o primeiro teste

Teste de unidadeImplementem outros testes

Teste de unidadeRefatorando o código do sistema

Teste de unidade

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

inconsistente.

Execute todos os testes

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

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

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

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

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

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

Teste de Integracão

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

Teste de IntegracãoSão teste de caixa preta

Teste de Integracão

Em via de regras gerais

Teste de aceitação

Não entraremos nesse assunto!

Praticando o ciclo do TDDEntrando no “mundo real”.

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

E nos testes:

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.

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

(src/test/java)

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

(src/java/java)

Andando em passos de bebê

Fake Object

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

Mock Objects

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

Mock ObjectsFerramentas de Mock

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".

Implementando os serviços

Implementando os serviços

Implementando os serviços

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.

Cobertura de código no eclipse

Cobertura de código

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

NÃO

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!!!

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

Conclusão