Bem-vindo a esta segunda parte do artigo. Presumo que, neste ponto, possa estar começando a automação de teste do zero, atingindo uma barreira crítica ou sentindo alguns sinais de alerta da dívida de teste.
Agora estamos avançando para construir uma riqueza de automação de testes em primeiro lugar e mantê-la. Este é um verdadeiro desafio em ecossistemas e organizações dinâmicos, quando o valor da automação de teste não é necessariamente compartilhado. É aqui que entra em jogo o Quality Engineering, que restringe o sistema à qualidade.
Este artigo compartilha os principais elementos do Quality Engineering que serão lançados em breve no e-book (mais informações no final do artigo). Abordamos como aplicar a arquitetura, metodologia, organização, habilidades e gerenciamento para a automação de testes, destacando os principais benefícios.
Essas práticas vêm de nossa mesa redonda “Esqueça a dívida de teste: construa riqueza de automação de teste”. Agradeço a cada um dos participantes por sua participação e contribuição:
- Joel Oliveira, Evangelista de Teste de Software e Garantia de Qualidade, Palestrante, Treinador, Gerente de Programa Sênior, Consultor Independente
- Rafael Amaral, Engenheiro de Software Sênior em Teste na Farfetch
- Filipa Nogueira, Líder da Equipe de Engenharia na La Redoute
Vamos começar definindo riqueza em automação de teste.
Segue a QE Unit para aceder a mais conteudo exclusivo de Quality Engineering.
O que são testes automatizados com valor acrescentado?
A riqueza da automação de testes está relacionada à criação de valor. É a definição da qualidade ser valor para quem importa, conforme afirma Michael Bolton. Podemos precisá-lo no contexto da engenharia de software.
O valor da automação de teste não está nos testes em si; é sobre os impactos nas metas gerais da organização. Portanto, devemos dar um passo para trás da única perspectiva de teste: o que podemos trazer para o perímetro geral de engenharia? Mais importante ainda, o que podemos trazer para o negócio? É importante ter uma visão ampla. Podemos oferecer qualidade sem testes. Qualidade também significa maximizar resultados com o mínimo de esforço, daí a necessidade de remover desperdícios.
A riqueza da automação de testes é definida pelas partes interessadas: seus usuários, seus negócios e equipes de TI. A automação de teste é geralmente valorizada para melhorar a experiência do usuário, mesmo na produção, aproveitando SRE e observabilidade. Também pode significar uma proposta e criação de valor mais rápida para seus usuários, permitindo tempos de ciclos mais rápidos de alterações de software. As métricas do Accelerate são indicadores de suporte que pode usar como referência. As perguntas são poderosas para entender melhor a classificação dos critérios: Estamos tentando reduzir o risco? Ganhar confiança em nossas entregas? Aumentar a confiabilidade?
A riqueza a ser construída é, portanto, contextual, construindo sobre seus stakeholders e alavancando benchmarks. O entendimento compartilhado que pode criar já é uma riqueza, simplificando as atividades nas prioridades certas. Um erro comum da riqueza da automação de teste é fazer o paralelo errado com o dinheiro. Para testes automatizados, nem sempre precisamos mais deles. Less is more (isso também é um debate sobre dinheiro, não no escopo deste artigo).
Definir o valor é o primeiro passo. O próximo é traduzi-lo à realidade.
Arquitetando a riqueza da automação de teste
Conhecemos as metas e prioridades compartilhadas dos exercícios anteriores. No entanto, não sabemos necessariamente como traduzir os requisitos de nosso plano de automação de teste de maneira eficaz. Esse é o objetivo da arquitetura, transformar ideias em realidade.
Nossa primeira ação é definir o quê, para então priorizar seu escopo. O foco é geralmente definir os casos de uso mais valiosos, alinhando as técnicas de teste adequadas. Um escopo específico pode ser ainda mais valioso quando executado manualmente ou nem executado. Este passo é importante para esse tipo de escolha. Agora pode pensar “E quanto às pirâmides de teste?”.
As pirâmides de teste são modelos amplamente conhecidos para diversos usos. Eles nos ajudam a entender as diferentes camadas de testes que podemos realizar. Além disso, eles podem ajudar a definir as prioridades de automação de testes. Deve-se ter cuidado nesta etapa, pois as pirâmides de automação de teste podem ser diferentes das genéricas. As pirâmides de teste também carecem de um elemento essencial, as prioridades de negócios.
Podemos genericamente dizer para usar o nível mais baixo possível para um teste específico. Esse é um raciocínio sólido. Mas não se esqueça dos objetivos do negócio e do seu contexto. Um resumo é focar extensivamente em testes unitários sendo mais rápidos, mais locais, etc. Mas em contextos específicos, sua prioridade será na experiência do usuário, e pode não ter um triângulo perfeito.
Este é o ponto, use modelos e guias, mas não se esqueça de ver o quadro geral com bom senso. A próxima atividade é arquitetar a implementação em incrementos realistas.
Defina as metodologias de automação de teste
A entrega de atividades que otimizam nosso esforço pode ser aprimorada com metodologias. Destacamos aqui os principais métodos para aplicar o Quality Engineering à automação de teste.
As metodologias Agile, Pareto e LEAN são úteis para serem consideradas nessa fase. Não pode planejar tudo, mas pode pelo menos arquitetar para a incerteza. Uma abordagem pragmática é trabalhar em incrementos com time-boxing, priorizando o valor primeiro. Os rituais ágeis podem ser aproveitados para o planejamento, resolução de problemas e rituais retrospectivos.
Já podemos nos sentir prontos para começar no próximo sprint. Afastando nossa experiência de teste de dívidas, podemos lembrar que “é sobre as decisões que tomamos e não tomamos”. Para antecipar o efeito das feedback loops atrasados, temos que esclarecer o esforço de manutenção de testes desde o início. Isso significa concretamente alocar tempo para otimização, rework e talvez remoção de testes (mais sobre isso a seguir). Deve ser definido e limitado para conter a entropia.
Nossa arquitetura de automação de testes é boa, mas deve se encaixar no quadro geral. A próxima área a ser arquitetada é a organização.
Arquitetura a organização para suportar a criação de valor
As tarefas de automação de teste serão concluídas pelos atores que fazem parte de um sistema maior. Portanto, é importante garantir que o contexto organizacional favorece o alcance de seus objetivos. Trata-se de evitar dívidas e desperdícios.
O primeiro elemento é sobre o ajuste da Arquitetura de Tecnologia. Seu trabalho no design de automação de teste focou mais nas aderências internas e diretas. Precisamos dar um passo atrás no ecossistema geral de TI, interno e externo, para reduzir o risco de surpresas de integração. Precisamos novamente atuar como Questionadores, pois o conhecimento está mais fora do nosso escopo. O pipeline de CI/CD padrão é sustentável? E quanto à escalabilidade da infraestrutura? Quais são as limitações? Podemos realizar testes em produção? Qual é o dimensionamento dos ambientes de teste?
Esse é o tipo de pergunta que precisa usar para validar ou invalidar suas hipóteses. Alterar um plano no papel é relativamente fácil, mesmo que frustrante. É muito melhor do que bater na parede durante a execução, perdendo o investimento anterior. Uma prática importante para manter o nível de risco é uma das iterações rápidas de ponta a ponta. Dessa forma, pode verificar rapidamente a integração transversal criando bases reutilizáveis com antecedência. A parte organizacional a seguir é sobre pessoas.
O desenho organizacional apóia o cumprimento de uma missão compartilhada por um grupo de atores, denominado equipe, ao colaborar para objetivos comuns. A lei de Conway esclarece o impacto da organização no sistema de colaboração resultante. Arquitetar a organização é essencial para garantir a entrega de tarefas específicas e dar suporte à arquitetura de tecnologia que projetamos. A equipe pode ser organizada para duas otimizações: fluxo ou recursos. O orientado a fluxo é o mais adequado para automação de teste em sprint que suportará loops de feedback rápido de mudanças de software.
Os processos são os pré-requisitos para interações eficazes.
Interações no coração do desempenho organizacional
As interações dos atores também precisam de organização por meio de processos, também conhecidos como metodologias. Já cobrimos alguns deles com Agile e Lean. Identificamos processos específicos necessários para construir riqueza de automação de testes.
O primeiro é definir uma Definition of Done compartilhada, incluindo etapas específicas para automação de testes. Não é necessariamente para automatizar todas as tarefas. O mais importante é nos questionarmos sobre a pertinência sistematicamente. Questões complementares devem ser adicionadas, como manutenção, otimização ou exclusão de testes específicos.
A cultura também impacta o comportamento do ator. Não discutiremos o tema neste artigo. As diretrizes gerais de “o teste é de responsabilidade de todos” são superficiais, sem detalhar sua justificativa. A conclusão é que os vários elementos que compartilhamos favorecem uma missão e uma cultura compartilhadas. As responsabilidades ainda exigem um mínimo de afetação para a clareza das expectativas sobre os papéis. A qualidade das interações também contribui para a qualidade do trabalho realizado. As atividades de revisão por pares são, portanto, essenciais para a implementação.
A última parte que não vem por último durante a implementação é assegurar as habilidades de soft skills e de automação de teste. Os contribuidores para esses testes são os mais prioritários. As partes interessadas secundárias terão os inputs necessários durante as sessões colaborativas no início. Habilidades significam que orçamento e tempo devem ser alocados, de preferência com uma abordagem contínua. Aprender é praticar e requer tempo. Raramente é um esforço único. Ignorar esta etapa pode resultar em uma série de copiar/colar de vários fóruns, longe de criar uma riqueza de automação de teste.
A realidade só pode seguir uma implementação real.
Agir, medir e adaptar-se com o Quality Engineering
A automação de testes com o Quality Engineering é um processo iterativo que depende da entrega, medição e adaptação incrementais. É aqui que é útil saber o que e como detectar os sinais de alerta da dívida de teste.
O principal direcionador de nossas ações deve permanecer alinhado ao porquê e à definição de valor comum aos stakeholders. Nosso trabalho é preencher continuamente essa lacuna de valor. O valor deve ser medido para garantir o impacto de nossas ações e possibilitar sua comunicação.
Riscos e incertezas fazem parte do jogo; não há atalhos. Os métodos são importantes para seguir um processo estruturado. O ecossistema em mudança é um mundo de solução contínua de problemas que pretendemos dominar.
Capacitar a automação de teste com o Quality Engineering suporta um valor comumente definido, onde os testes automatizados fazem parte da criação de valor geral. Não se trata de acumular o número máximo de testes, caindo em armadilhas de métricas de vaidade.
A esse propósito, remove os testes que não são valiosos.