View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Testes de Monitoramento Sintético

Testes de Monitoramento Sintético são um conjunto de testes funcionais que têm como alvo um sistema ativo em produção. O foco desses testes, às vezes chamados de “watchdog”, “monitoramento ativo” ou “transações sintéticas”, é verificar continuamente a saúde e a resiliência do produto.

Por que Testes de Monitoramento Sintético

Tradicionalmente, os provedores de software confiam em testes por meio de etapas de CI/CD na conhecida pirâmide de testes (unitários, integração, e2e) para validar que o produto está saudável e sem regressões. No entanto, à medida que mais organizações hoje fornecem produtos altamente disponíveis (SLA de 99,9+), elas descobrem que a natureza de aplicações distribuídas de longa duração, que normalmente dependem de vários componentes de hardware e software, é falhar.

Para tais sistemas, a ambição das equipes de engenharia de serviço é reduzir ao mínimo o tempo necessário para corrigir erros, ou o MTTR - Tempo Médio para Reparo. É um esforço contínuo, realizado no sistema ativo/produção. Monitores Sintéticos podem ser usados para detectar os seguintes problemas:

Testes Shift-Right

Testes de Monitoramento Sintético são um subconjunto de testes que são executados em produção, às vezes chamados de Test-in-Production ou testes Shift-Right. Com paradigmas de Shift-Left que são tão populares, a abordagem é realizar testes o mais cedo possível no ciclo de desenvolvimento da aplicação. Shift-Right complementa e adiciona ao Shift-Left, referindo-se à execução de testes tarde no ciclo, durante e após o lançamento, quando o produto está atendendo ao tráfego de produção.

Blocos de Design de Testes de Monitoramento Sintético

Um teste de monitoramento sintético é um teste que usa dados sintéticos e contas de teste reais para injetar comportamentos de usuário no sistema e validar seu efeito. Os componentes dos testes de monitoramento sintético incluem Sondas, código de teste/contas que geram dados, e Ferramentas de Monitoramento colocadas para validar tanto o comportamento do sistema sob teste quanto a saúde das próprias sondas.

Sondas

Sondas são a fonte de ações de usuário sintéticas que conduzem os testes. Elas têm como alvo a interface do usuário do produto ou APIs voltadas para o público e estão executando em seu próprio ambiente de produção. Um teste de monitoramento sintético está, de fato, muito relacionado a testes de caixa-preta e normalmente se concentra em cenários de ponta a ponta do ponto de vista de um usuário.

Monitoramento

Dado que os testes de monitoramento sintético estão sendo executados continuamente, em intervalos, em um ambiente de produção, a afirmação do comportamento do sistema por meio da análise depende dos pilares de monitoramento existentes usados no sistema ativo (Logging, Métricas, Rastreamento Distribuído).

Aplicando Testes de Monitoramento Sintético

Afirmando o sistema sob testes

Testes de monitoramento sintético são geralmente estatísticos. As métricas de teste são comparadas com alguma média histórica ou em execução com uma dimensão de tempo.

Construindo uma Solução de Monitoramento Sintético

Em um nível alto, a construção de monitores sintéticos geralmente consiste nas seguintes etapas:

Monitorando a saúde dos testes

O tempo de execução das sondas é um ambiente de produção por si só, e a saúde dos testes é crítica. Muitos provedores oferecem sistemas baseados em nuvem que hospedam esses tempos de execução, enquanto algumas organizações usam ambientes de produção existentes para executar esses testes. De qualquer forma, uma estratégia de monitorar o monitor deve ser uma parte essencial dos sistemas de alerta do ambiente de produção.

Monitoramento Sintético e Monitoramento de Usuários Reais

O monitoramento sintético não substitui a necessidade de RUM. Sondas são códigos previsíveis que verificam cenários específicos, e elas não representam 100% completamente e verdadeiramente como uma sessão de usuário é tratada.

Riscos

Testar em produção, em geral, tem um fator de risco associado a ele, que não existe em testes executados durante as etapas de CI/CD. Especificamente, em testes de monitoramento sintético, o seguinte pode afetar o ambiente de produção:

são executados em um ambiente de produção e emitem logs ou rastreamentos que podem conter dados protegidos.

Frameworks e Ferramentas de Testes de Monitoramento Sintético

A maioria dos principais players de monitoramento/APM tem um produto empresarial que suporta monitoramento sintético integrado aos seus sistemas. No entanto, tais soluções são tipicamente caras.

Algumas organizações preferem executar sondas em infraestrutura existente usando ferramentas conhecidas como Postman, Wrk, JMeter, Selenium ou até mesmo código personalizado para gerar os dados sintéticos.

Conclusão

O valor dos testes em produção, em geral, e especificamente do monitoramento sintético, só existe para tipos específicos de engajamento, e há riscos e custos associados a eles. No entanto, quando aplicáveis, eles fornecem garantia contínua de que não há falhas no sistema do ponto de vista do usuário.

Recursos