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.

[GUTS-RS] Evento Outubro 2017 - Entrega contínua do zero ao sucesso

Você já parou para pensar sobre como garantir a qualidade de projetos com entrega contínua? É possível utilizar as técnicas de automação de testes não apenas como garantia em testes de regressão, mas como ferramenta de apoio para CI/CD e monitoramento? Nesta palestra Diraci Junior, Ben-Hur Ott e Ernesto Barbosa apresentaram estratégias e abordagens que podem ser utilizadas para a melhoria de processos de qualidade em equipes ágeis visando aumentar o nível de confiança das entregas de software.

  • Be the first to comment

  • Be the first to like this

[GUTS-RS] Evento Outubro 2017 - 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. Extensão
  35. 35. Automação?
  36. 36. Automação!
  37. 37. O que automatizar?
  38. 38. Quanto automatizar?
  39. 39. Por que testar em vários níveis?
  40. 40. Testes Unitários (40%) - Desenvolvimento
  41. 41. Serviços (30%) - SOAP/REST
  42. 42. User Interface (20%) - Desktop
  43. 43. User Interface (20%) - Web
  44. 44. User Interface (20%) - Web
  45. 45. User Interface (20%) - Mobile
  46. 46. 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
  47. 47. 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 |
  48. 48. E se eu quiser rodar em Dev/Tst/Hml?
  49. 49. 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 |
  50. 50. Como gerenciar a criação dos dados?
  51. 51. 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); } });
  52. 52. Exploratórios / Manuais (10%)
  53. 53. Depois de tantos testes...
  54. 54. Desenvolvimento até aqui
  55. 55. Resultado Disso: Feature / User Story API Site App TODO DOING DONE
  56. 56. Continuous Integration Continuous Delivery
  57. 57. Git Flow
  58. 58. Git Flow MASTER DEVELOP Merge Request
  59. 59. Git Flow DEVELOP
  60. 60. Git Flow DEVELOP FEAT / XYZ BRANCH
  61. 61. Git Flow DEVELOP FEAT / XYZ Merge Request
  62. 62. Git Flow DEVELOP FEAT / XYZ Merge Request
  63. 63. Git Flow MERGE REQUEST UNIT TESTS CODE ANALYSIS AUTOMATED TESTS
  64. 64. Git Flow MERGE REQUEST DEVELOP JENKINS DOCKER FASTLANE + HOCKEYAPP SLACK
  65. 65. Git Flow: Release DEVELOP RELEASE/1.0.0 BRANCH
  66. 66. Git Flow: Release DEVELOP RELEASE/1.0.0 BRANCH
  67. 67. Git Flow: Release BRANCH RELEASE JENKINS DOCKER FASTLANE + BETA SLACK
  68. 68. Git Flow: Release
  69. 69. Git Flow: Production RELEASE/1.0.0 MASTER MERGE REQUEST TAG 1.0.0
  70. 70. Produção
  71. 71. Firebase Crash Reporting
  72. 72. Firebase Crash Reporting
  73. 73. Firebase Crash Reporting
  74. 74. Firebase Crash Reporting
  75. 75. Graylog - Log Management
  76. 76. Graylog - Log Management
  77. 77. Graylog - Log Management
  78. 78. Graylog - Log Management
  79. 79. Analytics
  80. 80. Analytics
  81. 81. Analytics
  82. 82. Analytics
  83. 83. Hoje: 1 000 000 de usuários ativos
  84. 84. Hoje: 85 000 000 de ações de usuários
  85. 85. Obrigado!
  86. 86. Bônus – Dicas de Leitura Direto ao Ponto Criando produto de forma enxuta. Paulo Caroli Entrega Contínua Como entregar software de forma rápida e confiável. Jez Humble e David Farley Ernesto Barbosa ernestobarbosa.com.br Diraci Junior diracijunior.com Ben-hur Ott medium.com/@benhur.ott

×