A entrega contínua de valor requer mais do que o clean code.
A arquitetura permite estruturar os vários elementos tecnológicos para atender aos objetivos de hoje, mantendo a flexibilidade para os de amanhã. É um requisito para sobreviver em um contexto onde a adaptação contínua é a norma.
O Quality Engineering é o paradigma que restringe a cadeia de valor do software à entrega contínua de valor atuando nos 5 pilares de sua estrutura, MAMOS: Methods, Architecture, Management, Organization, Skills.
Cobrimos em um artigo anterior o referencial de Methods, combinando gestão de mudanças e práticas de qualidade. Neste artigo, enfocamos a Arquitetura do Quality Engineering, que inclui os elementos de tecnologia.
Segue a QE Unit para aceder às 60 práticas de Quality Engineering e mais.
Metodologia
Este guia é um trabalho em andamento a ser adaptado com base no feedback e com probabilidade de evoluir dentro da Estrutura de Quality Engineering, MAMOS: Methods, Architecture, Management, Organization, Skills.
Cada prática foi classificada entre Qualidade, Velocidade e Complexidade pela pontuação máxima que representa a prioridade de implementação. Este artigo é apenas um excerto, pode acessar a priorização completa dessas práticas disponíveis aqui.
A arquitetura de uma transição de Quality Engineering
Enquanto uma organização de Quality Engineering se concentra em aspectos menos técnicos, elementos fundamentais de arquitetura são comumente encontrados nas empresas de tecnologia mais valiosas que alcançam um alto nível de qualidade. Mas para atingir o nível deles, precisa começar de algum lugar.
As práticas listadas se concentram em apoiar as primeiras transições para o Quality Engineering com uma maturidade emergente de arquitetura. As práticas visam, portanto, estabelecer as bases necessárias nessa fase e para o desenvolvimento futuro de qualquer ecossistema tecnológico.
Os elementos de arquitetura mais valiosos são divididos ao longo do ciclo de vida de entrega do software. Tudo começa com práticas de codificação que promovem uma estrutura de qualidade integrada. Ao longo da cadeia, os elementos tecnológicos concretos de teste e implantação são os blocos de construção principais.
Práticas de Arquitetura
Coding
Repositório de código
A organização do código é essencial antes que qualquer codificação ocorra. Tentar construir uma casa sobre fundações inexistentes ou mal projetadas levará a um retrabalho caro e, no pior dos casos, a um desastre. Escolher, projetar e definir com eficácia uma arquitetura de repositório é essencial para conduzir uma organização de Quality Engineering sustentável.
Existem essencialmente duas opções entre monorepo e multipo, onde existem variações possíveis. Se está começando do zero, considere seriamente um monorepo com uma arquitetura modular. Com o tempo, pode evoluir dependendo do seu contexto, como a Google.
Pode ler os seguintes artigos para se aprofundar este tema:
- A história épica de Mono vs. Multi-Repo não é nova
- Os modelos de repo mainstream práticos que precisa conhecer
- Os 6 Antigos Mitos sobre Mono e Multirepo, descriptados
- Mono ou Multirepo : Tem a ver com Quality Engineering
- As 7 ferramentas básicas para capacitar seu repositório
Coding bootstrap
Os engenheiros de software precisam desenvolver o mais rápido possível os recursos de negócios para iterar na proposta de valor. Ao mesmo tempo, os engenheiros de qualidade devem apoiar a equipe com ambientes, automação e outros componentes.
Definir um bootstrap de código reutilizável padrão nos diferentes contextos de engenharia desbloqueia economias de velocidade e escala para a organização de Quality Engineering. pode implementá-los por modelos de projetos e tecnologia incorporando boas práticas de controle de versão e lançamento.
API-driven
Um traço comum de organizações de Quality Engineering de alto desempenho é criar serviços com velocidade e confiabilidade. O uso de APIs nos diferentes artefatos de software das equipes multifuncionais e de engenharia acelera a composição e a reutilização de serviços na organização com esforço e sincronização reduzidos.
Esse princípio arquitetônico permite que a organização seja dimensionada com mais rapidez e forneça automação e autoatendimento com mais facilidade. Essa capacidade de API dentro da organização deve ser aplicada para serviços internos e externos para manter um ritmo geral de inovação rápido. pode se inspirar no mantra da API da Amazon definido por Jeff Bezos.
Teste
Arquitetura de teste
Projetar um sistema de teste eficaz é essencial para práticas de teste minimalistas, sob demanda e modulares em Quality Engineering. A arquitetura para teste é essencial para atender aos requisitos de testabilidade esquecidos ou ignorados, como disponibilidade de dados e suporte a técnicas de teste.
Uma arquitetura de teste consiste em organizar o repositório de teste associado ao referencial de requisitos, definindo as aderências entre o código e os artefatos de teste e identificando como integrar as diferentes soluções de automação de teste. A partir daí, os engenheiros de qualidade podem trabalhar na construção eficaz dessas soluções.
Para entender o mesmo com seu repositório de código, também pode ler este artigo pode superar o dilema do repositório de teste. Agora.
Bootstrap de test
Similarmente aos bootstraps de codificação, as organizações de Quality Engineering se beneficiarão com o fornecimento de componentes de teste reutilizáveis por tipologia para a equipe. Eles permitirão que as equipes multifuncionais implementem rapidamente o teste mínimo, ao mesmo tempo que simplificam o trabalho de suporte e manutenção dos engenheiros de qualidade.
Todos nós encontramos projetos com testes de unidade comentados. O valor de bootstraps de teste confiáveis é evitar essa situação, fornecendo recursos de teste de unidade integrados, bem como testes automatizados em pipelines de CI/CD. Esse esforço de configuração, que é difícil para engenheiros de software, é, portanto, removido durante as iterações de negócios, fazendo a diferença para o Quality at Speed.
Quality Gates
A melhor maneira de garantir que os testes sejam executados é torná-los parte integrante do processo de entrega de software. Quality Gates são uma forma sistemática de acionar testes e interromper a implantação com base em critérios específicos em um pipeline de implantação. Eles podem estar ativos desde o ambiente de desenvolvimento até os de produção, com implantação gradual que veremos a seguir.
Quality Gates pode começar apenas com portas de teste de unidade, para então adicionar segurança, qualidade de código e portas de automação de teste em cada ambiente até a produção. Essa prática é muito eficaz com a coding bootstrap, incluindo as quality gates em standard, e os test bootstrap.
Deployment
CI/CD
A equipe precisa de automação do pipeline de construção, implantação e liberação. O produto, a equipe e a tecnologia podem mudar, mas fornecer modelos de CI/CD são bases obrigatórias para as equipes. Eles podem se concentrar na construção do produto com qualidade, enquanto os engenheiros de qualidade podem melhorá-los em paralelo posteriormente.
Esse pipeline pode garantir o número de ambientes usados pelo aplicativo, os testes realizados por meio do Quality Gates e oferecer suporte à progressive deployment. Além disso, essa padronização ajuda a obter medidas para práticas mais avançadas, como fluxo de valor. precisa proteger essas fundações para todos ou pelo menos os principais projetos usados.
Progressive Deployment
A melhor maneira de validar uma hipótese é testando-a. As equipes de produto, portanto, se empenharão muito na experimentação de recursos para testar ideias. Mas fazer isso em todo o escopo dos usuários, enquanto o produto ainda não está em um bom nível de qualidade, é perigoso para a empresa.
As implantações progressivas são a forma de separar a implantação e a liberação do aplicativo de vários modos, como dogfooding, versão canário, teste A / B. A implantação progressiva é melhor implantada com bases de CI/CD e Quality Gates.
Pipeline de observabilidade
A equipe requer observabilidade para apoiar a medição, a resolução de problemas e a melhoria contínua do produto. A criação de um pipeline de observabilidade desde o início garante que esse requisito não será perdido. Com o tempo, a equipe melhorará a cobertura e os recursos de observabilidade, dependendo de suas necessidades e retrospectivas.
Framework
Essas práticas o prepararão para uma jornada de transformação para uma organização de Quality Engineering. As práticas irão apoiá-lo na manutenção da melhoria contínua e adaptação com capacidades, processos sistemáticos e aprendizagem organizacional.
Este conteúdo centra-se no domínio da Arquitectura, deixando as práticas de Métodos, Gestão, Organização e Competências numa área separada. O objetivo é enriquecê-lo dentro da comunidade e aprimorar seu conteúdo.
Pode aceder a versão completa do Framework de Quality Engineering contendo a classificação das práticas em Qualidade, Velocidade e Esforço. Também contém a opção de customizar a prioridade de determinadas práticas e já te deixa com um plano de ação.
Segue a QE Unit para mais Quality Engineering.
A Definição, Manifesto e Estrutura da Quality Engineering estão disponíveis por meio de Creative Common Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).