Entenda o Que são Testes de Produção e Como Executá-Los

Entenda o Que são Testes de Produção e Como Executá-Los

Algumas pessoas podem olhar para o teste em produção de forma negativa, equiparando-o ao lançamento de recursos não testados ou produtos defeituosos com baixo desempenho e taxas de retenção ruins.

No entanto, o teste em produção é uma etapa crucial do processo de desenvolvimento de software. Ele permite que os engenheiros de Garantia de Qualidade (QA) examinem o comportamento real do usuário na fase pós-lançamento. Além disso, a execução de testes em um ambiente de produção adiciona mais uma camada de segurança em tempo real contra bugs.

Neste artigo, abordaremos os tipos e benefícios do teste em produção. Você também aprenderá sobre seis práticas para realizar os exames e métricas que indicam testes de produção bem-sucedidos.

Baixar Glossário Completo de Desenvolvimento Web

Teste em produção se refere ao exame contínuo de um ambiente ativo após a implementação do software. Há muitos tipos de teste, incluindo integração, liberação incremental, teste de carga e controle de feedback.

Por Que Testar em Produção

A criação de um ambiente de preparação leva muito tempo e o resultado pode não corresponder ao produto real. Portanto, muitos desenvolvedores incluem o teste em produção como uma fase complementar após exames pré-implementação.

Nesta seção, abordaremos cinco razões pelas quais você deve executar testes num ambiente de produção.

Melhor da Precisão dos Testes

O principal benefício do teste em produção é obter resultados mais precisos, já que você faz isso no mesmo ambiente em que o produto será utilizado. Saber que os usuários experimentarão a mesma funcionalidade verificada nos testes aumentará a confiança da equipe.

No entanto, isso pode não acontecer em ambientes de staging. Mesmo se você replicar a produção, determinados elementos podem ter dados que não são exatos ou opções de configuração diferentes. Isso pode afetar os resultados do teste.

Aumento da Frequência de Implementação

O lançamento frequente de novos códigos ou recursos durante o teste em produção também melhora a agilidade. Você pode responder às solicitações dos clientes de forma mais flexível, liberando as alterações conforme necessário.

Além disso, o teste em produção permite desenvolvimentos orientados por flags com uma funcionalidade de sinalizador de recurso automático em mente. Isso significa que você pode implementar e reverter quaisquer modificações negativas de forma imediata e segura.

Garante uma Transição Suave Durante o Teste

O teste em produção ajuda você a aprender e experimentar como os usuários reagem a um recurso ou código específico.

Por exemplo, ao lançar novos recursos, os engenheiros de controle de qualidade realizam o teste em produção para verificar se os recursos do software funcionam corretamente. Em seguida, eles usam várias ferramentas analíticas para executar os testes A/B e coletar o feedback dos clientes.

Além disso, o teste em produção permite que você gerencie o sinalizador de recursos e as ferramentas analíticas de forma independente. Você também pode integrar ambos para obter os melhores resultados.

Limita os Danos

A maneira mais eficiente de limitar os danos é testando na produção. Com isso, você pode notar defeitos em tempo real e implementar diretamente medidas de segurança e patches.

O lançamento gradual de novos códigos ou recursos pode evitar que implementações ruins danifiquem os sistemas de produção e afetem negativamente a experiência de usuário.

Perceber erros e bugs no início do desenvolvimento leva tempo e esforço. Os engenheiros de controle de qualidade devem criar testes de unidade, verificar o sistema de automação e verificar manualmente os fluxos de usuários usando dados fictícios.

Permite Coletar Feedback

O teste em produção permite observar e monitorar o sistema por meio do feedback real do usuário. Além disso, ele determina a falha ou a taxa de sucesso dos novos códigos ou recursos.

Para conduzir o teste em produção com êxito, certifique-se de que o desempenho do aplicativo permaneça o mesmo em relação à linha de base esperada.

Tipos de Teste em Produção

Nesta seção, vamos mostrar os seis métodos mais comuns de testes em produção:

Monitoramento e Diagnóstico

O principal objetivo do monitoramento e diagnóstico em um ambiente de produção é garantir que o software funcione como pretendido. Para conseguir isso, você pode realizar os seguintes testes:

  • Monitoramento contínuo.  Isso inclui testes de desempenho, como examinar a estabilidade, o tempo de resposta, a escalabilidade e a confiabilidade do produto, bem como a realização de testes de velocidade do site. O monitoramento contínuo ajuda a encontrar problemas que podem diminuir a funcionalidade do software. Além de fazer isso manualmente, os desenvolvedores também podem usar ferramentas de automação que fornecem insights e diagnósticos adicionais.
  • Monitoramento de aplicações.  Consiste em dois tipos: monitoramento de usuários reais (RUM) e monitoramento sintético (Testes de Simulação). O primeiro verifica como os usuários reais interagem com o servidor dos aplicativos. Já o último examina como as APIs do aplicativo respondem a solicitações contínuas enviadas por visitantes automatizados.
  • Acompanhamento em tempo real.  Envolve verificar cada transação em cada camada dentro de um aplicativo. Isso permite que os engenheiros de controle de qualidade vejam a base do código e detectem erros, bugs e desempenho lento. Além disso, o rastreamento em tempo real fornece análises específicas, como o comportamento da pilha de execução e threads problemáticos.

Dica

Para melhorar o desempenho das suas páginas, tente implementar estratégias de otimização de sites.

Testes A/B

Este tipo só pode ser executado num ambiente de produção real, e serve para receber valiosos feedbacks dos usuários.

O teste A/B envolve o lançamento de duas versões de um aplicativo Web ou novo recurso com contrastes sutis — por exemplo, diferentes interfaces de menu ou esquemas de cores. Isso dividirá a base de usuários em vários grupos. 

Em seguida, atribua uma variante diferente para cada lote para descobrir qual é preferível. Esse teste estatístico ajuda você a decidir qual opção incluir em versões futuras.

Dessa forma, os desenvolvedores também podem aprender mais sobre as necessidades dos clientes e criar produtos que atendam às suas expectativas.

Lançamento Incremental 

Esse teste no tipo de produção divide os requisitos do produto em vários módulos autônomos. Cada parte é tratada como um subprojeto e passará pelas etapas do Ciclo de Vida de Desenvolvimento de Software (SDLC). 

Além disso, um módulo apresentará um novo recurso ou infraestrutura de produção em cada versão. Ele continua até que o sistema se desenvolva completamente e implemente todas as peças pretendidas.

Aqui estão quatro fases incrementais:

  1. Análise de requisitos.  Identificar os requisitos funcionais do software e do sistema. 
  2. Design e desenvolvimento.  Criar funcionalidade.
  3. Teste.  Examinar todas as funções existentes usando vários métodos.
  4. Implementação. Finalizar o projeto de programação do software.

Também conhecido como modelo de aprimoramento iterativo, esse teste de ambiente de produção ajuda a atingir as metas por meio de várias etapas práticas.

Existem dois tipos de modelo de versões incrementais para você escolher:

  • Modelo de Entrega em Etapas. Você constrói uma parte do projeto de cada vez, em fases sucessivas.
  • Modelo de Desenvolvimento Paralelo. Você desenvolve o produto simultaneamente, desde que os recursos estejam disponíveis. Este tipo pode ajudar a encurtar o processo de desenvolvimento.

Teste de Pico

O teste de pico em um ambiente de produção ajuda a avaliar o desempenho do software em situações extremas, como um aumento ou diminuição repentina da carga. Seu objetivo é determinar o volume de tráfego que o seu produto e a sua rede suportam antes de travar. 

Além disso, o teste de pico define quanto tempo leva para se recuperar de circunstâncias desafiadoras. A maioria dos desenvolvedores também usa esse método para descobrir se o software emprega bons sistemas de tratamento de erros.

Testes de Integração

Também conhecido como Integração e Teste (I&T), esse tipo mescla logicamente tudo entre os diferentes componentes, unidades e módulos de software e os testa como uma única entidade. 

Normalmente, a produção consiste em vários módulos codificados por diferentes programadores. Os testes de integração visam encontrar erros em sua interação quando mesclados. Além disso, ele verifica a comunicação de dados entre esses módulos.

Um exemplo comum de testes de integração é a abordagem big bang. No entanto, ela funciona principalmente para examinar pequenos sistemas. 

Acompanhamento de Feedback

Depois que os desenvolvedores lançam o software, eles começam a observar como os usuários finais interagem com o produto. Eles geralmente usam ferramentas de feedback do cliente, como o Mopinion, para coletar dados de forma eficiente. Isso ajuda a determinar as alterações necessárias em iterações futuras.

Além disso, o controle de feedbacks em um ambiente de produção permite que os desenvolvedores acelerem o processo de teste e integração de código. Isso cria um equilíbrio entre o tempo de lançamento e a qualidade. 

Ao adotar esse método, lembre-se de especificar quais elementos os usuários precisam dar feedback para que seja mais fácil categorizar os dados.

Dica

Confira este guia antes de realizar testes de usabilidade de sites.

Práticas Recomendadas para Teste em Produção

Depois de analisar os benefícios e os tipos de teste em produção, é hora de aprender algumas dicas e truques para melhorar ainda mais o seu trabalho. 

Criar Dados de Teste

Ao testar em produção, as informações usadas devem representar a condição real do software. Portanto, talvez seja necessário criar dados de amostra ou usar um substituto adequado para os casos de teste.

Há várias maneiras de gerar dados de teste:

  • Crie os dados manualmente.
  • Copie os dados da produção para o ambiente de teste.
  • Obtenha os dados de sistemas de clientes.
  • Use ferramentas automatizadas de geração de dados de teste.

Na fase de pré-produção, antes de criar dados de teste, os desenvolvedores precisam executar várias etapas prévias ou definir opções de configuração. Como é um processo demorado, recomendamos cuidar dele com antecedência. 

Nomeie os Dados de Teste de Forma Realista

Escrever um bom nome de dados de teste ajuda a criar um processo de teste de produção atraente e organizado. Além disso, ele pode informar aos engenheiros de controle de qualidade quais ações tomar e que tipo de feedback os desenvolvedores estão esperando.

Aqui estão três dicas para criar um bom nome de dados de teste:

  • Represente com precisão cenários da vida real.
  • Descreva a situação de forma concisa.
  • Crie nomes de dados de teste reutilizáveis para examinar vários contextos.

Evite Usar Dados Reais do Usuário

O uso de dados reais pode ser uma abordagem eficaz ao testar a funcionalidade do software de produção e solução de problemas. Além disso, ele ajuda a imitar os tipos de aplicativo de dados vistos no ambiente de produção.

No entanto, a exposição de Informações de Identificação Pessoal (PII) pode resultar em vários riscos graves, como violações de segurança. Isso também significa que você está violando as leis de privacidade de dados, incluindo o Regulamento Geral de Proteção de Dados (GDPR) e a Lei de Privacidade do Consumidor da Califórnia (CCPA).

Outras desvantagens incluem:

  • Ter dados de teste e produção misturados.
  • Expor brechas em processos críticos para os negócios.
  • Possível perda de dados.
  • Consequências não intencionais em outros sistemas de software.
  • Ruído nos logs do sistema de produção devido à atividade de bots e scripts.
  • Confiar nos usuários finais para fornecer feedback sobre falhas do sistema.

Portanto, para evitar violações e problemas legais, empregue estas técnicas de segurança nos ambientes de teste de produção:

  • Use tokens.  Substitua dados de produção confidenciais por um valor de espaço reservado genérico que não imite o formato original.
  • Mantenha o anonimato.  Utilize o valor gerado realisticamente por randomização e generalização.
  • Aplique criptografia para preservar o formato. Proteja as informações confidenciais mantendo o formato original. Isso mantém os dados relevantes.
  • Pseudo-anonimização. Insira as PII reais ao lado dos dados de produção aleatórios e alterne-as na tabela de mapeamento. Isso permite que você restaure as informações originais quando necessário. No entanto, verifique se a tabela de mapeamento está criptografada.
  • Gere dados sintéticos.  Use informações fictícias que tenham um formato semelhante e vínculos de dados válidos. Existem muitos geradores de dados sintéticos, como Avo Automation, MOSTLY AI e Mockaroo.

Crie Credenciais para Testar o Aplicativo

Para manter a proteção de dados e, ao mesmo tempo, garantir a funcionalidade do software, crie credenciais de teste e torne-as acessíveis à equipe no ambiente de teste.

Com credenciais de exemplo, você pode testar as partes de software ou APIs REST diretamente da conta existente, sem aplicar alterações. Isso permite que você aja como um usuário e explore o software para encontrar possíveis desvantagens.

No entanto, as contas de teste geralmente têm algumas restrições. Por exemplo, elas podem não permitir que você interaja com os dados dentro das credenciais reais ou acessar determinadas partes de administração do aplicativo.

Antes de criá-las, revise a política de segurança da empresa e consulte a equipe de segurança.

Há alguns aspectos a serem considerados ao configurar as credenciais de teste:

  • Concorde com a equipe sobre a função e as permissões da conta de teste.
  • Verifique se ela contém dados representativos.
  • Considere problemas de locação cruzada e crie conjuntos para dois ambientes de produção separados.
  • Forneça uma matriz de permissões para garantir que as funções e privilégios estejam claros. Isso também ajuda a evitar relatos de falsos positivos.

Teste Quando o Projeto está Sob Baixa Carga

A realização de teste em produção, principalmente durante o horário comercial, pode aumentar as chances de falha do sistema. Além disso, ela pode resultar em uma experiência ruim para o usuário. Portanto, recomendamos realizar o teste do ambiente de produção fora do horário de pico — durante a noite, por exemplo.

No entanto, a realização de exames em softwares avançados pode levar horas. Portanto, agende um plano de manutenção adequado e envie e-mails para notificar os usuários quando acontecerão os testes de produção.

Finalmente, é melhor habilitar a opção de sinalizador de recurso para mitigar erros de software.

Métricas que Indicam um Teste de Produção Bem-Sucedido

As métricas de teste de produção ajudam a monitorar e classificar os testes realizados. Elas transmitem um resultado ou uma previsão com base na combinação de dados usada.

Além disso, as métricas de teste de produção exibem o progresso da equipe, analisam a qualidade do software, monitoram a produtividade, medem mudanças, identificam áreas de melhoria e testam o procedimento ou a tecnologia mais recente para determinar se o produto precisa de mais modificações.

As métricas de teste de produção consistem em três tipos:

  • Métricas do processo.  Definir a execução e as características do produto. Elas são usadas para melhorar e manter o processo SDLC. 
  • Métricas do produto.  Determine o design, a qualidade, o tamanho, a complexidade e o desempenho do produto. Os desenvolvedores usam essas métricas para melhorar a qualidade do software.
  • Métricas do projeto.  Meça a eficiência e a eficácia da equipe do projeto ou das ferramentas de teste utilizadas.

Há cinco fatores essenciais a serem lembrados antes de criar as métricas de teste de produção:

  • Escolha o público-alvo com cuidado.
  • Determine a meta de cada métrica.
  • Planeje as medições de acordo com as especificações do produto.
  • Avalie as receitas de cada estatística.
  • Combine os cálculos com o ciclo de vida do projeto.

Métricas de Teste Manual

O teste manual é demorado, pois os engenheiros de controle de qualidade precisam realizá-lo passo a passo. No entanto, ele ajuda a verificar o produto minuciosamente e examinar as configurações do sistema em circunstâncias mais complexas.

Essa técnica consiste em duas métricas:

  • Métricas básicas. Contêm análises de dados coletadas a partir do desenvolvimento e execução dos casos de teste. Ao gerar os relatórios de status do projeto, os gerentes de projeto poderão promover as revisões usando essas métricas. Essa técnica rastreia dados em todo o SDLC, desde a coleta do número total de casos de teste até quantos deles estão concluídos, com falha ou bloqueados. 
  • Métricas calculadas. Contêm dados coletados nas métricas de base, como o número de cobertura de teste. Os gerentes de projeto ou líderes as utilizam para fins de relatórios de teste.

O teste manual inclui muitas métricas importantes, como classificação absoluta ou derivada, e avaliações de resultado e preditivas. Listamos abaixo algumas das mais usadas.

Números Absolutos

Eles contêm valores unidimensionais que os engenheiros de controle de qualidade usam para derivar métricas de teste de produção. Para usá-los, registre esses valores durante o desenvolvimento e a execução dos casos de teste por todo o ciclo de vida do teste do software.

As métricas absolutas contêm 12 cálculos:

  • Total de casos de teste
  • Casos de teste aprovados
  • Casos de teste com falha
  • Casos de teste bloqueados
  • Defeitos encontrados
  • Defeitos rejeitados
  • Defeitos aceitos
  • Defeitos diferidos
  • Defeitos críticos
  • Horas de teste planejadas
  • Horas de teste reais
  • Bugs encontrados após o envio

Métricas Derivadas

Usar números absolutos como métricas autônomas é insuficiente para avaliar a qualidade do teste. Portanto, você deve complementá-lo com as métricas derivadas.  Dessa forma, você saberá como corrigir problemas durante os processos de teste do produto.

As fórmulas de rastreamento e eficiência ajudam os engenheiros de controle de qualidade a entender a eficiência dos testes e acompanhar suas realizações. Eles também mostram quaisquer defeitos relevantes do produto.

Normalmente, os desenvolvedores e engenheiros de controle de qualidade aplicam as seguintes fórmulas:

  • % de Casos de teste aprovados = (número de casos de teste aprovados/total de testes executados) x 100
  • % de Casos de teste com falha = (número de casos de teste com falha/total de testes executados) x 100
  • % de Casos de teste bloqueados = (número de casos de teste bloqueados/total de testes executados) x 100
  • % de Defeitos corrigidos = (número de defeitos corrigidos/defeitos reportados) x 100
  • % de Defeitos aceitos = (número de defeitos válidos confirmados pelos desenvolvedores/total de defeitos relatados) x 100
  • % de Defeitos rejeitados = (número de defeitos inválidos rejeitados pelos desenvolvedores/total de defeitos relatados) x 100
  • % de Defeitos diferidos = (número de defeitos adiados para lançamentos futuros/total de defeitos relatados) x 100
  • % de Defeitos críticos = (número de defeitos críticos/total de defeitos relatados) x 100
  • % de Tempo médio para os desenvolvedores corrigirem defeitos = (tempo necessário para correções de bugs/número de bugs) x 100

Observe que essas fórmulas fornecem apenas informações sobre a cobertura e a qualidade do teste. 

Enquanto isso, as métricas de esforço de teste estabelecem as linhas de base para o planejamento de teste futuro. No entanto, os resultados produzidos são médias — metade está acima do valor, enquanto outros estão abaixo. 

A seguir estão as fórmulas mais importantes para mostrar o esforço do teste:

  • Número de testes executados por um período em % = número de testes executados/tempo total
  • % de Eficiência do projeto de teste = número de testes projetados/tempo total
  • % de Eficiência da revisão do teste = número de testes revisados/tempo total
  • Quantidade de bugs ou defeitos por hora de teste em % = número de bugs ou defeitos/total de horas de teste
  • Quantidade de bugs por teste em % = número de bugs/números totais de teste
  • Tempo médio para os desenvolvedores testarem uma correção de bug em % = tempo total entre a correção de bugs para testar novamente todos os defeitos/defeitos totais

As métricas de eficácia do teste medem a capacidade de encontrar bugs e a qualidade do conjunto de testes. Eles mostram uma relação entre o total de defeitos identificados antes da implementação com as falhas encontradas antes e depois do lançamento do produto.

Existem duas maneiras de calcular a eficácia do teste:

  • Baseado em métrica usando eficiência de contenção de defeitos em % = (bugs encontrados no teste/total de bugs encontrados (bugs encontrados no teste + após o envio)) x 100
  • Baseado no contexto, o que significa usar a avaliação da equipe para avaliar a eficácia da taxa de teste.

Em comparação, as métricas de cobertura do teste medem os esforços do teste. Elas mostram quantas das partes do software foram testadas.

Para calcular a cobertura do teste, aqui estão três fórmulas principais a serem executadas:

  • Cobertura de execução de testes em % = (número de testes executados/total de testes a serem executados) x 100
  • Cobertura de requisitos em % = (número de requisitos cobertos/requisitos totais) x 100
  • Cobertura de testes de automação em % = (cobertura automatizada/cobertura total) x 100

Também conhecida como distribuição de defeitos, as métricas de defeitos dividem os softwares defeituosos com base em vários aspectos, como causa, gravidade e tipo. Essa técnica ajuda a identificar quais áreas são mais suscetíveis a erros.

Para calculá-la, use estas fórmulas:

  • Densidade de defeitos em % = número de defeitos/total de módulos
  • Índice de gravidade do defeito em % = ∑ (defeito x nível de severidade)/defeito total

Métricas de Teste Automatizado

Como o nome sugere, elas permitem que você execute testes automatizados usando ferramentas. Além de reduzir custo e tempo, essa técnica pode aumentar a cobertura do exame. Além disso, a abordagem automatizada usa principalmente as mesmas métricas da abordagem manual.

Há muitas ferramentas de automação disponíveis, incluindo TESTIFI, LambdaTest e Katalon.

Conclusão

O teste em produção é um complemento crucial para uma estratégia de teste de software. Isso ajuda a equipe a aprender como o sistema funciona com usuários, dados e solicitações reais.

A execução de testes em um ambiente de produção fornece uma melhor compreensão do software, atualiza sua qualidade durante a fase de lançamento pós-produção e aumenta o valor dos negócios.

O teste em produção tem muitas vantagens, como melhorar a precisão do teste, liberar atualizações com frequência e evitar falhas no sistema. Ele geralmente consiste em seis categorias:

  • Monitoramento e diagnóstico. Realize testes de desempenho, monitoramento de aplicativos e rastreamento em tempo real.
  • Testes A/B. Teste duas versões de um novo recurso ou software no ambiente de produção.
  • Liberação incremental. Separe os requisitos do produto em módulos de software até que o SDLC esteja concluído.
  • Teste de pico. Teste o software em várias ocorrências, como aumentos ou diminuições repentinas no tráfego de produção.
  • Testes de integração. Combine várias unidades, componentes e módulos e teste-os como uma entidade.
  • Teste de feedback. Use ferramentas de feedback do cliente durante o ambiente de produção.

Para produzir os melhores resultados, lembre-se de sempre criar os dados de exemplo, dar-lhes um nome útil, evitar o uso de informações pessoais, fazer credenciais de teste e executar as verificações durante um momento de baixa demanda dos usuários.

Esperamos que este artigo tenha ajudado você a entender como realizar um teste em produção. Se você tiver alguma dúvida ou sugestão, por favor deixe-as na seção de comentários abaixo.

Teste em Produção – Perguntas Frequentes

Agora, vamos responder às perguntas mais frequentes sobre teste em produção.

Qual é a Diferença entre Teste em Produção e Preparação?

A principal diferença entre teste em produção e preparação é o ambiente de teste. Com o primeiro, o exame acontece em um servidor web de produção. Isso significa que o produto foi lançado oficialmente para usuários reais.

Enquanto o ambiente de preparação significa que os desenvolvedores usam uma réplica da configuração da produção original. O objetivo é testar um software de nível de quase produção para garantir que o aplicativo funcione corretamente após a implantação.

Que Tipo de Teste Pode Ser Automatizado?

Há sete testes automatizados que você pode executar em um ambiente de produção – API, fumaça, regressão, integração, desempenho, segurança e aceitação.

Author
O autor

Carlos E.

Carlos Estrella é formado em jornalismo pela UFSC e tem as funções de redator, tradutor e SEO na Hostinger Brasil. Já trabalhou com jornalismo de games e tecnologia e hoje aplica essa experiência escrevendo posts e tutoriais no blog da Hostinger. Suas paixões incluem games, dar rolês com a namorada e amigos e ler artigos aleatórios da Wikipédia de madrugada.