Análises

Como transformamos a execução de testes de Banking com a técnica Continuous Testing

Publicado em 23 de setembro de 2020 por Redação Zoop

Escrito por Vinicius Trindade. Analista de Testes na Zoop

 

A automação de testes é, com certeza, o maior desejo dos Analistas de Qualidade de Software da atualidade.

 

Existem diversas ferramentas e diversos frameworks, dos mais simples até os mais complexos, porém, todos com o mesmo objetivo: tornar a execução dos testes contínuos mais ágeis.

 

Mas será que somente automatizar esse processo será o suficiente para tornar  a fase de execução de testes de software mais  rápida e eficaz?

 

Vem comigo que vou lhe contar  como a equipe QA/Banking da Zoop está trabalhando com uma técnica chamada Continuous Testing e como estamos conseguindo melhorar a nossa execução de testes e, consequentemente, a garantia contínua dos produtos de Banking.

 

 

Mas antes, uma observação!

Vale ressaltar que estou considerando  que se você está interessado em conhecer um pouco sobre Continuous Testing especificamente e que já utiliza alguma ferramenta ou framework de testes automatizados no qual seu projeto melhor se adapta, certo?

 

A ideia aqui é mostrar o conceito para que você possa conhecer um pouco mais sobre  Continuous Testing e com isso aplicá-lo usando a solução  da sua escolha. Beleza? Então, vamos lá!

 

 

O que é Continuous Testing

 

Continuous Testing, ou Teste Contínuo, é o processo de execução de testes automatizados como parte de um pipeline de entrega de software. 

 

O objetivo é detectar previamente falhas causadas por mudanças na aplicação em ambientes não produtivos, que podem afetar pontos sensíveis do negócio e fornecer feedbacks rápidos para que ações corretivas sejam realizadas.

 

Implementar o Continuous Testing não se resume a, simplesmente, agrupar todos os seus testes automatizados e inseri-los dentro de uma etapa do pipeline de CI/CD do seu projeto.

 

É preciso, sim, que exista uma preocupação com a automação e/ou com a arquitetura escolhida para executar os testes em si, mas também com o valor agregado que a técnica proporcionará ao produto.

 

É fundamental também considerar a maneira como o feedback será realizado com o time de desenvolvedores, para que as correções sejam implementadas de forma rápida e assertiva.

 

Além disso, deve verificar a geração de KPIs (sim, KPIs) para medir a quantidade de bugs, recorrência e outros pontos importantes que devem ser mensurados  para que melhorias no processo de desenvolvimento possam ser realizadas.

 

Sendo assim, para conseguirmos atender melhor o Continuous Testing, decidimos criar três grandes grupos de execução de testes, cada um executado em momentos diferentes do pipeline. São eles::

  • Smoke Tests;
  • Regression Tests;
  • Performance Tests.

Os grupos de testes do Continuous Testing

Agora, vamos entender melhor cada grupo de teste e quais os seus reais objetivos.

 

Smoke Tests

Consiste na execução, dentro do pipeline, de um conjunto reduzido de cenários de testes das funcionalidades e fluxos mais importantes da aplicação.

 

Ou seja aqueles que possuem um potencial risco para o negócio e para o cliente caso apresentem falhas, de forma a garantir o pleno funcionamento constante a cada atualização do software.

 

A ideia aqui é conseguir executar logo após a atualização da aplicação uma bateria de testes que seja capaz de encontrar falhas nos cenários mais críticos para a aplicação e, caso encontre, algum bug, impeça que o software seja promovido para outros ambientes.

Regression Tests

Consiste em reexecutar, de forma agendada, ou seja, fora do pipeline da aplicação, todos os cenários de testes criados para uma determinada aplicação, de forma a garantir continuamente o correto funcionamento de todas as funcionalidades e fluxos.

 

Sua execução está ligada ao sucesso da execução do Smoke Test.

 

Já passamos pela execução dos cenários mais críticos da nossa aplicação, agora precisamos garantir a qualidade dos demais cenários que ficaram de fora do Smoke Test.

 

Como a execução está fora do pipeline da aplicação, logicamente, ele não irá interferir na promoção do código para os demais ambientes, mas qualquer bug encontrado também deverá ser notificado e corrigido.

 

Caso o Smoke Test sejam executados com sucesso, o Regression Test deverá ser iniciado. Caso o Smoke Test falhe, a build também falhará e o Regression Test não será executado.

Performance Tests

Esse grupo de testes do Continuous Testing consiste em reexecutar testes de performance (carga, estresse, resistência, subida rápida, dentre outros tipos) executados anteriormente, de forma agendada (ou seja, fora do pipeline da aplicação).

 

Garantimos os cenários funcionais com a execução dos Smoke Tests e Regression Tests. Mas se a alteração que foi aplicada for responsável pela degradação da performance do aplicação?

 

Executar os testes de performance de forma contínua garantirá que o resultados obtidos durantes os primeiros testes de performance não serão degradados e que os critérios de aceite não funcionais não sejam infringidos.

 

Na imagem abaixo, podemos ver, de forma resumida, como seria o fluxo dos testes contínuos:

 

Fluxo Continuous Testing

 

 

Como pode ser visto na imagem, o sucesso do Smoke Test será determinante para que o deploy no ambiente de teste seja realizado e, posteriormente, para que os testes automatizados (ou manuais) sejam executados.

 

Em paralelo a isso os Regression Tests e Performance Tests também serão executados.

 

Vale ressaltar também que optamos por executar todos os três grupos de testes em um ambiente próprio, apartado do de teste, para que dessa forma o pipeline fique mais coeso.

 

 

O processo Continuous Testing

O Continuous Testing requer uma transformação de processos, pessoas e não somente de tecnologia.

 

Somente assim a implementação causará, de fato, o impacto positivo necessário para o negócio no qual ele está envolvido.

 

A correta implementação não exige um esforço único do QA da sua equipe, mas de todos do time para que essa iniciativa seja realmente possível.

 

Mas você deve estar se perguntando agora:

Por que preciso olhar para os meus processos e para as pessoas da minha equipe? Não é só organizar os testes e acoplá-los no pipeline de deploy das aplicações?

 

A resposta é: não!

Se você pretende implementar o Continuous Testing na sua equipe ou empresa, precisa ficar atento para alguns questionamentos, tais como:

 

  • Se o Smoke Test encontrar uma falha, quem fará  a primeira avaliação, o QA ou o DEV?

 

Todos os bugs encontrados pelo Smoke Test são críticos para o negócio e precisam de atenção dos desenvolvedores. Isso é possível na sua

equipe?

  • Se um teste de regressão encontrar uma falha, como os QAs e DEVs serão notificados  e o que fazer após a notificação?
  • Se um teste de performance encontrar uma falha, como os QAs, DEVs, DBAS, DEVOPS e outros envolvidos serão notificados? O que fazer após a notificação?
  • Se um falso positivo ocorrer, como proceder?
  • Como será feita a notificação em tempo real das falhas?
  • Como retirar métricas (KPIs) das execuções dos testes em tempo real?

 

Como você pôde ver, existem muitos questionamentos que, quando respondidos e conectados, devem configurar um processo que suportará a criação, monitoramento e melhoria dos seus testes contínuos.

 

Testes automatizados X Testes contínuos

 

Muitos tem dúvidas sobre a diferença entre os testes automatizados e os testes contínuos. Em um breve resumo, podemos dizer que:

  •  os testes automatizados funcionais têm como finalidade principal agilizar as verificações que serão feitas dentro de uma sprint ou dentro de um estágio de um cronograma de projetos para uma determinada funcionalidade ou aplicação;
  •  os testes contínuos usam os automatizados, com foco na prevenção dos bugs, principalmente nas funcionalidades ou aplicações que apresentam risco para o negócio e para o cliente.

 

Em outras palavras, enquanto os testes automatizados funcionais (ou até mesmo manuais) testarão as novas implementações, o Continuous Testing está  encarregado de garantir tudo que já foi validado por QA e já implementado em produção.

 

Lembrem-se que vivemos em um mundo que constantemente busca agilidade e, consequentemente, a redução de esforços com execução testes de suas aplicações — que com o passar do tempo crescem vertiginosamente em números de funcionalidade e cenários de testes.

 

Adotar os testes contínuos nos seus processos de verificações pode se tornar uma excelente técnica para alcançar altos níveis de cobertura e de qualidade no software.

 

Em níveis “negociais”, dependendo da maturidade do seu processo, pode se tornar um ganho na árdua corrida de lançamento de novos produtos.

 

Ferramentas que podem ser utilizadas nos testes contínuos

 

Como você pôde analisar durante todo o artigo, não mencionei nenhum ferramental específico para criar o Continuous Testing.

 

O Continuous Testing pode ser feito em qualquer ferramenta de testes funcionais e não funcionais, em qualquer ferramenta de CI/CD.

 

O mais importante aqui é a estrutura correta dos seus testes, ter um processo bem definido para que a técnica possa ser aderida e o alinhamento certeiro com o seu time.

 

Bom, espero que tenha gostado e, principalmente, ajudado você a entender um pouco mais sobre Continuous Testing.

 

Desejo que este artigo possa contribuir para você implementar essa excelente técnica também no seu time.

 

Um grande abraço!

 

Até a próxima!

 

Diga como podemos lhe ajudar!
Avalie o artigo