Você está na página 1de 6

Testes sintéticos

Uma abordagem que pode antecipar inconsistências em produção

Gabriel Santos
Oct 21, 2020 · 5 min read

Technology photo created by onlyyouqj on Freepik

Existem várias maneiras de monitorar o comportamento dos usuários no ambiente de


produção, sejam através de ferramentas que coletam dados de uso do sistema, como o
Google Analytics ou Hotjar, ou até mesmo ferramentas que avaliam questões de
performance da aplicação.

Porém, as estratégias acima são consideradas passivas e não promovem 100% de


acurácia na detecção de problemas no ambiente de produção, visto que dependem de
usuários reais utilizando a aplicação para que a coleta de feedback ocorra.
Imaginem um cenário em que a indisponibilidade de um módulo da aplicação fosse
detectada somente quando um usuário acionasse o suporte para reclamar o ocorrido.
Dureza, né?

Os testes sintéticos podem te ajudar a mitigar estas situações e ao longo desse artigo,
irei explicar as definições e um case real de sucesso da aplicação desta estratégia.

O que são os testes sintéticos?


Também chamados de “monitoramento sintético”, são basicamente a execução de
scripts automatizados em produção, os quais simulam transações de usuários naquele
ambiente. Além disso, alguns alertas podem ser criados, caso ocorra alguma situação
fora do normal, como o exemplo citado na introdução do artigo, quando um módulo
do sistema estava indisponível.

Com o alerta disparado, a equipe responsável por aquele módulo poderia ser acionada
e já tomar alguma providência para entender e resolver a indisponibilidade. Nesse
cenário, o tempo de reparo foi absurdamente menor, se comparado em relação a
quando o próprio cliente reporta o problema, pois a situação foi identificada de forma
proativa.

Vários tipos de scripts podem ser criados, em diferentes camadas da aplicação. Neste
artigo, publicado no site martinfowler.com, é descrito um case onde o Selenium
WebDriver foi utilizado para executar testes sintéticos a cada cinco minutos.

Além da criação dos scripts pelo próprio time responsável pela aplicação como, por
exemplo, ferramentas open source, existem várias opções de produto no mercado
especializados em monitoramento sintético, a exemplo da Sematext Synthetic .

Monitoramento de Usuários Reais (RUM) x Monitoramento Sintético (STM)


Twin brothers, a vintage photo created by luis_molinero on Freepik

Apesar de semelhantes por serem realizadas em ambiente de produção, estas


abordagens apresentam diferenças relevantes.

Real User Monitoring (RUM) ou Monitoramento de Usuários Reais é um tipo de


abordagem passiva, pois depende do uso da aplicação pelos próprios usuários para que
os dados sejam coletados. A depender do tipo da aplicação, códigos JS são injetados
nas páginas para obter informações relacionadas a desempenho e tempos de resposta,
os quais são consumidos pela ferramenta de monitoramento.

Além disso, ferramentas como o FullStory também se encaixam dentro do contexto do


RUM, pois gravam sessões de uso da aplicação por usuários reais.

Já na abordagem sintética, todo o contexto de uso é controlado, ou seja, as ações


executadas são predefinidas e executadas proativamente. Além disso, pelo fato do
fluxo ser executado periodicamente, os desenvolvedores ganham feedback rápido a
respeito da implementação feita em produção, podendo corrigir possíveis
inconsistências antes que os usuários finais as encontrem.

Por que deveríamos utilizar testes sintéticos?


Os testes sintéticos são um agregador de valor ao monitoramento de usuários reais,
pois com os dados obtidos em ambas as abordagens, é possível ter uma visão mais
ampla do que está acontecendo no ambiente de produção. Além disso, há quatro
objetivos principais que podem te auxiliar a decidir se é legal utilizar esta abordagem:
Validar se os fluxos de negócio estão funcionando, mesmo que sejam pouco ou
raramente utilizados pelo cliente;

Antecipação de inconsistências;

Coleta de dados em regiões geográficas onde a aplicação não é muito utilizada;

Verificar o comportamento da aplicação em dispositivos e plataformas suportados,


a fim de identificar algum problema de compatibilidade.

Lembrando que os testes sintéticos devem ser utilizados como uma abordagem
complementar a todo tipo de teste que deve ser aplicado antes de um deploy em
produção.

Case C6 Bank
No episódio 40 do Hispers on the Road, especialistas da área de qualidade do C6 Bank
relataram a experiência da utilização de testes sintéticos, que são focados na
experiência do usuário.

Eles relataram que o principal ganho obtido com a implementação do monitoramento


sintético foi a velocidade, entregando features já monitoradas, pois os scripts
utilizados são reaproveitados dos que já foram criados para realizar os testes em outros
ambientes pré-produção. Houve também ganho de velocidade de reação frente aos
eventuais problemas que são detectados no monitoramento.

Além disso, eles elencaram outros benefícios:

Coleta de dados reais;

Feedback rápido para os times;

Foco do teste em monitoria, garantindo a informação de que algo quebrou em


produção;

Antecipação de inconsistências;

Medição de dados de infraestrutura, otimizando o escalonamento de servidores.

Os testes foram aplicados no backend da aplicação, sendo executados periodicamente.


Eles tiveram de adaptar a execução dos cenários, pois o contexto financeiro envolve
normas e regras relacionadas a proteção de dados dos usuário.
Para saber mais detalhes do case, vocês podem ouvir o episódio do podcast neste link.

Os testes sintéticos podem trazer informações valiosas se implementados


corretamente, paralelos à monitoração real dos usuários da aplicação. Entretanto,
antes de utilizar esta abordagem, é importante verificar se o processo de testes está
maduro o suficiente para suportá-la, a exemplo de testes automatizados já serem
implementados e gerenciados satisfatoriamente em ambientes pré-produção.

Além do mais, é importante mapear os riscos de implementação, custos


computacionais e definir quais métricas serão escolhidas para realizar o
monitoramento. Essas informações são insumos para definir os possíveis alertas que
serão disparados quando alguma inconsistência for identificada pelos testes.

Vocês já conheciam esta abordagem antes de ler o artigo? Conhecem ou tem alguma
experiência que queira compartilhar? Vamos discutir sobre isso nos comentários, pois o
assunto é bem interessante! #hugs

Usuário sintético x usuário real by Giphy

Referências
Hipsters.Tech - Testes sintéticos no C6 Bank;
Flávia Falé e Serge Gebhardt - Synthetic Monitoring;

CloudQA - What is Synthetic Testing? ;

Freyja |Raygun - What is Synthetic Testing? A definition and how it compares to


Real User Monitoring;

Pingdom - Synthetinc Testing;

PerformanceLab - Synthetinc Testing;

Dynatrace - Synthetic Monitoring;

Sematext - Get Started With Synthetic Monitoring;

Sematext - Real user Monitoring versus Synthetic Monitoring;

SmartBear - What is Synthetic Monitoring;

CatchPoint - The Future of Synthetic Testing is Everything from Everywhere;

Ankush Thakur - 11 Synthetic Monitoring Tools for Your Online Business;

Rigor - 5 Must-Have Features of Top Synthetic Monitoring Tools.

Thanks to Cristhiane Jacques and Marlon Almeida. 

Testes De Software Testing Testes Sintéticos Medium Brasil QA

About Help Legal

Get the Medium app

Você também pode gostar