Download - Tdd na veia
![Page 1: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/1.jpg)
TDD NA VEIAa tortura de um código sem testes
![Page 2: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/6.jpg)
O que são teste automatizados?Qualquer teste que execute automaticamente.
![Page 7: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/7.jpg)
O que são teste automatizados?Ferramentas para execução de testes
![Page 8: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/11.jpg)
O que é TDD?Ciclo do TDD: Vermelho-Verde-Amarelo.
![Page 12: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/12.jpg)
Teste de unidadeÉ um teste que executa a menor parcela de código de um software.
Mock de Objetos
![Page 13: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/13.jpg)
Teste de unidadeEm Java, essa menor parcela é representada por um método.
![Page 14: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/14.jpg)
Teste de unidade
Ajuda na rastreabilidade de bugs no sistema.
![Page 15: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/15.jpg)
Teste de unidade
Primeiro teste de unidade
![Page 16: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/16.jpg)
Antes de tudo
![Page 17: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/17.jpg)
Configurando o ambienteBaixar o projeto no github
git clone https://github.com/brunomaomeh/tddnaveia.git
![Page 18: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/18.jpg)
Configurando o ambienteExecutar o gradlew
./gradlew eclipse
![Page 19: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/19.jpg)
Configurando o ambiente
Importar o projeto no eclipse
![Page 20: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/20.jpg)
Configurando o ambiente
Importar o projeto no eclipse
![Page 21: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/21.jpg)
Configurando o ambiente
Importar o projeto no eclipse
![Page 22: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/22.jpg)
Teste de unidadeClasse Fatorial.java, iremos testa-la.
![Page 23: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/23.jpg)
Teste de unidadeClasse FatorialTest.java, nossa classe de teste.
![Page 24: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/24.jpg)
Teste de unidadeEntendendo o JUnit
![Page 25: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/25.jpg)
Teste de unidadeImplementando o primeiro teste
![Page 26: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/26.jpg)
Teste de unidadeImplementem outros testes
![Page 27: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/27.jpg)
Teste de unidadeRefatorando o código do sistema
![Page 28: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/29.jpg)
Não é um teste de unidadeSe ele conversa com o banco de dados
![Page 30: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/30.jpg)
Não é um teste de unidadeSe ele se comunica através de rede.
![Page 31: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/31.jpg)
Não é um teste de unidadeSe ele toca o sistema de arquivos.
![Page 32: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/33.jpg)
Não é um teste de unidadeSe você tiver que configurar ou preparar o ambiente para executar os testes.
![Page 34: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/35.jpg)
Teste de Integracão
Reducão na rastreabilidade de bugs (comparado ao teste de unidade)
![Page 36: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/36.jpg)
Teste de IntegracãoSão teste de caixa preta
![Page 37: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/37.jpg)
Teste de Integracão
Em via de regras gerais
![Page 38: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/38.jpg)
Teste de aceitação
Não entraremos nesse assunto!
![Page 39: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/39.jpg)
Praticando o ciclo do TDDEntrando no “mundo real”.
![Page 40: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/40.jpg)
Aplicando TDD no seu dia-a-diaVamos construir um CRUD simples utilizando:
E nos testes:
![Page 41: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/42.jpg)
Andando em passos de bebêbr.com.tddnaveia.controller.UsuarioControllerTest.java
(src/test/java)
![Page 43: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/43.jpg)
Andando em passos de bebêbr.com.tddnaveia.controller.UsuarioController.java
(src/java/java)
![Page 44: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/44.jpg)
Andando em passos de bebê
![Page 45: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/47.jpg)
Mock ObjectsFerramentas de Mock
![Page 48: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/49.jpg)
Implementando os serviços
![Page 50: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/50.jpg)
Implementando os serviços
![Page 51: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/51.jpg)
Implementando os serviços
![Page 52: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/53.jpg)
Cobertura de código no eclipse
Cobertura de código
![Page 54: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/54.jpg)
Cobertura de código● 100% de cobertura do Código?
NÃO
![Page 55: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/55.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/56.jpg)
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 57: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/57.jpg)
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
![Page 58: Tdd na veia](https://reader033.vdocuments.mx/reader033/viewer/2022052506/55799b60d8b42ae72b8b52d5/html5/thumbnails/58.jpg)
Conclusão