![Page 1: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/1.jpg)
4 dicas valiosas para uma pirâmide de testes saudável
The Developer's Conference 2016
Taíse Dias @taisedias
Ricardo Cavalcanti @r_caval
![Page 2: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/2.jpg)
Pirâmide de testes
![Page 3: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/3.jpg)
UI
Service
Unit
Mike Cohn: Succeeding with Agile
![Page 4: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/4.jpg)
UI
Service
Unit
![Page 5: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/5.jpg)
UI
Service
Unit
![Page 6: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/6.jpg)
UI
Service
Unit
![Page 7: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/7.jpg)
UNITÁRIO
Aumento de escopo
Mais confiança
Mais rápido Melhor
isolamento
UI
SERVIÇO
Sam Newman: Building Microservices
![Page 8: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/8.jpg)
Fonte: Crispin, Lisa; Gregory, Janet. Agile Testing
Testes manuais
Testes de UI
Testes de aceitação (API)
Testes unitários / testes de componente
Lisa Crispin, Janet Gregory: Agile Testing
![Page 9: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/9.jpg)
Recomendações
![Page 10: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/10.jpg)
Separar testes unitários dos de aceitação.
![Page 11: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/11.jpg)
Projeto W: arquitetura
Web Service
Middle tier
Web Service Web Service
![Page 12: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/12.jpg)
Projeto W: pirâmide
80 testes API: Serviço isolado
API: Serviço integrado com outros
serviços
110 testes, 20 suites em paralelo,
2.5 min
Unitários
1922 testes, 5.5 min
Contrato do Serviço
Integração
1842 testes
40 testes, 9.3 min
![Page 13: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/13.jpg)
1922 testes (unitários + API) 5.5 min
Projeto W
![Page 14: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/14.jpg)
Web Service Web Service
Projeto G: arquitetura
UI
Middle tier
Web Service
![Page 15: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/15.jpg)
Projeto G: pirâmide
610 testes, 4 min
Unitários: UI
API: Serviço integrado com outros
serviços
UI
120 testes, 3 min
738 testes, 8 min
Unitários: Serviço
Unitários: Middle tier 1754 testes, 27 seg
881 testes, 19 seg
1296 testes, 13 seg
3931 testes, 59 seg
5 testes, 1.5 min UI: isolado
5 testes, 6 min 10 testes, 7.5 min
API: Serviço isolado
API: Contrato do Serviço 8 testes, 1 min
![Page 16: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/16.jpg)
1922 testes (unitários + API) 5.5 min
versus
Projeto W
3931 testes unitários 59 seg
Projeto G
Quase o dobro de testes em menos de 20% do tempo
![Page 17: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/17.jpg)
Para promover feedback mais rápido.
Separar testes unitários dos de aceitação.
![Page 18: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/18.jpg)
Não adiar implementação de jornada do usuário.
![Page 19: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/19.jpg)
Web Service
Projeto E: arquitetura
Cluster spark com 3 apps
Cluster spark com 1 app
![Page 20: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/20.jpg)
Projeto E: pirâmide
58 testes, 1 min
Unitários: Serviço 137 testes, 52 seg
API
Unitários: Cluster com 3 apps
Unitários: Cluster com 1 app 65 testes, 55 seg
123 testes, 64 seg
E2E: Cluster com 3 apps 6 testes, 1.5 min
202 testes 2.8 seg
64 testes 2.5 min
![Page 21: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/21.jpg)
Projeto T: arquitetura
Aplicação Rails
![Page 22: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/22.jpg)
Projeto T: pirâmide
9 testes 9 seg
Unitários
Integração
116 testes 25 seg
UI 9 testes
4 seg
![Page 23: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/23.jpg)
Não adiar implementação de jornada do usuário. Quando for adicionar novos testes, checar se faz sentido incrementar uma jornada de usuário também para não acumular como dívida
![Page 24: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/24.jpg)
O topo da pirâmide traz confiança sobre o funcionamento.
![Page 25: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/25.jpg)
UNITÁRIO
Aumento de escopo
Mais confiança
Mais rápido Melhor
isolamento
UI
SERVIÇO
Sam Newman: Building Microservices
![Page 26: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/26.jpg)
UI
Service
Unit
![Page 27: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/27.jpg)
O topo da pirâmide traz confiança sobre o funcionamento. Porém esses testes não guiam o design do novo sistema e são mais difíceis de manter no longo prazo
![Page 28: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/28.jpg)
Provedor e consumidor devem poder iniciar os testes de contrato.
![Page 29: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/29.jpg)
Testes de Contrato
❏ Teste de integração que garante que um provedor de serviço cumpre o contrato com o consumidor
1. Consumidor define expectativas
consumer provider
pact
2. Expectativas verificadas no provedor
consumer provider
pact
![Page 30: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/30.jpg)
Projeto P: pirâmide
396 testes, 3 min API: Serviço isolado
API: Serviço integrado com outros
serviços
9 testes, 7 min
409 testes, 10+ min
Unitários 1835 testes, 18 seg
API: Contrato do Serviço 4 testes, 30 seg
![Page 31: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/31.jpg)
Web Service
Web Service
UI
Web Service
Projeto P: arquitetura
Web Service
![Page 32: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/32.jpg)
Provedor e consumidor devem poder iniciar os testes de contrato. Quando somente o provedor executa a verificação do contrato, parece que apenas ele é a causa da quebra.
![Page 33: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/33.jpg)
Resumo
![Page 34: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/34.jpg)
34
Separar os testes unitários dos testes de aceitação.
Não adiar implementação da jornada do usuário.
Testes no topo da pirâmide trazem mais confiança.
Provedor e consumidor devem poder iniciar os testes de contrato.
![Page 35: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/35.jpg)
Perguntas? Taíse Dias @taisedias
Ricardo Cavalcanti @r_caval
![Page 36: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel](https://reader036.vdocuments.com.br/reader036/viewer/2022062316/5877a7a01a28ab826e8b6559/html5/thumbnails/36.jpg)
Referências
❏ Crispin, Lisa; Gregory, Janet. Agile Testing: A Practical Guide for Testers and Agile Teams.
❏ Fowler, Martin. Test Pyramid.
❏ Fowler, Martin. Component Test.
❏ Fowler, Martin. Broad Stack Test.
❏ Fowler, Martin. Integration Contract Test.
❏ Newman, Sam. Building Microservices.