SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
4 dicas valiosas para uma
pirâmide de testes saudável
The Developer's Conference 2016
Taíse Dias @taisedias
Ricardo Cavalcanti @r_caval
Pirâmide de
testes
UI
Service
Unit
Mike Cohn:
Succeeding with
Agile
UI
Service
Unit
UI
Service
Unit
UI
Service
Unit
UNITÁRIO
Aumento de
escopo
Mais confiança
Mais rápido
Melhor
isolamento
UI
SERVIÇO
Sam Newman:
Building
Microservices
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
Recomendações
Separar testes unitários
dos de aceitação.
Projeto W: arquitetura
Web Service
Middle tier
Web Service Web Service
Projeto W: pirâmide
80 testesAPI: 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
1922 testes
(unitários + API)
5.5 min
Projeto W
Web Service Web Service
Projeto G: arquitetura
UI
Middle tier
Web Service
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 minUI: isolado
5 testes, 6 min
10 testes, 7.5 min
API: Serviço isolado
API: Contrato do Serviço 8 testes, 1 min
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
Para promover feedback mais rápido.
Separar testes unitários
dos de aceitação.
Não adiar
implementação de
jornada do usuário.
Web Service
Projeto E: arquitetura
Cluster spark
com 3 apps
Cluster spark
com 1 app
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
Projeto T: arquitetura
Aplicação Rails
Projeto T: pirâmide
9 testes
9 seg
Unitários
Integração
116 testes
25 seg
UI
9 testes
4 seg
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
O topo da pirâmide traz
confiança sobre o
funcionamento.
UNITÁRIO
Aumento de
escopo
Mais confiança
Mais rápido
Melhor
isolamento
UI
SERVIÇO
Sam Newman:
Building
Microservices
UI
Service
Unit
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
Provedor e consumidor
devem poder iniciar os
testes de contrato.
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
Projeto P: pirâmide
396 testes, 3 minAPI: 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
Web Service
Web Service
UI
Web Service
Projeto P: arquitetura
Web Service
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.
Resumo
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.
Perguntas?
Taíse Dias @taisedias
Ricardo Cavalcanti @r_caval
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.

Mais conteúdo relacionado

Destaque

TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0tdc-globalcode
 
Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015Percival Lucena
 
O que são Kudo Cards e o que isso influencia na nossa organização
O que são Kudo Cards e o que isso influencia na nossa organizaçãoO que são Kudo Cards e o que isso influencia na nossa organização
O que são Kudo Cards e o que isso influencia na nossa organizaçãoVinicius Mussak
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitaçõestdc-globalcode
 
TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0tdc-globalcode
 
TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0tdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Edlaine Zamora
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 

Destaque (20)

TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0
 
Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015
 
Lean service creation
Lean service creationLean service creation
Lean service creation
 
O que são Kudo Cards e o que isso influencia na nossa organização
O que são Kudo Cards e o que isso influencia na nossa organizaçãoO que são Kudo Cards e o que isso influencia na nossa organização
O que são Kudo Cards e o que isso influencia na nossa organização
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e FacilitaçõesTDC2016SP - Dinâmica e Facilitações
TDC2016SP - Dinâmica e Facilitações
 
TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0
 
TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0TDC2016SP - Trilha Management 3.0
TDC2016SP - Trilha Management 3.0
 
Como Mudar o Mundo
Como Mudar o MundoComo Mudar o Mundo
Como Mudar o Mundo
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 

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

Brateste 2103: Virtualização de Serviços para uma Nova Abordagem em testes
Brateste 2103:  Virtualização de Serviços para uma Nova Abordagem em testesBrateste 2103:  Virtualização de Serviços para uma Nova Abordagem em testes
Brateste 2103: Virtualização de Serviços para uma Nova Abordagem em testesananegrello
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agileananegrello
 
Testes de contrato em um contexto de services e microservices tdc-poa2016
Testes de contrato em um contexto de services e microservices tdc-poa2016Testes de contrato em um contexto de services e microservices tdc-poa2016
Testes de contrato em um contexto de services e microservices tdc-poa2016Bruno Tanoue
 
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...tdc-globalcode
 
Teste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosTeste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosRationalBrasil
 
Sbqs 2010 Processo de Teste de Software para Scrum
Sbqs 2010 Processo de Teste de Software para ScrumSbqs 2010 Processo de Teste de Software para Scrum
Sbqs 2010 Processo de Teste de Software para ScrumEliane Collins
 
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
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing Walter Farias
 
Potencializando seus testes com Jenkins
Potencializando seus testes com JenkinsPotencializando seus testes com Jenkins
Potencializando seus testes com JenkinsQaladies
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsRicardo Martins ☁
 
TDC 2013 7 Dicas para acelerar os testes
TDC 2013  7 Dicas para acelerar os testesTDC 2013  7 Dicas para acelerar os testes
TDC 2013 7 Dicas para acelerar os testesFelipe Freire
 
K6 - Teste de Carga e Desempenho.pptx
K6 - Teste de Carga e Desempenho.pptxK6 - Teste de Carga e Desempenho.pptx
K6 - Teste de Carga e Desempenho.pptxGdfr2
 
ABTesting: Não há nada como testar em produção!
ABTesting: Não há nada como testar em produção!ABTesting: Não há nada como testar em produção!
ABTesting: Não há nada como testar em produção!Daniel Semedo
 
A framework for collaborative applications en
A framework for collaborative applications enA framework for collaborative applications en
A framework for collaborative applications enPedro Correia
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubMarcelo Souza Vieira
 
Arquitetura de dados em stream - TDC SP 2016
Arquitetura de dados em stream - TDC SP 2016Arquitetura de dados em stream - TDC SP 2016
Arquitetura de dados em stream - TDC SP 2016Kamila Santos Hinckel
 

Semelhante a TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavel (20)

QAOps - Agile Trends 2021
QAOps - Agile Trends 2021QAOps - Agile Trends 2021
QAOps - Agile Trends 2021
 
Brateste 2103: Virtualização de Serviços para uma Nova Abordagem em testes
Brateste 2103:  Virtualização de Serviços para uma Nova Abordagem em testesBrateste 2103:  Virtualização de Serviços para uma Nova Abordagem em testes
Brateste 2103: Virtualização de Serviços para uma Nova Abordagem em testes
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
 
Testes de contrato em um contexto de services e microservices tdc-poa2016
Testes de contrato em um contexto de services e microservices tdc-poa2016Testes de contrato em um contexto de services e microservices tdc-poa2016
Testes de contrato em um contexto de services e microservices tdc-poa2016
 
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...
TDC2016POA | Trilha Ruby - Testes de contrato em um contexto de services e mi...
 
Teste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosTeste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de Serviços
 
Sbqs 2010 Processo de Teste de Software para Scrum
Sbqs 2010 Processo de Teste de Software para ScrumSbqs 2010 Processo de Teste de Software para Scrum
Sbqs 2010 Processo de Teste de Software para Scrum
 
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
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing
 
Testes em aplicativos móveis
Testes em aplicativos móveisTestes em aplicativos móveis
Testes em aplicativos móveis
 
Potencializando seus testes com Jenkins
Potencializando seus testes com JenkinsPotencializando seus testes com Jenkins
Potencializando seus testes com Jenkins
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
 
TDC 2013 7 Dicas para acelerar os testes
TDC 2013  7 Dicas para acelerar os testesTDC 2013  7 Dicas para acelerar os testes
TDC 2013 7 Dicas para acelerar os testes
 
K6 - Teste de Carga e Desempenho.pptx
K6 - Teste de Carga e Desempenho.pptxK6 - Teste de Carga e Desempenho.pptx
K6 - Teste de Carga e Desempenho.pptx
 
ABTesting: Não há nada como testar em produção!
ABTesting: Não há nada como testar em produção!ABTesting: Não há nada como testar em produção!
ABTesting: Não há nada como testar em produção!
 
A framework for collaborative applications en
A framework for collaborative applications enA framework for collaborative applications en
A framework for collaborative applications en
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
 
Arquitetura de dados em stream - TDC SP 2016
Arquitetura de dados em stream - TDC SP 2016Arquitetura de dados em stream - TDC SP 2016
Arquitetura de dados em stream - TDC SP 2016
 
Microservices
MicroservicesMicroservices
Microservices
 
Potencializando seus testes com jenkins
Potencializando seus testes com jenkinsPotencializando seus testes com jenkins
Potencializando seus testes com jenkins
 

Mais de Taise Dias da Silva

TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTaise Dias da Silva
 
MTC_2016-analise_efetiva_de_microsservicos
MTC_2016-analise_efetiva_de_microsservicosMTC_2016-analise_efetiva_de_microsservicos
MTC_2016-analise_efetiva_de_microsservicosTaise Dias da Silva
 
Testes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTestes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTaise Dias da Silva
 
MTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivosMTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivosTaise Dias da Silva
 

Mais de Taise Dias da Silva (7)

TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
 
MTC_2016-analise_efetiva_de_microsservicos
MTC_2016-analise_efetiva_de_microsservicosMTC_2016-analise_efetiva_de_microsservicos
MTC_2016-analise_efetiva_de_microsservicos
 
Testes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTestes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutenção
 
MTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivosMTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivos
 
Geek night-2015
Geek night-2015Geek night-2015
Geek night-2015
 
Cucumber-QA_Night
Cucumber-QA_NightCucumber-QA_Night
Cucumber-QA_Night
 
Cucumber
CucumberCucumber
Cucumber
 

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