Testes & QA

Como Gerar Dados Fictícios para Testes de API (Mock Data)

Aprenda a criar dados realistas para popular seu banco de dados em testes automatizados. Com exemplos usando Faker.js, Factory Bot e ferramentas online gratuitas.

26 de fevereiro de 202610 min de leituraDevThru

Todo desenvolvedor já passou por isso: você precisa testar uma API, popular um banco de dados ou rodar testes automatizados, mas não tem dados para usar. Copiar dados de produção é um risco enorme (LGPD, segurança), e criar registros na mão é improdutivo.

A solução é gerar dados fictícios realistas — também chamados de mock data ou fake data. Neste guia, vamos mostrar as melhores ferramentas e bibliotecas para isso, com exemplos práticos para cada situação.

Por Que Usar Dados Fictícios?

  • Conformidade com a LGPD: dados reais de clientes nunca devem ser usados em ambientes de teste
  • Reprodutibilidade: testes com dados fixos são mais previsíveis
  • Velocidade: é muito mais rápido gerar 10.000 registros do que criá-los manualmente
  • Cobertura: dados gerados podem simular edge cases (nomes longos, CEPs inválidos, etc)
⚠️ Atenção à LGPD: A Lei Geral de Proteção de Dados proíbe o uso de dados pessoais reais em ambientes de teste e homologação. Geradores de dados fictícios resolvem esse problema por design.

Abordagem 1: Bibliotecas de Código (Faker.js)

O Faker.js (agora mantido como @faker-js/faker) é a biblioteca mais popular para gerar dados fictícios em JavaScript/TypeScript.

Instalação

npm install @faker-js/faker

Gerando dados básicos

import { faker } from '@faker-js/faker/locale/pt_BR';

// Gerar uma pessoa fictícia completa
const pessoa = {
  nome: faker.person.fullName(),
  email: faker.internet.email(),
  telefone: faker.phone.number(),
  cpf: faker.string.numeric(11),
  nascimento: faker.date.birthdate({ min: 18, max: 65, mode: 'age' }),
  endereco: {
    rua: faker.location.street(),
    cidade: faker.location.city(),
    estado: faker.location.state(),
    cep: faker.location.zipCode(),
  }
};

console.log(pessoa);

Gerando dados em massa para popular um banco

import { faker } from '@faker-js/faker/locale/pt_BR';

function gerarUsuarios(quantidade) {
  return Array.from({ length: quantidade }, () => ({
    id: faker.string.uuid(),
    nome: faker.person.fullName(),
    email: faker.internet.email(),
    telefone: faker.phone.number(),
    criado_em: faker.date.past(),
    ativo: faker.datatype.boolean(),
  }));
}

// Gerar 500 usuários fictícios
const usuarios = gerarUsuarios(500);
console.log(`Gerados ${usuarios.length} usuários`);

Abordagem 2: Factory Pattern (Backend)

Em projetos maiores, o ideal é usar o padrão Factory para centralizar a criação de dados de teste.

Exemplo com TypeScript

interface Usuario {
  id: string;
  nome: string;
  email: string;
  role: 'admin' | 'user' | 'viewer';
}

class UsuarioFactory {
  static criar(overrides: Partial<Usuario> = {}): Usuario {
    return {
      id: crypto.randomUUID(),
      nome: 'João da Silva',
      email: `user-${Date.now()}@teste.com`,
      role: 'user',
      ...overrides,
    };
  }

  static criarAdmin(overrides: Partial<Usuario> = {}): Usuario {
    return this.criar({ role: 'admin', nome: 'Admin Teste', ...overrides });
  }

  static criarLote(quantidade: number): Usuario[] {
    return Array.from({ length: quantidade }, () => this.criar());
  }
}

// Uso em testes
const admin = UsuarioFactory.criarAdmin();
const usuarios = UsuarioFactory.criarLote(100);

Abordagem 3: Ferramentas Online (Sem Código)

Nem sempre você precisa escrever código. Para prototipação rápida ou testes manuais, ferramentas online são mais produtivas:

FerramentaO Que GeraIdeal Para
Pessoa Completa (DevThru)Nome, CPF, RG, endereço, telefoneCadastros de clientes
Mock Data (DevThru)JSON/CSV com dados customizáveisPopular bancos de dados
Gerador de CPF (DevThru)CPFs válidos para testeFormulários de cadastro
Gerador de CNPJ (DevThru)CNPJs válidos para testeSistemas fiscais/ERP
💡 Vantagem: Ferramentas online como o DevThru geram dados que respeitam as regras de validação brasileiras (dígitos verificadores de CPF/CNPJ, formato de CEP, DDD válidos), algo que o Faker.js nem sempre garante.

Abordagem 4: Seeding de Banco de Dados

Para popular um banco automaticamente durante o setup de testes ou desenvolvimento:

Exemplo com Prisma + Faker

// prisma/seed.ts
import { PrismaClient } from '@prisma/client';
import { faker } from '@faker-js/faker/locale/pt_BR';

const prisma = new PrismaClient();

async function main() {
  // Limpa a base
  await prisma.usuario.deleteMany();

  // Seed com 100 usuários
  for (let i = 0; i < 100; i++) {
    await prisma.usuario.create({
      data: {
        nome: faker.person.fullName(),
        email: faker.internet.email(),
        telefone: faker.phone.number(),
        ativo: true,
      },
    });
  }

  console.log('Seed concluído: 100 usuários criados');
}

main()
  .catch(console.error)
  .finally(() => prisma.$disconnect());

Boas Práticas

  1. Nunca use dados reais: mesmo que "só sejam testes", o vazamento de dados de produção em ambientes de teste é uma violação da LGPD.
  2. Use seeds determinísticos: configure uma seed fixa no Faker (faker.seed(123)) para que os testes sejam reproduzíveis.
  3. Valide os dados gerados: se precisa de CPFs/CNPJs válidos, use geradores que implementem o algoritmo de módulo 11 — como as ferramentas do DevThru.
  4. Cubra edge cases: gere dados com nomes muito longos, caracteres especiais, e-mails duplicados, etc.
  5. Isole os ambientes: nunca rode seeds em banco de produção. Use variáveis de ambiente para proteger.

Perguntas Frequentes

Faker.js gera CPFs válidos?

Não por padrão. O faker.string.numeric(11) gera 11 dígitos aleatórios, mas sem calcular os dígitos verificadores. Para CPFs com validação matemática correta, use nosso Gerador de CPF.

Posso usar dados fictícios em testes de carga?

Sim, é a prática recomendada. Use o Faker.js para gerar milhares de registros e testar performance sem riscos legais.

Qual a diferença entre mock data e stub?

Mock data são dados fictícios usados para popular bancos ou payloads. Stubs são respostas fixas para simular comportamentos de APIs ou serviços externos durante testes unitários. São conceitos complementares.

🛠️ Experimente na prática

Use nossas ferramentas online gratuitas — sem cadastro, direto no navegador.

mock datadados fictíciostestes automatizadosFaker.jsQAAPI testing