SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Globalcode – Open4education
Testes – Estratégia de automação dos
testes em microserviços
Rodrigo Stefani Domingues
Principal Architect na CI&T
Globalcode – Open4education
$~: whoami
Desenvolvedor a 14 anos
Java a 9 anos :)
Na CI&T a 6 anos
Microserviços a 3 anos
Nerd
rodrigosd@ciandt.com https://github.com/rsdomingues
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
ciandt.com
ciandt.com
"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
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
Globalcode – Open4education
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."
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
Globalcode – Open4education
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.
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
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."
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
Globalcode – Open4education
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.
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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
ciandt.com
Globalcode – Open4education
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, 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.
Globalcode – Open4education
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, Fevereiro 2017.
ACESSIBILIDADE
PERFORMANCE
CONTRATO
SEGURANÇA
Acesso as telas e iterações do usuário
Não necessita conexão com dados reais
Resultado não varia de acordo com dados
Acesso as telas e iterações do usuário
Necessita conexão com dados reais
Resultado varia de acordo com dados
Acesso as telas e iterações do usuário
Necessita conexão com dados reais
Resultado varia de acordo com dados
Acesso as APIs utilizadas pela aplicação
Não necessita conexão com dados reais
Resultado não varia de acordo com dados
Ok, mas como
dividimos as
tarefas?!
Globalcode – Open4education
PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE
DevOps
Continuous Deployment
Continuous Delivery
Continuous Integration
Agile
Collaboration
BusinessValue
Maturity Level
Globalcode – Open4education
PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE
DevOps
Continuous Deployment
Continuous Delivery
Continuous Integration
Agile
Collaboration
BusinessValue
Maturity Level
ciandt.com
1 Quebra de histórias
2 Redução # de branchs
3 Uso de CI/CD
Globalcode – Open4education
$~: git clone awsome_code
ciandt.com
Thank you!
http://vempra.ciandt.com

Mais conteúdo relacionado

Mais procurados

[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDiogo Augusto Pereira
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de softwareFelipe Bugov
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeAndré Abe Vicente
 
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...Igor Borborema Correia
 
Final Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsFinal Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsLuiz Henrique
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberKamilla Queiroz Xavier
 

Mais procurados (20)

[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidade
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínua
 
BDD_ Claudia Beatriz
BDD_ Claudia BeatrizBDD_ Claudia Beatriz
BDD_ Claudia Beatriz
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...
TDC2014 Teste móvel e seus requisitos, um foco na Usabilidade e Interação de ...
 
Final Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsFinal Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applications
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
QA Ninja Conference 2017
QA Ninja Conference 2017QA Ninja Conference 2017
QA Ninja Conference 2017
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saber
 

Semelhante a [TDC - Testes] Estratégia de automação dos testes em microserviços

Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de softwareluacal
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeThiago Bertuzzi
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slideshoraciosila
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERPGUTS-RS
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 

Semelhante a [TDC - Testes] Estratégia de automação dos testes em microserviços (20)

[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos
 
Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Eng de testes
Eng de testesEng de testes
Eng de testes
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slides
 
Guday2015 - GUTS-RS
Guday2015 - GUTS-RSGuday2015 - GUTS-RS
Guday2015 - GUTS-RS
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 

Mais de Rodrigo Stefani Domingues

[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructureRodrigo Stefani Domingues
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Rodrigo Stefani Domingues
 
[Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora![Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora!Rodrigo Stefani Domingues
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida realRodrigo Stefani Domingues
 

Mais de Rodrigo Stefani Domingues (6)

[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017
 
[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental
 
[Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora![Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora!
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real
 
[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real
 

[TDC - Testes] Estratégia de automação dos testes em microserviços

  • 1. Globalcode – Open4education Testes – Estratégia de automação dos testes em microserviços Rodrigo Stefani Domingues Principal Architect na CI&T
  • 2. Globalcode – Open4education $~: whoami Desenvolvedor a 14 anos Java a 9 anos :) Na CI&T a 6 anos Microserviços a 3 anos Nerd rodrigosd@ciandt.com https://github.com/rsdomingues
  • 3. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 4. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 8. "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
  • 9. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 10. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 11. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 12. Globalcode – Open4education 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."
  • 13. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 14. Globalcode – Open4education 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.
  • 15. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 16. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 17. Globalcode – Open4education 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."
  • 18. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 19. Globalcode – Open4education 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.
  • 20. "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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
  • 22. Globalcode – Open4education "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, 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.
  • 23. Globalcode – Open4education "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, Fevereiro 2017. ACESSIBILIDADE PERFORMANCE CONTRATO SEGURANÇA Acesso as telas e iterações do usuário Não necessita conexão com dados reais Resultado não varia de acordo com dados Acesso as telas e iterações do usuário Necessita conexão com dados reais Resultado varia de acordo com dados Acesso as telas e iterações do usuário Necessita conexão com dados reais Resultado varia de acordo com dados Acesso as APIs utilizadas pela aplicação Não necessita conexão com dados reais Resultado não varia de acordo com dados
  • 24. Ok, mas como dividimos as tarefas?!
  • 25. Globalcode – Open4education PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE DevOps Continuous Deployment Continuous Delivery Continuous Integration Agile Collaboration BusinessValue Maturity Level
  • 26. Globalcode – Open4education PLAN CODE BUILD Q&A RELEASE DEPLOY OPERATE DevOps Continuous Deployment Continuous Delivery Continuous Integration Agile Collaboration BusinessValue Maturity Level
  • 28. 1 Quebra de histórias 2 Redução # de branchs 3 Uso de CI/CD
  • 29. Globalcode – Open4education $~: git clone awsome_code