como tdd pode influenciar na construção do seu produto?
DESCRIPTION
Mostra as vantagens que o Test Driven Development trás para o design de sua aplicação, além do aprendizadoque ele trouxe no desenvolvimento do JTrace, uma biblioteca de computação gráfica.TRANSCRIPT
![Page 1: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/1.jpg)
Como TDD pode influenciar na construção do seu produto?
Raphael Paiva
![Page 2: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/2.jpg)
Raphael who?
● B.Sc. em Ciência da Computação pela UFRJ● Coordenador técnico da equipe SIGA-UFRJ, integrante
há 6 anos.● Desenvolvimento e manutenção dos Sistemas de
Gestão acadêmica e Acesso da UFRJ.
![Page 3: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/3.jpg)
Raphael who?
● JPA, Seam, EJB, Selenium, TestNG, Puppet, CI, Infra, virtualização... You name it, we do it!
● Especialista em resolver bolas quadradas!
![Page 4: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/4.jpg)
E… Entusiasta de TDD!
![Page 5: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/5.jpg)
Mas chega de papo!
![Page 6: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/6.jpg)
TDD: Testar código antes de escrever código?
![Page 7: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/7.jpg)
![Page 8: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/8.jpg)
Ok, mas...
![Page 9: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/9.jpg)
Testar depois é ruim?
![Page 10: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/10.jpg)
Não!
![Page 11: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/11.jpg)
Testar antes garante mais cobertura do que testar depois?
![Page 12: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/12.jpg)
Talvez...
![Page 13: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/13.jpg)
Então que diferença faz testar antes?
![Page 14: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/14.jpg)
Design!
![Page 15: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/15.jpg)
“TDD doesn't drive good design. TDD gives you immediate feedback about what is likely
to be a bad design.” -- Kent Beck
![Page 16: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/16.jpg)
Pensar no código antes de escrever.
![Page 17: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/17.jpg)
● Como essa classe vai ser usada?● Por quem essa classe será
usada?● Por que essa classe existe?
![Page 18: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/18.jpg)
Design incremental!Baby Steps, nada de BDUF
![Page 19: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/19.jpg)
“Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é
essencial.” -- Manifesto Ágil
![Page 20: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/20.jpg)
Case: JTraceMotor de geração de imagens por Ray
Tracing
https://github.com/raphaelpaiva/jtrace
![Page 21: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/21.jpg)
● Ray Tracing: técnica utilizada nos filmes com CG -- Alto realismo
Case: JTrace
![Page 22: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/22.jpg)
Case: JTrace
● Deve ser genérico e extensível ● Exigência de qualidade e facilidade de uso!● Usado em trabalhos de alunos de
graduação
![Page 23: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/23.jpg)
O JTrace introduziu alguns desafios
![Page 24: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/24.jpg)
Cada rodada demora entre vários segundos e muitos minutos.
![Page 25: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/25.jpg)
Testar depois: Demorado e difícil.O output é uma imagem.
![Page 26: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/26.jpg)
Erros podem acontecer em dezenas dentre milhões de pixels.
![Page 27: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/27.jpg)
Como garantir qualidade neste cenário?
![Page 28: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/28.jpg)
![Page 29: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/29.jpg)
TDD ao resgate!
![Page 30: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/30.jpg)
● Só implementar algo quando realmente for necessário.
● Generalizar quando necessário, arquitetura modular, baseada em delegação de responsabilidade.
● Unidades mínimas de código.
Design incremental
![Page 31: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/31.jpg)
Por que?
![Page 32: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/32.jpg)
● Mais fácil e, talvez, o único modo são de testar.
● Mais unidades == mais testes == mais confiança
Por que?
![Page 33: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/33.jpg)
Resultados
![Page 34: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/34.jpg)
Bugs capturados e resolvidos com extrema facilidade.
![Page 35: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/35.jpg)
TDD como motivador
![Page 36: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/36.jpg)
Interface enxuta e genérica
API composta basicamente de 5 conceitos.Iluminação, Câmeras, Objetos Geométricos, Primitivas e Listeners.
![Page 37: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/37.jpg)
Fácil de usar!
Obtivemos ótimas implementações de trabalhos e pouquíssimas dúvidas.
![Page 38: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/38.jpg)
Os testes geraram exemplos úteis no aprendizado da API!
![Page 39: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/39.jpg)
0 bugs reportados!
![Page 40: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/40.jpg)
Sucesso == aprendizado
![Page 41: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/41.jpg)
Cobertura por cobertura? Até quando vale o esforço de aumentar a
cobertura de testes?
![Page 42: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/42.jpg)
50,9% ou 81,3%?
O que testar?
![Page 43: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/43.jpg)
TDD Funciona só para testes unitários?
![Page 44: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/44.jpg)
NÃO, embora muita gente pense que sim...
Mocks everywhere?
![Page 45: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/45.jpg)
Testar antes: verificação ou design?
![Page 46: Como TDD pode influenciar na construção do seu Produto?](https://reader035.vdocuments.mx/reader035/viewer/2022062313/55843b7bd8b42a84368b499e/html5/thumbnails/46.jpg)
Ambos!