DEV Community

Cover image for O que é Keploy? Teste de API Record-and-Replay
Lucas
Lucas

Posted on • Originally published at apidog.com

O que é Keploy? Teste de API Record-and-Replay

Se você quer gerar testes de API sem escrevê-los manualmente, o Keploy é uma opção interessante: ele observa sua aplicação em execução, captura tráfego real e transforma essas interações em uma suíte de testes reproduzível. Na prática, ele funciona melhor quando você já tem uma API rodando e quer criar testes de regressão rapidamente a partir do comportamento real.

Experimente o Apidog hoje

Neste guia, você verá o que é o Keploy, como a gravação e reprodução funciona com eBPF, quando usar cada fluxo de trabalho, como instalar e executar os comandos principais, e quais limitações considerar antes de adotá-lo.

O que é o Keploy

Keploy é uma plataforma open source, sob licença Apache-2.0, para criar testes de API, integração e ponta a ponta a partir do comportamento real da aplicação.

A ideia é simples:

  1. Você executa sua aplicação com o Keploy.
  2. Faz chamadas reais contra sua API.
  3. O Keploy captura requisições, respostas e dependências.
  4. Ele gera casos de teste e mocks.
  5. Depois, você reproduz esses testes para detectar regressões.

Record and replay

O Keploy oferece dois fluxos principais:

  1. Gravação e reprodução: captura interações reais de API e dependências, depois reproduz tudo de forma determinística.
  2. Geração de testes por IA: cria suítes de testes de API a partir de uma especificação, coleção, comando cURL ou endpoint ativo.

O projeto é open source. Você pode consultar o código em github.com/keploy/keploy e a documentação em keploy.io/docs.

Como a gravação do Keploy funciona com eBPF

O diferencial do Keploy está na forma de captura. Ao executar keploy record, você não precisa instalar SDK, alterar handlers ou adicionar instrumentação no código.

O Keploy captura tráfego na camada de rede usando eBPF, uma tecnologia do kernel Linux que permite observar eventos do sistema de forma segura.

Na prática, isso significa:

  • Sem alteração de código: a aplicação continua igual.
  • Agnóstico à linguagem: funciona com diferentes runtimes, como Go, Python, Java, Node.js ou Rust.
  • Captura de dependências: além da requisição de entrada e da resposta da API, o Keploy captura chamadas de saída para bancos, filas e outros serviços.

Quando você grava uma interação, o Keploy gera dois tipos de artefatos:

  • Um caso de teste, com a requisição e a resposta esperada.
  • Mocks/stubs de dependências, usados para reproduzir chamadas externas sem depender de serviços ativos.

Durante a reprodução com keploy test, ele:

  1. Inicia sua aplicação.
  2. Envia novamente as requisições gravadas.
  3. Responde chamadas de dependência usando os mocks capturados.
  4. Compara a resposta atual com a resposta gravada.

Se houver diferença, o teste falha. Esse é o ciclo de regressão: gravar um comportamento conhecido como correto e validar se ele continua igual após mudanças no código.

Fluxos de trabalho do Keploy

1. Gravação e reprodução

Use este fluxo quando você já tem uma aplicação funcionando e quer obter cobertura de regressão rapidamente.

Exemplo de uso:

keploy record -c "node server.js"
Enter fullscreen mode Exit fullscreen mode

Depois de iniciar a aplicação com o Keploy, faça chamadas contra sua API usando ferramentas como cURL, Postman, Apidog, testes existentes ou tráfego real em um ambiente controlado.

O Keploy salva os casos capturados e os mocks necessários.

Depois, execute:

keploy test -c "node server.js" --delay 10
Enter fullscreen mode Exit fullscreen mode

Esse comando reproduz os testes e verifica se o comportamento mudou.

2. Geração de testes por IA

Use este fluxo quando você quer ampliar a cobertura ou partir de um contrato de API.

O Keploy pode gerar testes a partir de:

  • Especificação OpenAPI
  • Coleção Postman
  • Comando cURL
  • Endpoint ativo

Esse fluxo é útil quando você quer criar testes além dos caminhos exercitados manualmente. Ainda assim, os testes gerados precisam ser revisados para garantir que representam contratos reais da API.

Os dois fluxos são complementares:

  • Gravação e reprodução captura comportamento real.
  • Geração por IA ajuda a preencher lacunas a partir da especificação.

Se você está comparando ferramentas de geração de testes, veja também este resumo de geradores de casos de teste de IA e o guia para gerar scripts de teste a partir de OpenAPI.

Instalando o Keploy

Em um sistema suportado, instale o Keploy com:

curl --silent -O -L https://keploy.io/install.sh && source install.sh
Enter fullscreen mode Exit fullscreen mode

Depois da instalação, confirme se o comando está disponível:

keploy --version
Enter fullscreen mode Exit fullscreen mode

A partir daí, o fluxo básico usa dois comandos:

  • keploy record
  • keploy test

Comando para gravar testes

Para gravar interações da aplicação:

keploy record -c "COMANDO_PARA_EXECUTAR_APLICATIVO"
Enter fullscreen mode Exit fullscreen mode

Exemplo com Node.js:

keploy record -c "node server.js"
Enter fullscreen mode Exit fullscreen mode

Exemplo com uma aplicação Go:

keploy record -c "go run main.go"
Enter fullscreen mode Exit fullscreen mode

Enquanto o comando estiver rodando:

  1. Acesse seus endpoints.
  2. Execute chamadas manuais ou automatizadas.
  3. Gere tráfego representativo.
  4. Finalize a sessão quando terminar.

O Keploy salvará os testes e mocks capturados.

Comando para reproduzir testes

Para executar os testes gravados:

keploy test -c "COMANDO_PARA_EXECUTAR_APLICATIVO" --delay 10
Enter fullscreen mode Exit fullscreen mode

Exemplo:

keploy test -c "node server.js" --delay 10
Enter fullscreen mode Exit fullscreen mode

A flag --delay 10 faz o Keploy aguardar 10 segundos antes de iniciar a reprodução das requisições. Isso dá tempo para sua aplicação subir completamente.

Se o serviço demora mais para iniciar, aumente o valor:

keploy test -c "node server.js" --delay 20
Enter fullscreen mode Exit fullscreen mode

Se inicializa rápido, você pode reduzir:

keploy test -c "node server.js" --delay 5
Enter fullscreen mode Exit fullscreen mode

Primeiro ciclo completo

Um fluxo inicial simples seria:

# 1. Grave interações reais da API
keploy record -c "node server.js"

# 2. Reproduza os testes capturados
keploy test -c "node server.js" --delay 10
Enter fullscreen mode Exit fullscreen mode

Depois que os testes forem gerados, você pode versionar os artefatos junto com o código e executá-los no CI.

Linguagens, protocolos e bancos suportados

Como a captura acontece na camada de rede, o Keploy cobre diferentes stacks.

Categoria Suportado
Linguagens Go, Java, Node.js, Python, Rust, C#, C/C++, TypeScript e mais
Protocolos HTTP/REST, gRPC, GraphQL, Kafka, RabbitMQ
Armazenamentos de dados PostgreSQL, MySQL, MongoDB, Redis

Essa abrangência vem do uso de eBPF. Como o Keploy observa conversas de rede, ele não depende diretamente do framework usado pela aplicação, desde que o tráfego esteja em protocolos suportados.

Executando Keploy no CI

O Keploy pode ser usado como etapa de regressão no pipeline.

Um fluxo típico é:

  1. Grave testes em uma versão conhecida como correta.
  2. Revise os testes e mocks gerados.
  3. Comite os artefatos junto com o código.
  4. Execute keploy test no CI.
  5. Falhe a build se houver divergência.

Exemplo genérico:

keploy test -c "node server.js" --delay 10
Enter fullscreen mode Exit fullscreen mode

Como os mocks substituem dependências reais, a reprodução não precisa necessariamente de banco de dados ativo ou serviços downstream no executor do CI. Isso ajuda a manter os testes mais determinísticos.

Limitações a considerar

Keploy resolve bem o problema de capturar comportamento real e transformá-lo em testes, mas há limites importantes.

Requer ambiente compatível com eBPF

eBPF é um recurso do kernel Linux. Em muitos cenários, a captura também exige permissões elevadas.

Isso influencia onde você consegue rodar o Keploy, especialmente em ambientes locais, containers e CI.

Testes gerados precisam de revisão

Testes criados a partir de tráfego real ou geração por IA não devem ser tratados como suíte final imediatamente.

Você ainda precisa revisar:

  • Quais interações representam contratos reais.
  • Quais respostas têm dados voláteis.
  • Quais casos são ruído.
  • Quais mocks devem ser mantidos.

Não é uma plataforma completa de ciclo de vida de API

O Keploy foca em teste e geração de testes. Ele não tem como objetivo cobrir todo o ciclo de vida de API, como:

  • Design de API
  • Documentação colaborativa
  • Mock servers para consumidores
  • Colaboração em torno de especificações
  • Gestão completa de coleções e ambientes

Esses limites não tornam o Keploy uma ferramenta ruim. Eles apenas definem quando ele é a escolha certa.

Onde o Apidog se encaixa como alternativa de testes projetados

Se sua necessidade é maior do que transformar tráfego observado em testes de regressão, vale considerar uma plataforma de ciclo de vida completo.

O Apidog é uma plataforma de API tudo-em-um para design, depuração, mocking, documentação e testes.

Apidog

A diferença principal é a abordagem:

  • Keploy captura e reproduz comportamento real em runtime, incluindo mocks de dependências, sem alteração de código.
  • Apidog permite projetar, organizar e manter cenários de teste dentro de uma plataforma de API, e executá-los via terminal e CI com o Apidog CLI.

Com o Apidog CLI, você pode executar coleções com:

O Apidog também oferece geração de casos de teste por IA a partir do esquema da API e endpoints, criados dentro da aplicação.

A distinção é importante: o Apidog não captura tráfego ao vivo via eBPF e não gera testes automaticamente gravando chamadas reais com mocks de dependência. Essa é uma capacidade específica do Keploy.

Use o Keploy quando você precisa de gravação e reprodução em runtime com zero código. Use o Apidog quando quer suítes de teste projetadas, revisáveis e mantidas dentro de uma plataforma que também cobre outras etapas do ciclo de vida da API.

Para comparar as duas abordagens, veja Apidog vs Keploy. Se você pretende migrar, este passo a passo de migração mostra como transferir seus testes.

Se você quer criar testes de API projetados e manteníveis, pode baixar o Apidog e começar com o guia sobre como testar uma API com Apidog.

Perguntas frequentes

O Keploy é gratuito e open source?

Sim. O Keploy é open source sob licença Apache-2.0. O código está disponível no GitHub e você pode auto-hospedá-lo.

O Keploy exige alteração no código da aplicação?

Não. O fluxo de gravação e reprodução captura tráfego na camada de rede usando eBPF. Portanto, não há SDK para adicionar nem alterações obrigatórias no código.

O que a flag --delay faz em keploy test?

Ela define quantos segundos o Keploy espera antes de enviar as requisições gravadas. Isso dá tempo para a aplicação inicializar.

Exemplo:

keploy test -c "node server.js" --delay 10
Enter fullscreen mode Exit fullscreen mode

Nesse caso, o Keploy espera 10 segundos.

O Keploy pode simular meu banco de dados durante os testes?

Sim. Ao gravar uma interação, o Keploy também captura chamadas de dependência, como consultas de banco de dados, e gera mocks para que a reprodução ocorra sem um banco ativo.

O Keploy substitui uma ferramenta de design e documentação de API?

Não. O Keploy é uma ferramenta de teste e geração de testes. Para design, documentação, mocking para consumidores, colaboração e testes em uma única plataforma, uma solução de ciclo de vida completo como o Apidog é mais adequada.

Resumo

O Keploy transforma tráfego real de API em testes de regressão. Ele usa eBPF para capturar requisições, respostas e chamadas de dependência sem alterar o código da aplicação. Depois, reproduz essas interações com mocks para detectar mudanças de comportamento.

Ele é útil quando você quer criar testes rapidamente a partir de uma aplicação existente. Porém, exige atenção ao ambiente Linux/eBPF, revisão dos testes gerados e entendimento de que seu escopo é focado em testes.

Se você precisa de captura e reprodução baseada em tráfego real, avalie o Keploy. Se precisa de suítes de teste projetadas e mantidas dentro de uma plataforma completa de API, compare com o Apidog.

Top comments (0)