Tdd na veia

2,550 views

Published on

Curso sobre TDD na prática realizado pela M2MSolutions

Published in: Technology
2 Comments
21 Likes
Statistics
Notes
No Downloads
Views
Total views
2,550
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
53
Comments
2
Likes
21
Embeds 0
No embeds

No notes for slide

Tdd na veia

  1. 1. TDD NA VEIA a tortura de um código sem testes
  2. 2. Matheus Fechine Graduado 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
  3. 3. Bruno Maomeh Grande 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.
  4. 4. M2M Solutions Nó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.
  5. 5. 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.”
  6. 6. O que são teste automatizados? Qualquer teste que execute automaticamente.
  7. 7. O que são teste automatizados? Ferramentas para execução de testes
  8. 8. O que é TDD? É uma prática de programacão onde ̧ todo o código do sistema é escrito baseado em testes automatizados.
  9. 9. O que é TDD? Só se escreve algum código novo no sistema, se houver algum código de teste quebrando.
  10. 10. 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.
  11. 11. O que é TDD? Ciclo do TDD: Vermelho-Verde-Amarelo.
  12. 12. Teste de unidade É um teste que executa a menor parcela de código de um software. Mock de Objetos
  13. 13. Teste de unidade Em Java, essa menor parcela é representada por um método.
  14. 14. Teste de unidade Ajuda na rastreabilidade de bugs no sistema.
  15. 15. Teste de unidade Primeiro teste de unidade
  16. 16. Antes de tudo
  17. 17. Configurando o ambiente Baixar o projeto no github git clone https://github.com/brunomaomeh/tddnaveia.git
  18. 18. Configurando o ambiente Executar o gradlew ./gradlew eclipse
  19. 19. Configurando o ambiente Importar o projeto no eclipse
  20. 20. Configurando o ambiente Importar o projeto no eclipse
  21. 21. Configurando o ambiente Importar o projeto no eclipse
  22. 22. Teste de unidade Classe Fatorial.java, iremos testa-la.
  23. 23. Teste de unidade Classe FatorialTest.java, nossa classe de teste.
  24. 24. Teste de unidade Entendendo o JUnit
  25. 25. Teste de unidade Implementando o primeiro teste
  26. 26. Teste de unidade Implementem outros testes
  27. 27. Teste de unidade Refatorando o código do sistema
  28. 28. Teste de unidade Execute todos os testes Se algum teste não passar, significa que sua refatoração está inconsistente.
  29. 29. Não é um teste de unidade Se ele conversa com o banco de dados
  30. 30. Não é um teste de unidade Se ele se comunica através de rede.
  31. 31. Não é um teste de unidade Se ele toca o sistema de arquivos.
  32. 32. Não é um teste de unidade Se ele não pode ser executado ao mesmo tempo de outros testes de unidade;
  33. 33. Não é um teste de unidade Se você tiver que configurar ou preparar o ambiente para executar os testes.
  34. 34. Teste de Integracão Pode-se acessar outros recursos do sistema, como também o banco de dados ou o sistema de arquivos.
  35. 35. Teste de Integracão Reducão na rastreabilidade de bugs (comparado ao teste de unidade)
  36. 36. Teste de Integracão São teste de caixa preta
  37. 37. Teste de Integracão Em via de regras gerais
  38. 38. Teste de aceitação Não entraremos nesse assunto!
  39. 39. Praticando o ciclo do TDD Entrando no “mundo real”.
  40. 40. Aplicando TDD no seu dia-a-dia Vamos construir um CRUD simples utilizando: E nos testes:
  41. 41. Andando em passos de bebê Vamos criar um CRUD simples de Cadastro de Usuários, onde iremos focar em resolver utilizando as tecnicas do tdd. Começaremos com os testes de unidade para os controllers.
  42. 42. Andando em passos de bebê br.com.tddnaveia.controller.UsuarioControllerTest.java (src/test/java)
  43. 43. Andando em passos de bebê br.com.tddnaveia.controller.UsuarioController.java (src/java/java)
  44. 44. Andando em passos de bebê
  45. 45. Fake Object São objetos "falsos", usados para dar suporte à algum comportamento do teste, para que este seja válido.
  46. 46. Mock Objects São objetos "simulados", usados para dar suporte à algum comportamento do teste, para que este seja válido.
  47. 47. Mock Objects Ferramentas de Mock
  48. 48. 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".
  49. 49. Implementando os serviços
  50. 50. Implementando os serviços
  51. 51. Implementando os serviços
  52. 52. 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.
  53. 53. Cobertura de código Cobertura de código no eclipse
  54. 54. Cobertura de código ● 100% de cobertura do Código? NÃO
  55. 55. Projetos legados Utilizando o mesmo princípio: Vermelho-VerdeAmarelo AINDA DÁ TEMPO PARA SE INSCREVER!!! Veja mais amanhã no curso de Caçadores de Mitos
  56. 56. 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
  57. 57. 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
  58. 58. Conclusão

×