SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
BPO Under The Hood
Reage a eventos
(Event Driven)
A forma mais clássica de alimentar um
sistema é através de um backoffice,
nesse tipo de aplicação o esforço do
desenvolvedor fica canalizado em
formulários e listagens (CRUD).
O BPO em contrapartida se alimenta
dos eventos que acontecem no
ecossistema (core e colab), nesse caso
o esforço do desenvolvedor fica
canalizado no desenvolvimento dos
listeners para esses eventos.
Event Driver
Formulários e listagens são testados
de forma desajeitada, através de
testes end to end, apesar da facilidade
que temos com pacotes como o Dusk o
desenvolvimento de um Listener é
bem mais simples.
Um listener pode ser testado mais
isoladamente (teste unitário) e contém
apenas código php que é mais fácil de
testar se compararmos isso com um
blade, ainda mais se contando com os
incríveis métodos de testes do Pigeon.
Vantagens
Exige um setup mais complicado com
algum tipo de gerenciamento de
processo, como Systemd ou
Supervisor.
Não temos meios eficientes de fazer
testes entre sistemas e garantir
contratos, isso é uma limitação que
enfrentamos em praticamente todas
as linguagens :(
Desvantagens
Async
Em uma abordagem event driven é
impossível garantir a ordem das
mensagens, nem tudo acontece da
forma como deveria acontecer e isso
traz uma série de dificuldades.
Essa é uma dificuldade conhecida em
arquitetura orientada a
serviços/microserviços, e existem
várias formas lidar com isso, cada
serviço pode lidar com isso de maneira
diferente.
Async
Desenvolvendo
Testes
Code Coverage
22
2
Cobertura de código é uma métrica
bem interessante para tentarmos
mensurar a qualidade da nossa suite
de testes.
Sempre que um teste passar faça o
exercício de comentar a linha do
código de produção para ver ele
falhando, isso vai evitar que você
colha um falso positivo
A cobertura do BPO é de 98.90, e
raramente ocorrem bugs em produção.
Code
Coverage
Cut Of Tests
22
2
As vezes é necessário replicar o
mesmo cenário de testes várias vezes
para conseguir cobrir com eficiência
subchamadas de métodos.
O phpunit nos permite mockar esses
métodos e testá-los separadamente
em outra classe de testes.
Ao fazer isso tenha em mente que
você vai trocar um pouco de
consistência por higiene na suite de
testes, você escolhe... fodase...
Cut Of Tests
Cardinalidade entre teste
e código
Para os testes unitários é interessante
que a estrutura de pastas da suite de
testes seja um espelho do código de
produção.
Seria legal se a classe de teste tivesse
a capacidade de cobrir apenas e
completamente sua classe
correspondente de produção.
Isso já não é verdade para um teste de
feature, onde a classe de teste leva o
nome da feature testada e
provavelmente a feature envolverá
várias classes.
Cardinalidade
O que devo testar?
22
2
Se o código está sobre sua
governança, seria legal testa-lo.
Se o código sobre sua governança está
muito foda de testar ou você está cm
preguiça, esse código deve aparecer
como não coberto.
O que
Testar?
Infection
22
2
O infection é um pacote bem
interessante para verificar a eficiência
da sua suite de testes, ele um pacote
de testes de mutação.
Basicamente o que ele faz é inserir
varias zueirinhas no seu código e ver
se a suite pega, ele mede a eficiência
por um índice chamado MSI(Mutation
Score Indicator)
Infection
Logs
Uma das dificuldades de lidar com
eventos é a observabilidade, isso
geralmente vem atrelado a
ferramentas como Newrelic e
Dynatrace mas uma estratégia de log
eficiente também pode ajudar na
observabilidade.
No BPO temos uma série de exceções
de domínio, o tratamento da exceção
sempre envolve um log.
Logar mesmo quando o dado é
processado com sucesso tem se
mostrado algo importante, atualmente
estamos sofrendo com isso uma vez
que não temos como garantir que tudo
ocorreu bem através dos logs.
Logs
Code Review
3
Fluxo
Testar feature manualmente
Verificar mensagens caindo no ladrão
Verificar auditoria(mensagens caindo
no audit)
Verificar se os logs estão sendo
escritos(no datadog em staging)
Inspecionar o código
Garantir cobertura do novo código
Verificar se o changelog está
atualizado com o novo código
Construa um roteiro de
testes
Construa um roteiro de
deploy
Dificuldades
3
Dificuldades
Listeners duplicados
Autenticação do BPO
Notificações
Dificuldade com prazo da
feature(principalmente quando
envolve o core)
Bora Almoçar!!!

Mais conteúdo relacionado

Mais procurados

Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
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
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação DiversitáriaLaís Berlatto
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
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
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlinkslides_teltools
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 

Mais procurados (20)

Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Testes Unitários usando TestNG
Testes Unitários usando TestNGTestes Unitários usando TestNG
Testes Unitários usando TestNG
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Qualidade
QualidadeQualidade
Qualidade
 
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
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação Diversitária
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
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
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 

Semelhante a Convenia - BPO Under the Hood

O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
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
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoMario Mendonça
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...Antonio Lobato
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidaderzauza
 
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
 
Verificação, validação e teste de software ágil
Verificação, validação e teste de software ágilVerificação, validação e teste de software ágil
Verificação, validação e teste de software ágilGilberto Gampert
 
ITA CE-230 Lista de Exercício 3 - Apresentação
ITA CE-230 Lista de Exercício 3 - ApresentaçãoITA CE-230 Lista de Exercício 3 - Apresentação
ITA CE-230 Lista de Exercício 3 - ApresentaçãoJefferson Andrade
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?Kamilla Queiroz Xavier
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
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
 

Semelhante a Convenia - BPO Under the Hood (20)

Teste de software
Teste de softwareTeste de software
Teste de software
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
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
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimento
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
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
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Verificação, validação e teste de software ágil
Verificação, validação e teste de software ágilVerificação, validação e teste de software ágil
Verificação, validação e teste de software ágil
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
ITA CE-230 Lista de Exercício 3 - Apresentação
ITA CE-230 Lista de Exercício 3 - ApresentaçãoITA CE-230 Lista de Exercício 3 - Apresentação
ITA CE-230 Lista de Exercício 3 - Apresentação
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
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
 
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
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 

Convenia - BPO Under the Hood

  • 2.
  • 4. A forma mais clássica de alimentar um sistema é através de um backoffice, nesse tipo de aplicação o esforço do desenvolvedor fica canalizado em formulários e listagens (CRUD). O BPO em contrapartida se alimenta dos eventos que acontecem no ecossistema (core e colab), nesse caso o esforço do desenvolvedor fica canalizado no desenvolvimento dos listeners para esses eventos. Event Driver
  • 5. Formulários e listagens são testados de forma desajeitada, através de testes end to end, apesar da facilidade que temos com pacotes como o Dusk o desenvolvimento de um Listener é bem mais simples. Um listener pode ser testado mais isoladamente (teste unitário) e contém apenas código php que é mais fácil de testar se compararmos isso com um blade, ainda mais se contando com os incríveis métodos de testes do Pigeon. Vantagens
  • 6.
  • 7. Exige um setup mais complicado com algum tipo de gerenciamento de processo, como Systemd ou Supervisor. Não temos meios eficientes de fazer testes entre sistemas e garantir contratos, isso é uma limitação que enfrentamos em praticamente todas as linguagens :( Desvantagens
  • 9. Em uma abordagem event driven é impossível garantir a ordem das mensagens, nem tudo acontece da forma como deveria acontecer e isso traz uma série de dificuldades. Essa é uma dificuldade conhecida em arquitetura orientada a serviços/microserviços, e existem várias formas lidar com isso, cada serviço pode lidar com isso de maneira diferente. Async
  • 10.
  • 14. 22 2 Cobertura de código é uma métrica bem interessante para tentarmos mensurar a qualidade da nossa suite de testes. Sempre que um teste passar faça o exercício de comentar a linha do código de produção para ver ele falhando, isso vai evitar que você colha um falso positivo A cobertura do BPO é de 98.90, e raramente ocorrem bugs em produção. Code Coverage
  • 16. 22 2 As vezes é necessário replicar o mesmo cenário de testes várias vezes para conseguir cobrir com eficiência subchamadas de métodos. O phpunit nos permite mockar esses métodos e testá-los separadamente em outra classe de testes. Ao fazer isso tenha em mente que você vai trocar um pouco de consistência por higiene na suite de testes, você escolhe... fodase... Cut Of Tests
  • 17.
  • 18.
  • 19.
  • 21. Para os testes unitários é interessante que a estrutura de pastas da suite de testes seja um espelho do código de produção. Seria legal se a classe de teste tivesse a capacidade de cobrir apenas e completamente sua classe correspondente de produção. Isso já não é verdade para um teste de feature, onde a classe de teste leva o nome da feature testada e provavelmente a feature envolverá várias classes. Cardinalidade
  • 22.
  • 23. O que devo testar?
  • 24. 22 2 Se o código está sobre sua governança, seria legal testa-lo. Se o código sobre sua governança está muito foda de testar ou você está cm preguiça, esse código deve aparecer como não coberto. O que Testar?
  • 26. 22 2 O infection é um pacote bem interessante para verificar a eficiência da sua suite de testes, ele um pacote de testes de mutação. Basicamente o que ele faz é inserir varias zueirinhas no seu código e ver se a suite pega, ele mede a eficiência por um índice chamado MSI(Mutation Score Indicator) Infection
  • 27.
  • 28.
  • 29. Logs
  • 30. Uma das dificuldades de lidar com eventos é a observabilidade, isso geralmente vem atrelado a ferramentas como Newrelic e Dynatrace mas uma estratégia de log eficiente também pode ajudar na observabilidade. No BPO temos uma série de exceções de domínio, o tratamento da exceção sempre envolve um log. Logar mesmo quando o dado é processado com sucesso tem se mostrado algo importante, atualmente estamos sofrendo com isso uma vez que não temos como garantir que tudo ocorreu bem através dos logs. Logs
  • 32. 3 Fluxo Testar feature manualmente Verificar mensagens caindo no ladrão Verificar auditoria(mensagens caindo no audit) Verificar se os logs estão sendo escritos(no datadog em staging) Inspecionar o código Garantir cobertura do novo código Verificar se o changelog está atualizado com o novo código
  • 33. Construa um roteiro de testes
  • 34.
  • 35. Construa um roteiro de deploy
  • 36.
  • 38. 3 Dificuldades Listeners duplicados Autenticação do BPO Notificações Dificuldade com prazo da feature(principalmente quando envolve o core)