Qualidade e privacidade11 min de leitura

Dados sintéticos em ambiente de teste: por que copiar produção é o caminho caro

Restaurar um dump de produção em homologação é prático e cria uma exposição real sob a LGPD. Compare anonimização, mascaramento e geração sintética, e monte uma massa de teste que sobrevive a auditoria.

Publicado em

AL

Por André Leitão

Desenvolvedor de software

A conversa costuma começar assim: homologação está com dados velhos, o time precisa reproduzir um bug, alguém restaura o dump de produção. Funciona, o bug aparece, o time segue em frente. E a base de clientes agora existe em um ambiente com credenciais compartilhadas, sem log de acesso e com backup em um bucket que ninguém revisa desde a criação.

Este artigo não é sobre conformidade no abstrato. É sobre por que a cópia de produção é uma decisão cara, quais alternativas existem de fato, e como montar uma massa de teste sintética que resolva os mesmos problemas que o dump resolvia.

O que a cópia de produção realmente custa

O custo não é a multa hipotética. É o conjunto de obrigações que passam a valer sobre um ambiente que não foi construído para suportá-las.

  • Ampliação da superfície de exposição: dados pessoais passam a existir em um ambiente com controle de acesso mais frouxo, geralmente acessível a mais gente do que produção.
  • Rastreabilidade perdida: incidente em homologação raramente tem log suficiente para dizer quem acessou o quê, o que atrapalha justamente a resposta que a lei exige.
  • Retenção sem fim: dumps de teste sobrevivem em máquinas de desenvolvedor, buckets, snapshots e backups. Atender a um pedido de eliminação passa a exigir caçar cópias.
  • Vazamento por ferramenta de apoio: ambientes de teste conectam ferramentas de observabilidade, mock e captura de tela que não passaram por avaliação de fornecedor.
  • Bloqueio comercial: cliente corporativo pergunta se dados dele estão em ambiente de teste com cada vez mais frequência, e a resposta errada trava contrato.

Três abordagens, três níveis de proteção

Os termos são usados como sinônimos e não são. A diferença prática está em se o dado continua ou não sob o escopo da lei.

Comparação entre as estratégias de massa de teste
AbordagemOrigem do dadoContinua sob a LGPD?Custo de manutenção
Cópia de produçãoRegistros reaisSim, integralmenteBaixo para criar, alto para governar
MascaramentoRegistros reais transformadosSim, com risco de reidentificaçãoMédio; a regra precisa acompanhar o schema
AnonimizaçãoRegistros reais irreversivelmente agregadosNão, se de fato irreversívelAlto; provar irreversibilidade é difícil
Geração sintéticaRegras de formato e distribuiçãoNãoMédio no início, decrescente depois

A anonimização parece o melhor dos mundos e raramente é. Ela precisa ser irreversível considerando todos os meios razoavelmente disponíveis — inclusive cruzamento com bases externas. Um registro com data de nascimento, CEP e sexo já é frequentemente único em uma cidade média, mesmo sem nome nem documento. Provar irreversibilidade dá mais trabalho do que gerar dado novo.

O que você realmente precisa da massa de teste

Vale separar a necessidade real da necessidade percebida. Quando o time diz que precisa de dados de produção, quase sempre o que ele precisa é de uma destas quatro coisas — nenhuma delas exige identidade.

  1. 1Formato: acentuação, apóstrofo em sobrenome, campo com 300 caracteres, telefone com nono dígito, endereço sem número.
  2. 2Distribuição: proporção de pedidos cancelados, percentual de cadastros sem e-mail, cauda longa de valores altos.
  3. 3Volume: paginação com cem mil registros, relatório que agrega um ano, índice que só degrada acima de certo tamanho.
  4. 4Relacionamento: cliente com muitos pedidos, pedido sem item, item com produto removido do catálogo.

Nenhum desses quatro exige que o registro pertença a uma pessoa existente. É por isso que a geração sintética funciona: ela ataca exatamente o que importa para o teste.

Montando a massa na prática

Uma massa sintética útil tem três camadas, e a maior parte das equipes só constrói a primeira.

Camada 1 — caminho feliz

Registros bem-comportados que exercitam o fluxo principal. É o que a maioria dos geradores entrega por padrão: nome, e-mail, documento válido, endereço completo, pedido com item.

Camada 2 — casos-limite

Aqui mora o valor. Estes casos precisam ser escritos à mão uma vez e versionados junto com o código, porque nenhum gerador adivinha as bordas do seu domínio.

  • Nome com apóstrofo, hífen, acento e caractere fora do Latin-1.
  • Documento inválido em cada modo de falha: tamanho errado, sequência repetida, dígito verificador trocado.
  • Campos opcionais vazios, nulos e com string vazia — os três se comportam diferente.
  • Valores no limite: zero, negativo, máximo do tipo, precisão decimal na fronteira do arredondamento.
  • Datas problemáticas: 29 de fevereiro, virada de fuso, horário de verão histórico.
  • Textos longos que estouram o layout e curtos demais que quebram truncamento.

Camada 3 — volume

Registros gerados em massa por script, com a distribuição aproximada da produção. Não precisa ser exato: precisa ter cauda. Uma base em que todo cliente tem exatamente três pedidos não revela o problema de performance que aparece no cliente com quatro mil.

Gerando volume com distribuição em cauda longa
function pedidosPorCliente() {
  // A maioria dos clientes tem poucos pedidos; uma minoria tem muitos.
  // Uma distribuição exponencial aproxima isso melhor que um sorteio uniforme.
  const sorteio = Math.random();
  if (sorteio < 0.6) return 1;
  if (sorteio < 0.85) return Math.ceil(Math.random() * 5);
  if (sorteio < 0.98) return Math.ceil(Math.random() * 50);
  return Math.ceil(Math.random() * 4000);
}

function gerarClientes(quantidade) {
  return Array.from({ length: quantidade }, (_, indice) => ({
    id: indice + 1,
    nome: nomeSintetico(),
    documento: cpfSintetico(),
    pedidos: pedidosPorCliente()
  }));
}

Documentos brasileiros na massa sintética

CPF, CNPJ, CNH e placa exigem cuidado extra porque têm dígito verificador. Um documento aleatório não passa na validação da própria aplicação, e o teste falha por motivo errado. É preciso gerar números que fechem no algoritmo — sem que correspondam a inscrições reais.

É exatamente o que os geradores do Codigio Labs fazem: montam a base aleatoriamente e calculam os verificadores pelas mesmas fórmulas que sua aplicação usa para validar. O resultado passa na checagem sintática e não pertence a ninguém. Tudo acontece no navegador, então nem o número gerado nem o que você digita chega a um servidor.

Como sair da cópia de produção sem parar o time

Cortar o dump de uma vez costuma falhar porque o time perde a capacidade de investigar. A transição funciona melhor por subtração gradual.

  1. 1Comece pelos ambientes novos: nenhuma feature branch nova recebe dump. A massa sintética nasce junto com o ambiente.
  2. 2Migre os testes automatizados primeiro. Eles são os que mais sofrem com dados instáveis e os que mais ganham com massa determinística.
  3. 3Toda vez que um bug só reproduzir com dados reais, extraia o caso estrutural e adicione à camada 2. A massa melhora a cada incidente.
  4. 4Reduza a retenção do dump antes de eliminá-lo: de indefinido para trinta dias, depois para sete.
  5. 5Encerre a cópia quando a massa cobrir os fluxos críticos, e registre a decisão — ela é um argumento útil em auditoria e em due diligence de cliente.

Resumo

  • Copiar produção para teste amplia a exposição e transfere obrigações para um ambiente que não foi feito para cumpri-las.
  • Mascaramento reduz risco mas mantém o dado no escopo; geração sintética o tira do escopo.
  • O que o teste precisa é formato, distribuição, volume e relacionamento — não identidade.
  • Documentos brasileiros exigem geração com dígito verificador correto para não falhar na própria validação da aplicação.
  • Marque explicitamente os registros sintéticos e fixe a semente do gerador.

Perguntas frequentes

Dado sintético é dado pessoal para efeito de LGPD?
Não, desde que seja realmente sintético — gerado a partir de regras de formato, sem derivar de registros de pessoas identificáveis. É essa a vantagem central: o dado sai do escopo da lei, em vez de permanecer nele sob controles adicionais como acontece com o mascaramento.
Mascarar o CPF em homologação já não resolve?
Resolve parcialmente. Mascaramento reduz o risco, mas o registro continua sendo derivado de uma pessoa real e frequentemente permanece reidentificável pela combinação de outros campos, como data de nascimento, CEP e histórico de compras. Ele é uma mitigação, não uma saída do escopo.
Como testar cenários reais sem dados reais?
Separando o que você precisa de verdade: quase sempre é o formato, o volume e a distribuição — não a identidade. Gere dados que reproduzam distribuição de tamanhos, proporção de campos nulos, acentuação, casos-limite e volume, e você cobre os mesmos caminhos de código.
E os bugs que só aparecem com dados de produção?
Normalmente eles vêm de características estruturais que podem ser reproduzidas: um campo com 300 caracteres, um nome com apóstrofo, um pedido sem endereço. Cada vez que um bug desses aparece, transforme-o em um caso na massa sintética. Com o tempo a massa fica melhor que o dump, porque concentra os casos difíceis.
Preciso de ferramenta paga para gerar massa?
Não para começar. Documentos sintéticos, nomes, endereços e JSON de exemplo cobrem a maior parte das necessidades e podem ser gerados no navegador. Ferramentas pagas fazem sentido quando você precisa de referência entre tabelas em escala e de reprodutibilidade versionada.

Ferramentas relacionadas

AL

Sobre o autor

Desenvolvedor de software no Brasil. Mantém o Codigio Labs desde a primeira ferramenta, escreve os artigos do site e revisa os textos quando a informação técnica muda.

Encontrou um erro ou tem uma correção a sugerir? Fale com o Codigio Labs. Correções relevantes são aplicadas com atualização da data de revisão do texto.

Continue lendo