![Page 1: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/1.jpg)
pen4education
Testes – Estratégia de automação dos testes em microserviços
Rodrigo Stefani DominguesPrincipal Architect na CI&T
![Page 2: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/2.jpg)
pen4education
$~: whoamiDesenvolvedor a 14 anosJava a 9 anos :)Na CI&T a 6 anosMicroserviços a 3 anosNerd
[email protected] https://github.com/rsdomingues
![Page 3: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/3.jpg)
pen4education
"Microservices architecture is an approach for building distributed applications that support agile and scalable delivery."Gartner, Março 2017.
![Page 4: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/4.jpg)
pen4education
"Microservices architecture is an approach for building distributed applications that support agile and scalable delivery."Gartner, Março 2017.
![Page 5: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/5.jpg)
ciandt.com
![Page 6: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/6.jpg)
ciandt.com
![Page 7: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/7.jpg)
ciandt.com
![Page 8: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/8.jpg)
"You never change things by fighting the existing reality. To change something,
build a new model that makes the existing model obsolete." R. Buckminster Fuller
![Page 9: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/9.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
9
![Page 10: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/10.jpg)
pen4education
"Microservices architecture is an approach for building distributed applications that support agile and scalable delivery."Gartner, Março 2017.
![Page 11: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/11.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
11
![Page 12: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/12.jpg)
pen4education
12
- A responsabilidade do teste unitário é de garantir a unidade (menor elemento), em nosso caso os métodos e funções, logo quaisquer dependências deles devem ser mockados.
- Cobertura de 100% do código → The broken window theory
- Cobrir 100% não significa cobrir todo código- Testes sociavel- Foco no código "util"
"O teste de unidade exercita a menor parte do software testável na aplicação para determinar se ele se comporta conforme o
esperado."
![Page 13: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/13.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
13
![Page 14: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/14.jpg)
pen4education
14
"O teste de integração verifica os caminhos de comunicação e as interações entre os componentes para detectar defeitos na
interface."
- Os testes de integração são responsáveis por garantir o comportamento das integrações, tanto no que se refere ao comportado esperado quanto a tolerância a falhas nas integrações.
- Importante notar que devemos garantir o funcionamento das partes do código desenvolvido e não do framework usado para as conexões. Não devemos testar estes frameworks
- Este teste deve ser feito o mais próximo possível do código, em muitos casos é usado o mesmo conjunto de ferramentas de teste que o teste unitário.
- Os elementos de integração reais devem ser mockados via ferramentas ou no caso de database por estratégia de in-memory database.
![Page 15: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/15.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
15
![Page 16: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/16.jpg)
pen4education
"Microservices architecture is an approach for building distributed applications that support agile and scalable delivery."Gartner, Março 2017.
![Page 17: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/17.jpg)
pen4education
17
- Os testes de componente deve ser realizado com o componente em seu estado completo e "rodando" em um ambiente controlado. Onde seja possível determinar todas as condições de uso.
- O teste de componente deve conter as variações funcionais tanto de recursos públicos e recursos internos/administrativos.
- Muitos cenários envolvem chamadas externas e persistência em elementos de dados, neste caso deve ser feito uso de mock e elementos de dados vazios
"O teste de componente limita o escopo do software a uma parte do sistema testado."
![Page 18: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/18.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
18
![Page 19: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/19.jpg)
pen4education
19
"O teste de end-to-end verifica se um sistema atende aos requisitos externos e atinge seus objetivos, testando todo o
sistema, de ponta a ponta."
- O teste de end-to-end (e2e) visa garantir que o comportamento do sistema de ponta a ponta está como esperado/especificado do ponto de vista da jornada do usuário.
- Devido a complexidade de se criar um ambiente conectado com massa de dados para testes, os casos de teste incluídos no e2e precisam ser cuidadosamente avaliados para garantir que a gestão da massa de dados seja possível.
- Dado a complexidade dos testes, se faz necessário também uma análise cuidadosa de como realizar o teste e garantir o cenário para que não seja data specific e ao mesmo tempo garanta o resultado.
![Page 20: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/20.jpg)
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
- Exploratórios: Testes realizados manualmente visando explorar comportamentos atípicos dos usuários da aplicação, AKA "Manual"
- End-to-End: Validações de fluxos funcionais e jornadas, garantindo que os principais fluxos estão se comportando como esperado;
- Component: Validação relacionada ao comportamento do componente como um todo, considerando a integração entre as peças internas;
- Integration: Validação do comportamento dos componentes que são responsáveis por integração com mundo externo (inbound e outbound);
- Unit: Testes para validação de cada método e classe que implementam as regras de negócio da aplicação;
20
![Page 21: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/21.jpg)
ciandt.com
![Page 22: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/22.jpg)
pen4education
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
Testes unitários, integração e componente estão conectados a elementos da arquitetura e módulos
Testes end-to-end e exploratórios estão ligados a jornadas dos usuários e não a módulos ou elementos específicos.
![Page 23: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/23.jpg)
pen4education
The Need For Speed: Drive Velocity And Quality With DevOpsForrester, Fevereiro 2017.
ACESSIBILIDADE
PERFORMANCE
CONTRATO
SEGURANÇA
Acesso as telas e iterações do usuárioNão necessita conexão com dados reaisResultado não varia de acordo com dados
Acesso as telas e iterações do usuárioNecessita conexão com dados reais
Resultado varia de acordo com dados
Acesso as telas e iterações do usuárioNecessita conexão com dados reais
Resultado varia de acordo com dados
Acesso as APIs utilizadas pela aplicaçãoNão necessita conexão com dados reaisResultado não varia de acordo com dados
![Page 24: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/24.jpg)
Ok, mas como dividimos as
tarefas?!
![Page 25: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/25.jpg)
pen4education
PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE
DevOps
Continuous Deployment
Continuous Delivery
Continuous Integration
Agile
Collaboration
Bu
sin
ess
Val
ue Maturity Level
![Page 26: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/26.jpg)
pen4education
PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE
DevOps
Continuous Deployment
Continuous Delivery
Continuous Integration
Agile
Collaboration
Bu
sin
ess
Val
ue Maturity Level
![Page 27: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/27.jpg)
ciandt.com
![Page 28: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/28.jpg)
1 Quebra de histórias
2 Redução # de branchs
3 Uso de CI/CD
![Page 29: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/29.jpg)
pen4education
$~: git clone awsome_code
![Page 30: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/30.jpg)
ciandt.com
![Page 31: testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código](https://reader034.vdocuments.pub/reader034/viewer/2022042314/5f01fcdb7e708231d402052e/html5/thumbnails/31.jpg)
Thank you!
http://vempra.ciandt.com