Elias Nogueira Eu ajudo engenheiros de software (backend, frontend, qa) a desenvolver um mindset de qualidade e entregar software livre de erros para que eles possam se tornar os melhores profissionals 🏢 Backbase 👨💻 Principal Software Engineer 📍 Utrecht, the Netherlands 🌐 eliasnogueira.com 🐦 @eliasnogueira bit.ly/eliasnogueira
Globalcode – Open4education DISCLAIMER ESTA APRESENTAÇÃO MOSTRA COMO UMA EMPRESA ESTÁ TENTANDO IMPLEMENTAR A ABORDAGEM SHIFT- LEFT DE UMA PERSPECTIVA TÉCNICA. ISTO VAI MOSTRAR A NOSSA ABORDAGEM, LUTAS E O QUE PODEMOS VER É UMA BOA PRÁTICA BASEADA NO NOSSO CONTEXTO.
Globalcode – Open4education Backend Engineers Frontend Engineers Quality Engineers TWO PAIRS OF SPECIALIZED ENGINEER PER TEAM DELIVERING CLOUD-NATIVE APPS
Globalcode – Open4education O que estamos tentando alcançar O que Feedback mais rapido Por que Para entregar um produto mais confiável Como Verificando cada estágiondo SDLC automaticamente
Globalcode – Open4education O que estamos tentando alcançar Estado atual Executamos testes (excluindo unit e integration) em ondas porque nós temos diferentes dependências internas entre microserviços. Os testes são executados em 3 ondas: Onda 1: principais microserviços Onda 2: microserviços mais importantes (perspectiva do cliente) Onde 3: demais microserviços Tempo para release: 1 semana
Globalcode – Open4education O que estamos tentando alcançar O que nós queremos Queremos nos livrar do processo “em ondas” (intermediário entre CI/CD) e aplicar a abordagem de Sift-Left Testing para ter um CD (Continuous Deployment): Sem mais 1 semana de release Branch principal “ready to production” ”True” Continuous Delivery
Globalcode – Open4education Testes que fazemos, e automatizamos Unit (backend, frontend) Integration (backend, frontend) Database Testing Data migration Database upgrade API Functional E2E Web
Globalcode – Open4education Passos não técnicos User Story Acceptance Criteria e2e Integration Unit Decisão compartilhada em onde testar Acceptance Criteria
Globalcode – Open4education Passos não técnicos: quality engineering Quality Advocate > Testers Trabalho em conjunto: todos somos engenheiros de software QE’s trabalhando próximo a todas as áreas QE como papel técnico Conhecimentos em 4 linguagens (Java, Typescript, Grooby, Bash) Experiência em 4 domínios Qualidade DevOps Frontend Backend
Globalcode – Open4education Automatizar primeiro Todos os testes são automatizados (sim, em todos os níveis) Definimos, em conjunto, o nível adequado Grande foco em testes nas APIs Todo trabalho manual é transformado em um script Testes pelos QEs são feito em paralelo com o desenvolvimento, não depois de pronto
Globalcode – Open4education Constante refatoramento Analisando o tempo de execução dos testes em todos os níveis nós entendemos que: Precisávamos de uma ingestão de dados mais rápida Alguns testes devem ficar em layers específicas, sem duplicidades Uso inteligente de pre e pos condições de teste Evitar ao máximo steps desnecessários
Globalcode – Open4education Pipelines Tudo é um pipeline Processo normal do software como um processo CI/CD Execução de qualquer ação que seria manual Ciclo complete com multi-pipelines
Globalcode – Open4education Ambientes Efêmeros Nós implementamos uma abordagem de criação de ambientes efêmeros usando Kubernetes (helm) Isso nos ajuda a criar ambientes “on the fly” de 3 a 5 minutos, baseados em: Qualquer versão anterior Desenvolvimento corrente Imagens docker baseadas em branchs de desenvolvimento
Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit Integration Database API Web Backend | Frontend Engineer Backend Engineer Frontend Engineer Quality Engineer Quality Engineer Quality Engineer Quality Engineer Sim, QEs também escrevem e revisam testes de integração, movendo testes funcionais para a camada de integração
Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit Integration Database API Web Backend | Frontend Engineer Automatico Quality Engineer Quality Engineer Backend Engineer Frontend Engineer Quality Engineer Testes executados automaticamente durante o processo de merge
Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit Integration Database API Web Backend | Frontend Engineer Quality Engineer Quality Engineer Quality Engineer Backend Engineer Frontend Engineer Quality Engineer Execução mais rápido por ter movido os testes de integração e revisado problemas estruturais (pre e pos condições)
Globalcode – Open4education O que queremos atingir Backend | Frontend Engineers enviam suas mudancas Quality Engineers trabalham em paralelo Multi Pipelines para executar testes em todos os níveis antes do merge
Globalcode – Open4education Já chegamos lá? Não! Definimos OKRs para as melhorias técnicas Constante mentoria técnica em todos os papéis Trabalho em conjunto “Negócio x Técnico”
Obrigado! SCAN ME Você pode me seguir no Twitter @eliasnogueira e também encontrar os exemplos práticos desta apresentação. Não deixe de simular os exemplos no código!