36
4 dicas valiosas para uma pirâmide de testes saudável The Developer's Conference 2016 Taíse Dias @taisedias Ricardo Cavalcanti @r_caval

TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

Embed Size (px)

Citation preview

Page 1: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

Pirâmide de testes

Page 3: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

UI

Service

Unit

Mike Cohn: Succeeding with Agile

Page 4: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

UI

Service

Unit

Page 5: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

UI

Service

Unit

Page 6: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

UI

Service

Unit

Page 7: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

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

Recomendações

Page 10: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

Separar testes unitários dos de aceitação.

Page 11: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

Projeto W: arquitetura

Web Service

Middle tier

Web Service Web Service

Page 12: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

1922 testes (unitários + API) 5.5 min

Projeto W

Page 14: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

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

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

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

Não adiar implementação de jornada do usuário.

Page 19: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

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

Projeto T: arquitetura

Aplicação Rails

Page 22: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

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

O topo da pirâmide traz confiança sobre o funcionamento.

Page 25: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

UI

Service

Unit

Page 27: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

Provedor e consumidor devem poder iniciar os testes de contrato.

Page 29: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

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

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

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

Resumo

Page 34: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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

Perguntas? Taíse Dias @taisedias

Ricardo Cavalcanti @r_caval

Page 36: TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel

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.