O documento discute as práticas de teste e qualidade no PagSeguro, incluindo: 1) testes ágeis executados frequentemente para detectar defeitos cedo; 2) testes de contrato para garantir a qualidade das entregas de microserviços; 3) monitoramento e acompanhamento de problemas para apoiar entregas contínuas.
1. André Abe Vicente
Especialista de Qualidade PagSeguro
Julho/2017
Agile e Testes
Como estamos garantindo a Qualidade das nossas entregas
2. AGILE E TESTES @PAGSEGURO-UOL
‣ Testes & Agile (Msc. ICMC - USP)
‣ [2012 - Atual] PagSeguro@UOL
‣ Prover ferramentas para facilitar o trabalho
e melhorar a produtividade dos times
‣ Canais e Parcerias, novas bandeiras
bandeiras de Voucher, sandbox e devs
André Abe Vicente
3. TREINAMENTO AGILE TESTING AUTOMATION
Características Agile Testing
‣ Executado com frequência para detectar defeitos o mais cedo
possível (ciclos iterativos e curtos).
‣ Testando sob o ponto de vista do cliente (aceitação).
‣ Execução de testes manuais por meio de testes exploratórios.
‣ TDD: Explorar, projetar, desenvolver e testar
‣ Continuous Integration e Continuous Delivery
4. TREINAMENTO AGILE TESTING AUTOMATION
Características Agile Testing
‣ The Whole-Team-Approach: Todo mundo no time de
desenvolvimento é igualmente responsável pela
qualidade e sucesso do projeto
‣ Software de qualidade em um
prazo que maximize o valor para
o negócio.
‣ Trabalho de todo o time
‣ Guiar o código, ajudar o time a
aprender
‣ Como a aplicação deve
funcionar
‣ Definition of Done
5. AGILE E TESTES @PAGSEGURO-UOL
2012 - Atual
Escalabilidade: aumento dos times de P&D,
Produtos, Comercial...
Venda Presencial (2012): NFC,
Leitor Tarja e Bluetooth, Pré-Pago e Moderninha
Agile & Testes no PagSeguro
Scrum (2008)*
6. AGILE E TESTES @PAGSEGURO-UOL
Evolução PagSeguro
2015 2016 2017 ...2007 2012
Inicio PS Mobile
Migração
Monolítico
Apache Mesos
http://bit.ly/ps-constelacao
http://bit.ly/ps-mesos
Monolítico
1.6 MLOC
+60 times
Quantidade de Requisições
≈29 MI
Requisições/dia
XP Novas Tecnologias
Right-Size Services
7. AGILE E TESTES @PAGSEGURO-UOL
Evolução PagSeguro
2015 2016 2017 ...2007 2012
Inicio PS Mobile
Migração
Monolítico
Apache Mesos XP Novas Tecnologias
Right-Size Services
http://bit.ly/ps-constelacao
http://bit.ly/ps-mesos
* Survey com devs PagSeguro (amostra)
Perfomance do time, confiança na entrega, experimentar…
8. AGILE E TESTES @PAGSEGURO-UOL
Práticas de Desenvolvimento e Qualidade
10. AGILE E TESTES @PAGSEGURO-UOL
Qualidade e Testes
Outros
‣ Mocks: Wire-mock, Mockito, Powermock, Hamcrest, Mock-server
‣ Documentação: TestLink, Confluence + Jira
‣ JS: casperjs, phantomjs, phantomcss, karma, ava, nyc, jasmine,
mocha, yadda (BDD), istanbul (coverage)
‣ Service/API Testing (Manual): Postman, SoapUI
‣ Mobile: Espresso
11. AGILE E TESTES @PAGSEGURO-UOL
Servidores de Aplicação e Servidores Web
‣ Jboss
‣ Tomcat
‣ Jetty
‣ Netty
‣ Apache Mina
Banco de dados
‣ Oracle
‣ MySQL
‣ Cassandra
‣ MongoDB
‣ Elasticsearch
Front-end
‣ React.js
‣ Angular.js
‣ Vue.js
‣ Handlebars.js
‣ Mustache.js
Linguagens de programação
‣ Java
‣ C
‣ JavaScript/Node.js
‣ Go
‣ Shell Script
‣ Groovy
‣ SQL
‣ CSS
‣ HTML
Tecnologias no PagSeguro
by @amaia e @astro
12. AGILE E TESTES @PAGSEGURO-UOL
Tecnologias no PagSeguro
Programação reativa
‣ Spring Reactor
‣ Vertx
‣ ReactiveX
Cache
‣ Memcached
‣ Infinispan
‣ Hazelcast
‣ Ehcache
Ferramentas de gerenciamento
de configuração
‣ Ansible
‣ Puppet
‣ Vagrant
‣ Terraform
Gerenciador de recursos distribuídos
‣ Apache Mesos
‣ Chronos
‣ Marathon
by @amaia e @astro
14. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ QAs e Devs
Entendimento das Tecnologias (Ex.: Filas) + Arquitetura
‣ Reutilização (catálogo de serviços) e docs (Swagger)
‣ Mocks e Monitoramento para ambiente de testes
15. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
http://bit.ly/microservice-testing-mf
16. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ QAs e Devs
Entendimento das Tecnologias (Ex.: Filas) + Arquitetura
‣ Reutilização (catálogo de serviços) e docs (Swagger)
‣ Mocks e Monitoramento para ambiente de testes
Sam Newman - https://www.oreilly.com/learning/building-microservices-testing
17. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ Testes de Contrato (Contract Testing)
‣ "Quando fazemos o deploy de um novo serviço em produção,
nossas mudanças não podem quebrar os consumidores"
‣ Premissa: praticamente impossível saber todas as formas que
o consumidores irão utilizar os nossos serviços.
‣ Consumidor: fornece uma suite de testes que especifica as
iterações necessárias e o formato.
‣ Fornecedor: deve concordar com o contrato e por meio dos
testes verificar que não está quebrado.
18. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ Testes de Contrato (Contract Testing)
‣ https://www.thoughtworks.com/radar/techniques/consumer-driven-contract-
testing
http://bit.ly/microservice-testing-mf
19. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ Testes de Contrato (Contract Testing)
‣ https://www.thoughtworks.com/radar/techniques/consumer-driven-
contract-testing
20. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ Testes de Contrato (Contract Testing)
‣ http://bit.ly/contract-attlasian
‣ https://pact.io
21. AGILE E TESTES @PAGSEGURO-UOL
Microservice Testing
‣ Testes de Contrato (Contract Testing)
‣ http://bit.ly/contract-attlasian
‣ https://pact.io
Swager Validator
27. AGILE E TESTES @PAGSEGURO-UOL
Monitoração e Troubleshoot de problemas
‣ Acompanhamento Delivery e Pós
‣ Monitoração Operações, Relatórios de Erros 500, Banco
‣ Acompanhamento Funcionalidades (Business Dashboards,
Erros)
Payment Gateway Real - Time Monitoring with Splunk!
Marcio Ghiraldelli @ SplunkConf 2013
28. AGILE E TESTES @PAGSEGURO-UOL
Perfil QA e Agile Testers
‣ Dimensão de Negócio
‣ BDD | Comunicação | Especificação
‣ Dimensão Técnica
‣ Skills desenvolvimento | Pair com Devs | TDD e Código Limpo
Automação de Testes| Testes de Perfomance e Segurança
‣ Dimensão DevOPS
‣ Pipelines | Continuous Integration | Tarefas Repetitivas
* https://www.thoughtworks.com/insights/blog/agile-tester-30
by Daniel Amorim - Thoughtworks
29. AGILE E TESTES @PAGSEGURO-UOL
Perfil QA e Agile Testers
‣ Formação sólida em TI
Conceitos de teste | Desenvolvimento | Automação
SQL | Agile | ...
‣ Investigação de Problemas
Arquitetura | Processamento Assíncrono | Logs
Linux | Banco | ...