Podemos ver aparecer mais vagas de engenheiro de garantia de qualidade (QAE) ou de engenheiro de qualidade (QE) na indústria do software.
Isso me fez pensar o que se esperava dessa função emergente de QE em diferentes organizações.
Às vezes, tinha a sensação de que se tratava do marketing de carreira de uma empresa, apenas adicionando “Engenheiro” às funções de controle de qualidade existentes.
Olhando para vários cargos, o QE é na verdade uma função específica que as empresas procuram.
Um Engenheiro de Qualidade pode ser visto como um camaleão por seus vários conjuntos de habilidades exigidas de outras disciplinas.
Decidi compartilhar convosco as suas várias facetas esclarecendo primeiro o porquê.
Por que precisaríamos de um engenheiro de qualidade?
Podemos refletir de outra forma, o que acontece sem um QE?
Temos funções tradicionais, como Product Owner, QA, Engenheiro de Software, DevOps trabalhando juntos em um produto, parcialmente ou totalmente alocados a equipa.
Isso é uma realidade para a maioria das organizações que estão investindo em seu produto e ciclo de vida de software.
Engenheiros de qualidade estão fazendo sentido para agilizar ainda mais a colaboração, automação e desempenho das equipes.
Por que contratar e organizar três funções se pode ter uma fazendo tudo com menos despesas?
Um dos motivos pode ser que queira continuidade da atividade em caso de ausência ou que simplesmente não encontre esse perfil híbrido.
Combinando o conjunto de habilidades de vários cargos, eles precisam, idealmente, ter bons fundamentos e experiência em Quality Assurance, complementados por outros fatos que veremos a seguir.
A Faceta de Quality Assurance
Em suas raízes, o QE precisa da perspectiva, mentalidade e habilidades de Quality Assurance.
É aqui que ele pode ter obtido uma visão transversal em todo o desenvolvimento de produtos, desde análises, requisitos, especificações, testes e gestão de defeitos.
O conhecimento da descoberta do teste e das técnicas de teste também permite ter uma visão holística dos possíveis mecanismos de verificação que podem ser usados, ao mesmo tempo que asseguram a estratégia e os planos de teste.
O seu principal valor é de traduzir os requisitos do negócio, do cliente no produto concreto que será construído, garantindo que a realidade seja ajustada às verdadeiras necessidades.
Podemos resumir as principais responsabilidades nos seguintes pontos:
- Analisar requisitos, especificações e documentos de projeto técnico para fornecer feedback oportuno e significativo;
- Criar planos de teste e casos de teste detalhados, abrangentes e bem estruturados;
- Estimar, priorizar, planejar e coordenar atividades de teste;
- Identificar, registrar, documentar completamente e rastrear bugs;
- Desenvolver e aplicar processos de teste para produtos novos e existentes de forma a atender às necessidades do cliente;
- Rastrear as métricas de garantia de qualidade, como densidades de defeitos e contagens de defeitos abertos.
A faceta de automação de teste
A garantia de qualidade e a automação de teste têm características comuns, mas ainda diferem em aspectos específicos.
O foco usual na automação nos permite desenvolver fortes habilidades e conhecimentos de teste em vários ambientes técnicos, tal como web, mobile, api, IoT, …
Eles exigem uma capacidade significativa para arquitetar testes automatizados fiáveis, reutilizáveis e sustentáveis que normalmente implementam (esperando que sejam configurados em low-code).
O seu core de Quality Assurance ajuda a saber o que deve ser automatizado ou não, em que nível de esforço e quais técnicas de teste (por exemplo, black-box ou white-box).
As expectativas da faceta de automação de teste são de:
- Projetar, desenvolver e executar scripts de automação utilizando as ferramentas necessárias, garantindo seus requisitos de fiabilidade, reutilização, manutenção e desempenho;
- Automatizar os testes de API, UI e Integração do sistema para validar os requisitos funcionais e não funcionais;
- Realize testes de regressão completos quando os bugs são resolvidos;
- Analisar a cobertura de automação para encontrar a área mais valiosa para se concentrar.
A faceta do enabler da qualidade
Um engenheiro da qualidade requer habilidades de comunicação para influenciar, ajudar e apoiar as equipes na jornada de capacitação da qualidade.
Dependendo das prioridades do produto e da equipe, um QE pode criar, compartilhar e manter ferramentas cujos usuários é diretamente a equipa.
Eles também podem atuar como embaixadores da qualidade, compartilhando regularmente em formato de conversas abertas notícias sobre concorrência, benchmark e como a indústria está usando a qualidade.
Como um arquiteto, podem sugerir melhorias estruturais no produto a partir de sua visão de ponta a ponta dos requisitos de qualidade do produto e da engenharia de software.
As responsabilidades da faceta do enabler da qualidade são listadas a seguir:
- Criar serviços que monitoram padrões de codificação arriscados e fornecer insights para o desenvolvedor;
- Convencer uma equipa a arquitetar o seu código de uma maneira diferente para torná-lo mais testável;
- Trabalhar diariamente com equipas de product, software e operações para promover a melhoria contínua e mentalidade de qualidade no desenvolvimento de produtos.
A faceta de peer de qualidade
Com mais proximidade, contato e compartilhamento com os membros da equipe, eles podem atuar como peer reviewers da qualidade.
Eles podem fazer uma revisão em várias etapas do desenvolvimento do produto, fazendo uma grande diferença no alinhamento que podem fornecer.
Por exemplo, eles podem usar suas habilidades de engenharia de requisitos desde a visão inicial do negócio e do produto, fazendo perguntas importantes desde o início.
Eles podem então acompanhar os requisitos e suas traduções ao longo do ciclo de vida: especificações funcionais, especificações técnicas, codificação, teste, release.
Seu conjunto de habilidades híbridas permite que eles realizem técnicas de teste específicas, como exploratório, e ajudam na resolução de problemas operacionais com a equipa.
As seguintes responsabilidades de pares de qualidade são fundamentais, pois os mecanismos de revisão por pares são mecanismos fortes para melhorar a qualidade:
- Estabelecer contato com equipes internas (por exemplo, desenvolvedores e gerentes de produto) para identificar os requisitos do sistema;
- Trabalhar em conjunto com equipes internas, solucionando problemas e depurando problemas em produção e outros ambientes;
- Suportar desenvolvedores para treiná-los em técnicas de teste eficientes (incluindo testes exploratórios)
A faceta do DevOps
Essa faceta visa a integrar a qualidade no ciclo de vida de desenvolvimento de software (SDLC), aproveitando a automação.
Encontraremos a implementação de mecanismos tradicionais de CI/CD que provavelmente integrarão quality gates by design a partir de seu histórico de controle de qualidade.
Sua perspectiva dupla de engenheiros de qualidade e de software também permite que avaliem diretamente a estratégia de ramificação entre o desenvolvimento e os artefatos de teste.
Complementarmente, sua faceta de automação de teste os fez sofrer em algumas situações. Portanto, eles pensam em como lidar com dados de teste e gerenciamento de ambiente de teste (TDM e TEM).
Devem também focar-se em operações, a sua qualidade e redução de riscos. Por exemplo, permitindo os testes em A/B, ativações graduais e feature-flags.
Sua faceta DevOps contém as principais responsabilidades:
- Manter e melhorar os processos e configuração de CI/CD;
- Analisar e compilar diretrizes de configuração de implantação com base no desempenho, estabilidade e outras atividades de teste de ponta a ponta;
- Manter e fornecer os ambientes necessários para o desenvolvimento (ambientes de teste de integração e aceitação do usuário), incluindo gerenciamento de dados de teste;
- Aumentar a capacidade das pipelines da equipa, disponibilizando o ambiente certo para testar as plataformas.
A faceta de operações e SRE
Esta última faceta é um subconjunto de Operações e SRE com foco na garantia de qualidade.
Os QE não devem necessariamente lidar com a gestão de infraestrutura e operações, mas certamente precisam saber como o produto funciona e está operacionalizado.
Se os requisitos de disponibilidade da experiência do cliente forem de 99,99%, eles terão que verificar nas especificações técnicas a tradução em configuração de infraestrutura, como implantações multirregionais.
Mesmo que esse não seja um requisito declarado, a disponibilidade do serviço e outras métricas do relatório Accelerate são importantes. Por exemplo, o Lead-time for changes ou Change Fail Rate (CFR).
Poderíamos até ver as responsabilidades como de controle de qualidade:
- Analisar incidentes para identificar o ponto ideal para evitar recorrências no futuro
- Construir um heatmap holístico dos resultados dos testes de desempenho em relação a certos produtos e requisitos.
As facetas de QE devem ser atribuídas dentro da organização
Entendemos que um Engenheiro de Qualidade é um perfil híbrido completo.
Uma função de QE consiste em capacitar, implementar e melhorar a qualidade e colaboração do produto de ponta a ponta.
Antoine Craske
Pode ser difícil encontrar esses perfis. Seu futuro poderia ser mais sobre o treinamento de outros perfis para criar esse mix de competências.
As habilidades mencionadas podem levar anos para serem adquiridas e, mais essencialmente, para serem praticadas em um conjunto diferente ambientes para serem fortes o suficiente.
Em organizações ditas flat, cloud-native, modernas e com capacidade para atrair os melhores talentos, pode provavelmente conseguir contratar Quality Engineers.
Para outras organizações, o caminho de compor as várias responsabilidades em diferentes funções pode ser o primeiro passo: um forte defensor do QA, um QA se tornando um QAE com foco em automação, um engenheiro de DevOps.
Do meu ponto de vista, o mais importante é ter as várias responsabilidades definidas, implementadas e melhoradas nas organizações.
Então, se tiver uma, duas ou três pessoas compondo essas habilidades, com composição diferente por equipes, isso é secundário. Manter um alinhamento com comunidades de prática seria mais importante, por exemplo.
De qualquer forma, mesmo que encontre um muito bom QE, precisará de outro para evitar um ponto único de falha (SPOF) em sua organização.
Seu design organizacional e continuidade também se referem à qualidade, certo?
Referências
https://cloudybt.medium.com/what-does-a-software-quality-engineer-do-eb7b4c9a7f95
https://medium.com/slalom-build/quality-engineer-learning-roadmap-fddfcb77409e
https://world.hey.com/joaoqalves/on-hiring-qa-engineers-75dfa472
https://www.smartrecruiters.com/GuidanceSoftwareInc/80602474-software-quality-assurance-engineer