testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do...

31
pen4education Testes – Estratégia de automação dos testes em microserviços Rodrigo Stefani Domingues Principal Architect na CI&T

Transcript of testes em microserviços Testes – Estratégia de automação dos€¦ · - Cobertura de 100% do...

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thank you!

http://vempra.ciandt.com