Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Entrega Contínua
Do zero ao sucesso
“Depois de 6 meses desenvolvendo,
meu cliente disse que não era bem
o que ele queria…”
“Não aguento mais essas plannings
de 2 dias!”
“Ah vai se f#d&, mudança de
escopo de novo?!”
“Alguém sabe onde tá o documento
de como se publica essa aplicação?”
“Ué, o Dioguinho
não veio hoje?”
“Ele passou o fim de
semana
implantando
sistema...”
Quem somos noses
O que é entrega
contínua?
O que é entrega contínua?
O que é entrega contínua?
Feature
Framework
O que é entrega contínua?
Metodologias ágeis ajudam muito
neste modelo.
Caso de Estudo
Sistema X
Ambiente X
Fase de Concepção
Fase de Concepção
Definição de
Produto
Requisitos /
User Stories
MVP / Roadmap
Estratégia de
Projeto
Fase de Concepção - Definição do Produto
Fase de Concepção - Requisitos / US
Fase de Concepção - MVP / Roadmap
Fase de Concepção - Estratégia de Projeto
Fase de Concepção - Estratégia de Projeto
Fase de Concepção - Estratégia de Projeto
Desenvolvimento
Nosso cenário
● Sistema Financeiro.
● Falhas podem ocasionar multas e
processos judiciais.
● Crítico em níveis de integraç...
Nosso cenário
● App nativo Android (5+)
● App nativo iOS (9+)
● Site responsivo
○ Smartphone
■ Chrome
■ Safari
○ Tablet
■ ...
Planning
Feature
Tasks de
Dev
Tasks de
Integração
Telas
Regras de
Negócio
Serviços
Contratos
Mocks
Automatização
Exemplo: Contract First
Exemplo: Contract First
POST /api/payment/
Fluxo: Contract First
Virtualização de Serviços
http://wiremock.org/
Cenários criados rapidamente
Gravação
Extensão
Automação!
O que automatizar?
Quanto automatizar?
Por que testar em vários níveis?
Testes Unitários (40%) - Desenvolvimento
Serviços (30%) - SOAP/REST
User Interface (20%) - Desktop
User Interface (20%) - Web
User Interface (20%) - Web
User Interface (20%) - Mobile
User Interface (20%) - DDT
"Data-driven testing (DDT) é um
termo usado na área de Teste de
Software para descrever testes
...
User Interface (20%) - DDT
Cenário: Login
Dado que estou na tela de Inicio do App
E eu clicar no menu "Minha Conta"
E pree...
E se eu quiser rodar em Dev/Tst/Hml?
E se eu quiser rodar em Dev/Tst/Hml?
export let ParamsDev = {
clienteSucesso: "12930485960",
senhaSucesso: "123456",
clien...
Como gerenciar a criação dos dados?
Como gerenciar a criação dos dados?
gulp.task('rename-params', function () {
var params = 'data/params.' + util.env.params...
Exploratórios / Manuais (10%)
Depois de tantos testes...
Desenvolvimento até aqui
Resultado Disso:
Feature /
User Story
API
Site
App
TODO DOING DONE
Continuous Integration
Continuous Delivery
Git Flow
Git Flow
Master
Develop
Feature
Branch
Push to
Server
- Code Lint
- Unit Test
Merge
Request
- Code Lint
- Unit Test
- Auto...
Tools
JENKINS DOCKER FASTLANE HOCKEYAPP
TESTFLIGHT
GOOGLE
PLAY BETA
AWS DEVICE
FARM
APPIUM CALABA.SH
KUBERNETES
SLACK
Produção
Firebase Crash Reporting
Firebase Crash Reporting
Firebase Crash Reporting
Firebase Crash Reporting
Graylog - Log Management
Graylog - Log Management
Analytics
Analytics
Analytics
Hoje:
+ 1 000 000
de usuários ativos
Hoje:
+ 85 000 000
ações de usuários
Obrigado!
ben-hur@outlook.com
benhurott
diracijunior@gmail.com
diracijunior
ernestosbarbosa@outlook.com
ernestosbarbosa
Upcoming SlideShare
Loading in …5
×

Entrega Contínua - do Zero ao Sucesso

69 views

Published on

Palestra apresentada no TDC POA 2017 em parceria com José Ernesto Barbosa e Ben-hur Ott.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Entrega Contínua - do Zero ao Sucesso

  1. 1. Entrega Contínua Do zero ao sucesso
  2. 2. “Depois de 6 meses desenvolvendo, meu cliente disse que não era bem o que ele queria…”
  3. 3. “Não aguento mais essas plannings de 2 dias!”
  4. 4. “Ah vai se f#d&, mudança de escopo de novo?!”
  5. 5. “Alguém sabe onde tá o documento de como se publica essa aplicação?”
  6. 6. “Ué, o Dioguinho não veio hoje?” “Ele passou o fim de semana implantando sistema...”
  7. 7. Quem somos noses
  8. 8. O que é entrega contínua?
  9. 9. O que é entrega contínua?
  10. 10. O que é entrega contínua? Feature Framework
  11. 11. O que é entrega contínua? Metodologias ágeis ajudam muito neste modelo.
  12. 12. Caso de Estudo
  13. 13. Sistema X
  14. 14. Ambiente X
  15. 15. Fase de Concepção
  16. 16. Fase de Concepção Definição de Produto Requisitos / User Stories MVP / Roadmap Estratégia de Projeto
  17. 17. Fase de Concepção - Definição do Produto
  18. 18. Fase de Concepção - Requisitos / US
  19. 19. Fase de Concepção - MVP / Roadmap
  20. 20. Fase de Concepção - Estratégia de Projeto
  21. 21. Fase de Concepção - Estratégia de Projeto
  22. 22. Fase de Concepção - Estratégia de Projeto
  23. 23. Desenvolvimento
  24. 24. Nosso cenário ● Sistema Financeiro. ● Falhas podem ocasionar multas e processos judiciais. ● Crítico em níveis de integrações com sistemas terceiros. ● Inovação dentro do parceiro.
  25. 25. Nosso cenário ● App nativo Android (5+) ● App nativo iOS (9+) ● Site responsivo ○ Smartphone ■ Chrome ■ Safari ○ Tablet ■ Chrome ■ Safari ○ Desktop ■ Chrome ■ Safari ■ Firefox ■ Edge ● API Backend em Micro Serviços
  26. 26. Planning Feature Tasks de Dev Tasks de Integração Telas Regras de Negócio Serviços Contratos Mocks Automatização
  27. 27. Exemplo: Contract First
  28. 28. Exemplo: Contract First POST /api/payment/
  29. 29. Fluxo: Contract First
  30. 30. Virtualização de Serviços http://wiremock.org/
  31. 31. Cenários criados rapidamente
  32. 32. Gravação
  33. 33. Extensão
  34. 34. Automação!
  35. 35. O que automatizar?
  36. 36. Quanto automatizar?
  37. 37. Por que testar em vários níveis?
  38. 38. Testes Unitários (40%) - Desenvolvimento
  39. 39. Serviços (30%) - SOAP/REST
  40. 40. User Interface (20%) - Desktop
  41. 41. User Interface (20%) - Web
  42. 42. User Interface (20%) - Web
  43. 43. User Interface (20%) - Mobile
  44. 44. User Interface (20%) - DDT "Data-driven testing (DDT) é um termo usado na área de Teste de Software para descrever testes feitos usando uma tabela de condições diretamente como dados de entrada e respostas, bem como, os processos onde configurações e controles não possuem informação escrita diretamente no código (Hard-Coded)." - Wikipedia Cenário: Login Dado que estou na tela de Inicio do App E eu clicar no menu "Minha Conta" E preencher o cpf "01203254950" E preencher a senha "minhasenha" Quando eu clicar no botão acessar Entao deve exibir o resumo da minha conta Cenário: Erro no login Dado que estou na tela de Inicio do App E eu clicar no menu "Minha Conta" E preencher o cpf "01203254950" E preencher a senha "minhasenhaerrada" Quando eu clicar no botão acessar Entao deve exibir um toast com a mensagem de erro
  45. 45. User Interface (20%) - DDT Cenário: Login Dado que estou na tela de Inicio do App E eu clicar no menu "Minha Conta" E preencher o cpf <cpf> E preencher a senha <senha> Quando eu clicar no botão acessar Entao <resultado> Exemplos: | cpf | senha | resultado | | 12930485960 | 123456 | deve exibir o resumo da minha conta | | 37483937282 | erroab | deve exibir um toast com a mensagem de erro |
  46. 46. E se eu quiser rodar em Dev/Tst/Hml?
  47. 47. E se eu quiser rodar em Dev/Tst/Hml? export let ParamsDev = { clienteSucesso: "12930485960", senhaSucesso: "123456", clienteErro: "37483937282", senhaErro: "errodev" } export let ParamsTst = { clienteSucesso: "03840392839", senhaSucesso: "654321", clienteErro: "01928374650", senhaErro: "errotst" } export let ParamsHml = { clienteSucesso: "37483629087", senhaSucesso: "123654", clienteErro: "29839840987", senhaErro: "errohml" } Cenário: Login Dado que estou na tela de Inicio do App E eu clicar no menu "Minha Conta" E preencher o cpf <cpf> E preencher a senha <senha> Quando eu clicar no botão acessar Entao <resultado> Exemplos: | cpf | senha | resultado | | clienteSucesso| senhaSucesso| deve exibir o resumo da minha conta| | clienteErro | senhaErro | deve exibir um toast com o erro |
  48. 48. Como gerenciar a criação dos dados?
  49. 49. Como gerenciar a criação dos dados? gulp.task('rename-params', function () { var params = 'data/params.' + util.env.params + ".ts"; if (fs.existsSync(params)) { return gulp.src(params) .pipe(rename('params.ts')) .pipe(gulp.dest('build/data/')) }else{ files = []; fs.readdirSync('data').forEach(file => { files.push(" " + file); }) throw new Error("ARQUIVO DE CONFIGURAÇÃO INEXISTENTE. Tente estes Arquivos existentes:" + files); } });
  50. 50. Exploratórios / Manuais (10%)
  51. 51. Depois de tantos testes...
  52. 52. Desenvolvimento até aqui
  53. 53. Resultado Disso: Feature / User Story API Site App TODO DOING DONE
  54. 54. Continuous Integration Continuous Delivery
  55. 55. Git Flow
  56. 56. Git Flow Master Develop Feature Branch Push to Server - Code Lint - Unit Test Merge Request - Code Lint - Unit Test - Automated Test Develop - Need two dev approvals Release - Automated Test - Publish to Beta - Publish to QAMaster + Tag
  57. 57. Tools JENKINS DOCKER FASTLANE HOCKEYAPP TESTFLIGHT GOOGLE PLAY BETA AWS DEVICE FARM APPIUM CALABA.SH KUBERNETES SLACK
  58. 58. Produção
  59. 59. Firebase Crash Reporting
  60. 60. Firebase Crash Reporting
  61. 61. Firebase Crash Reporting
  62. 62. Firebase Crash Reporting
  63. 63. Graylog - Log Management
  64. 64. Graylog - Log Management
  65. 65. Analytics
  66. 66. Analytics
  67. 67. Analytics
  68. 68. Hoje: + 1 000 000 de usuários ativos
  69. 69. Hoje: + 85 000 000 ações de usuários
  70. 70. Obrigado! ben-hur@outlook.com benhurott diracijunior@gmail.com diracijunior ernestosbarbosa@outlook.com ernestosbarbosa

×