Download - 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
Referências● Matheus Fechine:
○ https://github.com/matheusfechine/TCC/raw/master/Matheus Fechine Artigo.pdf
○ https://github.com/matheusfechine○ http://www.linkedin.com/profile/view?id=24698083
● Bruno Maomeh:○ https://github.com/brunomaomeh○ http://www.slideshare.net/BrunoMaomeh○ http://www.linkedin.com/profile/view?id=74407196
Conclusão