A área do Quality Assurance está a evoluir de forma mais ou menos rápida na sua transversalização nas organizações.
Falar sobre um “coach ágil” ou “test enabler” está se tornando comum para funções de qualidade, uma vez inspiradas pelo controle de qualidade no sector industrial.
Uma qualidade apenas no final da cadeia, a posteriori muitas vezes mostrou os seus limites e dificuldade de integração ao produto.
Ao mesmo tempo, o movimento DevOps se espalhou amplamente no ecossistema.
Mesmo que muitas vezes seja percebido como um assunto particularmente técnico, seus aspectos culturais, organizacionais e de gestão de mudanças são os mais importantes a serem abordados.
No cruzamento do Agile, Developer Experience e automação em escala, o Platform Engineering apoiada por uma equipe multifuncional surge como um modelo poderoso.
A emergência do Platform Engineering
Podemos reverter o problema nos perguntando: o que acontece sem platform engineering?
Cada equipe resolverá problemas semelhantes em silos, em paralelo e provavelmente de forma diferente.
Implementaremos serviços que carecem de interoperabilidade, escalabilidade e facilidade de manutenção.
Imagine tentar integrar sistemas sem um padrão de integração, com diferentes ambientes, cabeçalhos de API ou gerenciamento de autorização.
Esses tipos de impactos permanecem limitados em pequena escala e irão crescer com o crescimento da organização.
Os pontos mais estruturantes que levam a uma abordagem de Engenharia de Plataforma são:
- A necessidade de aceleração e escalabilidade organizacional
- A capacidade de integrar tecnologias complexas
- Controle dos custos necessários para o crescimento lucrativo
Assim como um produto digital nas mãos dos clientes, diferentes atores podem acessar uma plataforma suporte à automação, self-service, etc.
A plataforma é frequentemente suportada por uma equipa dedicada, ao serviço de outras equipas.
Figura 1: Um exemplo de equipe de Engenharia de Plataforma https://wichon.com/platform-engineering
E o controle de qualidade nisso?
A horizontalização das interações e a aceleração dos ciclos de entrega também estão levando o controle de qualidade a se reinventar.
Para garantir o seu impacto no ecossistema de entrega de software, não deveria evoluir também de forma transversal, prestando serviços aos vários intervenientes?
A falta de inclusão de qualidade nas diferentes etapas do processo é um ponto de dificuldade muitas vezes levantado.
Mesmo que compartilhemos no BDD, o Teste em Produção, as práticas raramente são encontradas integradas ao ciclo de desenvolvimento.
Precisamos aprender e acelerar o que amadureceu em outras disciplinas.
O valor proporcionado pela qualidade será acrescido pela sua transversalidade e impacto global na organização e nas suas cadeias de valor.
Idealmente, queremos alcançar uma Qualidade Integrada gerenciada e liderada por vários jogadores: product owner, desenvolvedor, testador, etc.
É por isso que estou convencido de que estruturar uma abordagem de Engenharia da Qualidade com uma visão de plataforma pode aumentar o impacto da qualidade na organização.
Além de uma perspectiva da Developer Experience e de Developer Productivity, a qualidade deve garantir que o valor comercial entregue seja o esperado para os clientes, enquanto fornece um sistema produtivo de suporte.
Portanto, falamos mais em Enterprise Quality Engineering e Engineering Productivity.
Portanto, a qualidade deve fazer o trabalho de todos?
Essa é uma possibilidade, mas não será sustentável ou escalável, como o ecossistema DevOps percebeu.
Eventualmente, um gargalo se materializará e a qualidade será reduzida.
Como alternativa, a qualidade pode ser vista de forma positiva, como fornecedor de serviços de valor agregado para os diferentes atores.
Contra-intuitivamente, é esse investimento em uma plataforma que permite aos atores de qualidade passarem mais tempo em colaboração com seus usuários.
Deve, como no DevOps, automatizar tarefas e solicitações repetitivas, melhorando seu desempenho e escalabilidade.
A qualidade, portanto, não tem que fazer o trabalho de todos, mas deve ter sucesso na integração das diferentes dimensões da qualidade nos processos da organização.
Podemos falar sobre um Quality Engineering Platform?
Estou convencido de que é uma via interessante a ser explorada e verificada por meio de experiências concretas.
Vamos analisar alguns casos de uso de tal plataforma e qual seria o seu diferencial.
No início dos ciclos de desenvolvimento, existe a necessidade de identificar as diferenças de requisitos, que devem ser alinhadas nas verificações.
Para os casos de uso, gostaríamos de poder validá-los automaticamente com o BDD. Não apenas entre o product owner e o testador, mas tornando-os disponíveis para o desenvolvedor em suas iterações de desenvolvimento.
Uma vez em produção, também gostaríamos que os principais casos de uso fossem supervisionados.
Essas necessidades são frequentemente atendidas por processos de silos manuais e semi automáticos.
Alinhamos casos de uso com tickets de desenvolvimento, integrando o BDD em testes manuais e, felizmente, uma estrutura de BDD para o desenvolvedor.
A parte de supervisão da produção ficará nas mãos das operações, consideradas um pouco técnicas demais para o negócio.
Não são esses processos que a qualidade busca integrar sistematicamente?
Os serviços que uma plataforma de qualidade pode fornecer
Os serviços devem atender a vários requisitos.
Devem estar disponíveis em autoatendimento, automatizados, atendendo às necessidades de segurança, rastreabilidade e desempenho.
Hoje, é possível fornecer as primeiras partes desta plataforma.
A sistematização de quality gates em modelos de pipeline de CI/CD é a primeira etapa.
Podemos então adicionar testes da implantação na produção, que serão complementados pela supervisão das jornadas do usuário identificadas por seus casos de uso.
Amanhã, podemos imaginar o fornecimento de serviços mais maduros e de valor agregado, como o caminho percorrido no DevOps.
Poderíamos permitir que o Product Owner escolha quais viagens do cliente ele deseja supervisionar e como ser notificado.
O desenvolvedor pode ativar a bi-sincronização do repositório de casos de teste com seus casos de banco de dados local.
Por que não integrar o crowd testing automaticamente via APIs a cada entrega, abrindo os tickets necessários e notificando as equipas?
A Qualidade requer uma Quality Engineering Platform para acelerar o seu impacto
A minha convicção é que a qualidade deve evoluir na automação e na prestação de serviços.
Isso equivale a construir uma plataforma real em torno das necessidades dos vários atores do ecossistema.
Esta plataforma irá apoiar as diferentes fases do projeto, desde a definição da necessidade até à operação.
O ecossistema da qualidade estará cada vez mais integrado ao ecossistema tecnológico, dependendo dos avanços obtidos no desenvolvimento de software e do DevOps.
Essa maturidade crescente é o que permitirá uma melhor interoperabilidade e prestação de serviços por meio de uma plataforma de controle de qualidade.
Uma plataforma que não esquecerá que tem como objetivo final de permitir uma melhor colaboração entre os atores.