Seus utilizadores esperam uma experiência do cliente que atenda aos altos padrões estabelecidos pelos principais atores. Oferecer uma experiência de utilizador de alto padrão requer melhoria contínua, explicando a necessidade de entrega de software mais rápida. Mas a aceleração vem com seus efeitos colaterais de qualidade degradada sem forças contrárias.
O paradigma do Quality at Speed é um bom resumo do que estamos tentando alcançar. Precisamos entregar mudanças de software rapidamente que atendam aos requisitos de qualidade. O teste de formas tradicionais carece do elemento essencial de velocidade, explicando a necessidade de Continuous Testing em um ambiente de Contínua Delivery.
O mundo dos Testes tem evoluído de várias maneiras: shift-left, shift-right, teste em produção, entre outros. Mas o que está mudando com o Continuous Testing? O que estamos tentando alcançar? Quais são os impactos no final do dia?
Neste artigo, cobrimos as verdadeiras mudanças que vêm com o Continuous Testing:
- O Continuous Testing promove um alinhamento em toda a empresa
- Atingir o Graal do Continuous Shift-left e Shift-right
- SDLC e STLC se fundindo em ciclos de feedback unificados
- Feedback contínuo para todas as partes interessadas
- Foco na utilidade global mais do que na otimização local de silo
- Tecnologia que se torna self-service, integrada e inteligente
O Continuous Testing é um amplo conjunto de práticas. Ao iniciar, a questão das prioridades surge rapidamente. O primeiro valor do Continuous Testing é de favorecer o alinhamento de toda a empresa.
O Continuous Testing promove um alinhamento em toda a empresa
O Continuous Testing é a consequência natural das práticas de qualidade em evolução fora de seu silo de equipes de teste e QA. Testes contínuos valiosos só virão com o fornecimento de valor aos stakeholders, daí a necessidade de um alinhamento transversal em primeiro lugar.
Um pré-requisito para alinhar as prioridades do Continuous Testing é realizar um exercício Shift-Up & Spread . Essa prática é compartilhada por Iman Benlekehal, ilustrando a necessidade de um alinhamento transversal entre os stakeholders sobre as expectativas, significados e atributos de qualidade. Uma vez que este exercício tenha sido realizado, podemos nos concentrar na implementação do Graal de Continuous Testing, fornecendo a prática de teste mais valiosa na cadeia de valor do software.
As práticas centrais continuam essenciais, como realizar testes em ambientes de não produção, implementar testes automáticos, gerenciar a qualidade do código. A principal diferença com o Continuous Testing é executá-los sistematicamente, dando suporte a ciclos de feedback rápidos. Tomando o exemplo dos testes automatizados, podemos implementar um conjunto de testes completos durante semanas sem utilizá-los. Em vez disso, precisamos alinhar nosso fluxo de trabalho em just-in-time com as pequenas mudanças de software que estão sendo realizadas. Dessa forma, podemos fornecer rapidamente um feedback sobre o desenvolvimento realizado, ajustando diretamente se necessário.
Embora as práticas básicas sejam essenciais, devemos agir transversalmente, mudando para a esquerda e para a direita no ciclo de vida do software.
Atingir o Graal do Continuous Shift-left e Shift-right
As práticas básicas permanecem mais do que valiosas, enquanto sua escalabilidade está fazendo a diferença. A expansão da qualidade em todo o ciclo de vida do software é identificada com Shift-left – ao agir em upstream nos requisitos, por exemplo – e Shift-right – mais intimamente relacionado à experiência real do utilizador na produção.
De uma perspectiva Shift-left, o Continuous Testing também requer o aproveitamento da automação enquanto trabalha em incrementos de tempo mais curtos. Um exemplo concreto é verificar os casos de uso e requisitos antecipadamente, avaliando sua pertinência, atributos de qualidade e descrição. Podemos alavancar as práticas BDD ou ATDD com verificações automatizadas para o primeiro nível de verificações, complementando depois com uma revisão humana. Com o tempo, podemos construir uma melhor biblioteca reutilizável de componentes, permitindo loops de Continuous Testings mais rápidos.
Passamos para o contexto Shift-Right quando nos concentramos na experiência do utilizador, nas operações de software e no suporte. A práctica do SRE com o monitoring é um exemplo simples de Continuous Testing; estamos realizando a cada 5 minutos uma verificação das user journeys. A diferença com o Continuous Testing é aplicar o paradigma de ciclos de feedback mais frequentes com uma ampla gama de práticas. Por exemplo, o teste de carga executado a cada 6 meses antes de um grande período de vendas é útil, mas permanece arriscado. O que aconteceria se as questões estruturais fossem adicionadas 4 meses atrás e agora sejam muito difíceis de mudar? É aí que o Teste de Carga Contínua pode nos ajudar a detectar mais cedo esse tipo de problema.
Consequentemente, o Continuous Testing requer mudanças profundas do ciclo de vida existente, ou seja, entrega de software e teste de software.
SDLC e STLC se fundindo em ciclos de feedback unificados
O ciclo de vida de entrega de software (SDLC) e o ciclo de vida de teste de software (STLC) eram tradicionalmente dois processos separados. Os de Software focaram na especificação, implementação e implantação de software, enquanto os de Teste em testes. O Continuous Testing está mudando esse paradigma para ciclos de feedback unificados.
Alcançar qualidade em velocidade requer entrega rápida e com qualidade. Os ciclos de feedback unificados, incluindo software e etapas de teste, permitem que eles atendam aos requisitos de qualidade ao longo da cadeia. CI/CD com Quality Gates é um exemplo concreto e valioso: CI/CD provenientes do mundo do software são aumentados com etapas de teste automatizado em várias etapas. Podemos, por exemplo, bloquear a pipeline em um ambiente de teste para alterações de software que não atendem aos requisitos de qualidade esperados.
Uma verdadeira mudança que vem com o Continuous Testing é a inclusão de etapas sistemáticas de qualidade no processo de desenvolvimento de software. Nossos exercícios anteriores de identificação das práticas shift-left ou shift-right mais valiosas são úteis neste momento. Podemos priorizar os incrementos de Continuous Testing mais valiosos nas etapas de software identificadas. Por exemplo, podemos adicionar controles de segurança na construção ou no tempo de execução dos aplicativos.
Ao implementar o Continuous Testing, os atores irão colaborar mais estreitamente em uma missão compartilhada que eles precisam medir.
Feedback contínuo para todas as partes interessadas
As abordagens de teste tradicionais tendem a otimizar o silo de QA com código específico ou métricas de teste. Embora uma cobertura de teste possa ser uma métrica de suporte útil, ela não mede a criação de valor de uma perspectiva mais ampla. O Continuous Testing faz a diferença, fornecendo feedback contínuo para as várias partes interessadas.
Feedbacks são o pré-requisito para uma adaptação mais rápida e eficiente. O feedback contínuo que podemos alavancar com o Continuous Testing é, portanto, essencial para reduzir o risco de perda de esforço em atividades não valiosas. Um aspecto fundamental é medir a métrica certa para o propósito certo. Métricas de vaidade, como o número de testes, devem ser esquecidas. Devemos voltar novamente ao processo de Shift-up, onde identificamos o impacto esperado por nossos stakeholders.
A medição contínua traz a questão adicional de tempo. Como para pressão arterial ou perda de peso, não precisa verificar seus indicadores a cada minuto ou dia. No Continuous Testing, isso depende da métrica envolvida. Para SRE nas jornadas do utilizador, podemos medir os indicadores de serviço em um intervalo de segundos enquanto usamos gráficos de série temporal para uma perspectiva analítica.
Essa perspectiva compartilhada e global trazida pelo Continuous Testing cria o hábito de medir o impacto sobre as otimizações locais.
Foco na utilidade global mais do que na otimização local de silo
Quando inicia o Continuous Testing, a primeira pergunta é “Por onde começar?”. Não está mais limitado a um ambiente de teste para otimizar testes automatizados. Portanto, o Continuous Testing ajuda a estimular os atores a terem uma visão global, contribuindo para causar impacto para o cliente e para a organização.
Esse impacto global traz outro desafio para os atores de controle de qualidade e testes. Eles devem abraçar um espectro maior de interações para fornecer elementos de qualidade valiosos. Eles precisam se envolver com gerenciamento de produto, engenharia, infraestrutura e plataforma. A lista de chavões que exemplificam essa transformação em Continuous Testing é interminável: DevTestOps, BusOps, etc. Compartilhando transversalmente, as prioridades do ator ficarão mais alinhadas aos objetivos globais do sistema.
Depois que um ator de controle de qualidade sai de sua zona de conforto, ele enfrenta os desafios de implementar práticas mais amplas. Este desafio é válido para todos os atores com Continuous Testing; à medida que a equipa trabalha de forma transversal para aumentar o impacto das suas atividades, as suas práticas evoluíram para mais transversalidade. Um exemplo concreto é evoluir de Site Reliability Engineering (SRE) para o Customer Reliability Engineering (CRE). Não estamos mais preocupados apenas com as métricas do site ou serviço; olhamos a montante da perspectiva do utilizador.
O Continuous Testing traz o último desafio para ajudar os atores a atingir essa transversalidade, o da Tecnologia.
Tecnologia que se torna self-service, integrada e inteligente
Os loops de feedback unificados trazidos pelo Continuous Testing requerem velocidade e adaptação. Do ponto de vista da tecnologia, podemos começar aproveitando o autoatendimento e a automação para acelerar nossos cycle-times. Além disso, o paradigma unificado requer a composição das diferentes tecnologias de software e teste para funcionar em harmonia. Por último, sistemas mais inteligentes são nossa esperança para as ferramentas do amanhã.
O autoatendimento é alcançado por meio de processos automatizados amadurecidos. Estávamos acostumados a trabalhar com processos de papel, que mais tarde evoluíram para sistemas de informação. No momento, um grande conjunto de serviços padrão está disponível em autoatendimento. Pode lidar com muitos serviços governamentais através de um portal, por exemplo. Temos os mesmos estágios de maturidade para atingir em Continuous Testing. Por exemplo, garantir a implantação escalável de portas de qualidade requer uma biblioteca robusta de modelos e conectores para permitir que a equipe de engenharia os implante de forma autônoma.
A interdependência das tecnologias de teste com aquelas que fazem parte da cadeia de entrega do software cria uma pressão para a composição. Devemos ser capazes de implantar rapidamente uma nova atividade de teste dentro de um processo existente, em questão de minutos. Ao mesmo tempo, precisamos de um alto grau de flexibilidade para adaptar nossos processos; algumas ferramentas podem se tornar obsoletas, outros processos evoluem, etc. A capacidade de integração de produtos de teste é, portanto, estruturante. Nosso ecossistema em evolução não pode funcionar de forma isolada com lock-in, causando a obsolescência do sistema no médio prazo.
O último impacto do Continuous Testing na Tecnologia é fazer mais com menos esforço. Precisamos maximizar o valor e a frequência do loop de feedback. Do ponto de vista do sistema, a parte humana é o fator limitante. Podemos automatizar testes, implantação e observabilidade em produção; mas as decisões mais complexas que tomamos permanecem para os atores. É aí que o data science pode nos ajudar, automatizando matrizes de decisão complexas em escala. Nosso objetivo é a automação máxima de etapas para loops mais rápidos.
Na realidade, o Continuous Testing oferece suporte a ciclos de aprendizado contínuo para a proposta de valor do cliente.
O Continuous Testing traz Loops de Feedback Contínuo do Cliente
A palavra Teste pode induzir a erros para as necessidades do Continuous Testing. Não estamos falando sobre impactos de ou para teste. Nosso objetivo é acelerar a taxa de adaptação valiosa à experiência do utilizador e proposta de valor.
O Continuous Testing é uma prática que toma seu lugar no paradigma do Quality Engineering, restringindo a entrega de software à qualidade. Podemos analisar seu impacto no prisma da Estrutura do Quality Engineering, MAMOS:
- Methods para a implementação do paradigma de qualidade total à entrega de software
- Architecture alavancando autoatendimento, automação, composição com escalabilidade
- Management levando os atores para o high-standard de entrega contínua de valor
- Organization que permite a composição de expertise e colaboração eficiente
- Skills que requerem mais transversalidade, aprendizagem contínua e disciplina.
O Continuous Testing traz, portanto, loops de feedback contínuo do Cliente para melhorar constantemente a entrega de valor aos utilizadores. Não há fim, mas apenas uma jornada de melhoria contínua para atender e permanecer no high standard.
Quais serão seus primeiros loops de Continuous Testing mais valiosos?