Pact é a ferramenta de referência para testes de contrato orientados ao consumidor (consumer-driven contract testing). Os consumidores escrevem testes de unidade que geram um contrato, os provedores reproduzem esse contrato contra seu código real, um Pact Broker armazena os resultados, e o can-i-deploy informa ao pipeline se uma versão é segura para implantação. Quando o ciclo funciona, ele detecta falhas de integração que testes de unidade isolados nunca encontrariam. O problema é o próprio ciclo: DSLs de teste por linguagem em cada equipe de consumidor, estados de provedor para criar e manter, um broker para hospedar e versionar, e builds de verificação de provedor que falham por razões que ninguém consegue reproduzir localmente. Muitas equipes adotam o Pact para uma integração instável e acabam montando uma pequena plataforma de teste de contrato.
Apidog é a melhor alternativa ao Pact para equipes cujo problema real é a divergência de esquema entre produtor e consumidor — o caso da maioria das equipes. Em vez de gerar pactos, você usa uma especificação OpenAPI como fonte de verdade, valida respostas contra esse esquema em cada execução de teste, disponibiliza mocks a partir da especificação para que consumidores possam desenvolver antes do deploy do provedor e executa tudo em CI com o Apidog CLI.
O Apidog não replica o fluxo de trabalho consumer-driven do broker do Pact: não há arquivo pact, matriz de verificações nem can-i-deploy. Se você precisa dessa maquinaria para muitas equipes que fazem deploy independentemente, o Pact ainda é relevante. Este artigo mostra como decidir e implementar a abordagem adequada.
O que o Pact realmente faz — e faz bem
A documentação do Pact o descreve como uma ferramenta code-first para testar integrações HTTP e de mensagens. O modelo é orientado ao consumidor:
- O consumidor executa testes contra um mock provider do Pact.
- Os testes registram pares concretos de requisição e resposta em um arquivo pact.
- O provedor reproduz essas requisições contra sua implementação real.
- Estados do provedor configuram os dados necessários para cada interação.
Como apenas os campos utilizados pelo consumidor são registrados, o provedor permanece livre para alterar tudo aquilo de que ninguém depende.
O Pact Broker transforma esses artefatos em uma decisão de implantação. Cada par de versões de consumidor e provedor verificado entra em uma matriz, e o can-i-deploy verifica se a versão prestes a ser implantada foi validada contra tudo que já está em execução no ambiente de destino.
- Código de saída
0: pode implantar. - Código de saída
1: não pode implantar.
O ecossistema é amplo, com implementações oficiais em mais de 10 linguagens, incluindo JVM, JavaScript, Go, .NET, Python, Ruby, Rust, PHP e Swift. Como operar um broker por conta própria exige infraestrutura, a SmartBear oferece o PactFlow, um broker gerenciado com nível Starter gratuito para 2 integrações, nível Team por US$ 127 por mês para 50 integrações e Enterprise com preço personalizado.
Onde a cerimônia se acumula
O custo está em operar o ciclo completo de contratos.
Cada equipe de consumidor escreve código DSL
Os pactos são gerados a partir do código de teste. Portanto, cada equipe aprende a DSL do Pact para sua linguagem. Em uma organização poliglota, isso significa manter várias DSLs, regras de correspondência e configurações de mock.
Esse código precisa ser escrito, revisado, depurado e refatorado continuamente.
Estados do provedor viram um conjunto de testes oculto
Cada interação pode exigir um estado específico, por exemplo:
usuário 42 existe com uma fatura não paga
A equipe do provedor precisa implementar um manipulador para construir esse estado. À medida que os consumidores aumentam, o provedor passa a manter um catálogo de manipuladores para formatos de dados que não controla.
O broker é infraestrutura
Ao hospedar o broker internamente, você precisa operar:
- Banco de dados;
- Atualizações;
- Autenticação;
- Webhooks para os sistemas de CI;
- Convenções de versionamento, branches e ambientes.
Com uma opção gerenciada, o trabalho operacional diminui, mas você adiciona outro fornecedor à stack.
A verificação do provedor pode ser instável
A verificação reproduz requisições registradas por consumidores contra uma instância ativa do provedor. Isso traz toda a complexidade do runtime:
- Seeds de banco de dados;
- Stubs de autenticação;
- Jobs em segundo plano;
- Dependências externas;
- Dados de teste.
Quando o build falha, o teste problemático pode ter sido escrito por outra equipe e bloquear o deploy via can-i-deploy. Essas sessões de depuração entre equipes costumam ser o momento em que verificações começam a ser ignoradas.
O próprio PactFlow reconhece esse peso. Seu teste de contrato bidirecional remove a etapa de replay: o provedor publica um documento OpenAPI, consumidores publicam contratos derivados de mocks e o PactFlow compara ambos estaticamente.
Para muitas integrações, comparar esquemas é suficiente. Essa é também a ideia discutida em testes de contrato bidirecionais.
A resposta: Apidog
Apidog é uma plataforma de desenvolvimento de APIs usada por mais de 500.000 desenvolvedores. Ela coloca uma especificação OpenAPI no centro e gera o restante a partir dela:
- Documentação;
- Mock servers;
- Validação de requisições;
- Cenários de teste automatizados.
Como alternativa ao Pact, a proposta segue uma teoria diferente de contratos, apresentada em testes de contrato de API: use a especificação como contrato e imponha esse contrato mecanicamente em todos os pontos da entrega.
1. Um contrato, zero DSLs
A especificação é o acordo entre produtor e consumidor. Ninguém precisa escrever código para gerar pactos em diferentes linguagens: as equipes editam e revisam um único documento OpenAPI, visualmente ou como código.
2. Validação de esquema em cada execução
Cada requisição enviada no Apidog e cada cenário executado em CI pode validar a resposta contra a especificação.
Isso detecta automaticamente problemas como:
- Campo renomeado;
- Tipo alterado;
- Propriedade removida;
- Resposta incompatível com o formato esperado.
Você não precisa escrever uma asserção para cada campo do payload.
3. Consumidores desenvolvem contra o contrato desde o primeiro dia
O mock server serve respostas derivadas do esquema assim que um endpoint é definido. Em vez de criar estados de provedor para cada cenário, o mock é gerado a partir do contrato.
Quando precisar de dados específicos, você pode configurar expectativas personalizadas.
4. Aplicação em CI sem broker
Use apidog run para executar cenários de teste no pipeline:
apidog run --environment ci
Se uma implementação do provedor quebrar a especificação, o próprio pipeline do provedor falha antes do deploy. O resultado continua sendo “não implantar uma alteração incompatível”, mas o bloqueio acontece na origem, e não em uma matriz centralizada.
Como é a mudança, peça por peça
O contrato
No Pact, o contrato é um arquivo JSON de interações de exemplo gerado por testes de consumidores.
No Apidog, o contrato é a especificação OpenAPI, que descreve:
- Tipos;
- Campos obrigatórios;
- Enums;
- Formatos de erro;
- Endpoints;
- Parâmetros;
- Códigos de resposta.
A especificação fica em um único local e pode ser versionada por branch.
A compensação é clara: a fatia por consumidor do Pact informa ao provedor quais campos cada consumidor utiliza. Uma especificação compartilhada não carrega esse sinal de uso individual.
Por outro lado, a especificação é um artefato que documentação, mocks, testes e clientes podem compartilhar. Veja mais em o que é um contrato de API.
Verificação do lado do provedor
No Pact, o provedor reproduz interações gravadas por consumidores.
No Apidog, você cria cenários de teste contra a implementação real e executa esses cenários com validação de esquema ativada no CI.
Exemplo de fluxo:
- Defina o endpoint e seus schemas no OpenAPI.
- Crie um cenário de teste com uma requisição representativa.
- Execute o cenário contra o ambiente de CI.
- Faça o build falhar quando a resposta não corresponder ao schema.
O provedor continua sendo verificado contra o contrato, sem manter estados autorais definidos pelos consumidores.
Desenvolvimento do lado do consumidor
No Pact, cada consumidor usa um mock provider dentro dos próprios testes de unidade.
No Apidog, cada consumidor pode usar uma URL de mock hospedada, derivada da especificação e compartilhada entre equipes.
Fluxo prático:
- Defina o endpoint no OpenAPI.
- Publique ou compartilhe a URL do mock.
- Configure o frontend ou serviço downstream para usar essa URL.
- Substitua dados genéricos por expectativas personalizadas quando necessário.
- Troque para a URL do ambiente real quando o provedor estiver disponível.
Assim, equipes de frontend e serviços downstream podem começar antes que o provedor tenha uma implementação pronta. Veja testes de contrato e mock servers para comparar mocks guiados por especificação com mocks construídos manualmente.
Gatilho de implantação
Este é o principal ponto forte do Pact — e o Apidog não o replica.
O Apidog não oferece:
- Matriz de serviço cruzado;
- Verificação entre todas as versões implantadas;
- Equivalente ao
can-i-deploy.
Em vez disso, ele aplica o contrato no pipeline de cada serviço:
- Uma alteração do provedor que viola a especificação falha no CI do provedor.
- Uma alteração da especificação passa por revisão explícita.
- Mocks e documentação são atualizados para todos os consumidores a partir do mesmo contrato.
Para serviços implantados em um conjunto coordenado de pipelines, o gating no nível do contrato geralmente resolve o problema. Para dezenas de equipes com deploys totalmente independentes, o gating baseado em matriz ainda é útil.
Pact e PactFlow vs Apidog em um relance
| Pact + PactFlow | Apidog | |
|---|---|---|
| Artefato de contrato | Arquivos pact gerados por consumidor | Uma especificação OpenAPI |
| Quem escreve o código do contrato | Todas as equipes de consumidor, com DSL por linguagem | Ninguém; a especificação é editada visualmente ou como código |
| Verificação do provedor | Reprodução de interações + estados do provedor | Cenários de teste + validação automática de esquema |
| Mocks do consumidor | Mock provider no teste | Mock inteligente hospedado a partir da especificação |
| Detecção de divergência | Nas execuções de verificação | Em cada requisição e em cada execução de CI |
| Gatilho de implantação | Matriz do broker + can-i-deploy
|
CI com gatilho de contrato por serviço |
| Infraestrutura | Broker auto-hospedado ou PactFlow SaaS | Nenhuma infraestrutura adicional; workspace na nuvem incluído |
| Documentação e design | Fora do escopo | Documentação interativa e editor visual de especificação |
| Custo | OSS gratuito; PactFlow gratuito para 2 integrações, Team por US$ 127/mês | Gratuito para até 4 usuários; planos pagos a partir de US$ 9 por usuário/mês |
A matemática do custo e do ajuste
As bibliotecas do Pact são open source e gratuitas. O custo está na coordenação:
- Hospedagem do broker ou assinatura do PactFlow;
- Testes DSL;
- Manipuladores de estado;
- Depuração de verificações;
- Alinhamento entre equipes.
Esse esforço cresce com o número de integrações.
O plano gratuito do Apidog cobre 4 usuários com editor de especificações, uso ilimitado de mock server, cenários de teste, validação de esquema e execuções via CLI. Os planos pagos começam em US$ 9 por usuário por mês.
A comparação não é apenas sobre licença. A decisão é entre manter uma plataforma de teste de contrato baseada em broker ou adotar uma abordagem spec-first, em que o contrato acompanha as ferramentas de API que a equipe já utiliza.
Se você também está consolidando ferramentas, comece pela melhor alternativa ao Postman. Para uma stack completa, veja a toolstack de desenvolvimento contract-first.
Migrando do Pact
Você não converte arquivos pact diretamente. Você promove a especificação OpenAPI para ser o contrato principal.
1. Obtenha uma especificação OpenAPI real
Se já houver uma especificação, importe-a no Apidog. Ela passa a alimentar documentação, mocks e regras de validação.
Se não houver uma especificação:
- Gere uma a partir de anotações do código, se possível.
- Use os arquivos pact como checklist dos endpoints realmente consumidos.
- Documente schemas de requisição, resposta e erro.
- Revise a especificação com consumidores e provedores.
2. Ative a validação de esquema no CI
Crie cenários de teste para os endpoints do provedor e execute-os a cada build:
apidog run --environment ci
Esse passo substitui a verificação do provedor do Pact para incompatibilidades de schema.
3. Aponte consumidores para o mock inteligente
Substitua a configuração de mocks do Pact pela URL de mock hospedada do Apidog.
Faça a migração gradualmente:
- Migre um consumidor.
- Remova seu código DSL do Pact.
- Valide o fluxo contra o mock baseado em OpenAPI.
- Repita para os demais consumidores.
4. Controle alterações da especificação
Trate edições no OpenAPI como mudanças revisadas em branch:
- Exija revisão de pull request;
- Identifique mudanças incompatíveis;
- Atualize consumidores antes do deploy;
- Versione a especificação quando necessário.
Assim, mudanças que quebram clientes se tornam diferenças explícitas no contrato, não incidentes em produção.
5. Desative o broker por último
Mantenha o can-i-deploy nas integrações em que deploys independentes representam risco real.
Remova o broker onde ele apenas adiciona cerimônia sem entregar uma decisão de implantação necessária.
Quando o Pact ainda faz sentido
O Pact continua sendo uma boa escolha quando:
- Muitas equipes implantam serviços independentemente;
- Cada serviço tem seu próprio ritmo de release;
- Você precisa responder de forma automatizada se uma versão pode entrar em produção considerando tudo que já está implantado;
- Contratos de filas de mensagens fazem parte do problema;
- A matriz de verificações entre versões é um requisito operacional.
Nesses casos, a matriz do broker e o can-i-deploy foram feitos para o problema.
O modo bidirecional do PactFlow é uma opção intermediária se você quer abandonar a cerimônia de replay sem sair do ecossistema Pact. Ele compartilha a premissa de que uma especificação pode representar o contrato.
Mas se o problema principal é divergência de esquema, mocks e validação em CI — e não ordenação de deploy entre muitas equipes — você pode estar pagando o custo total do Pact por uma parte pequena dos benefícios.
Perguntas frequentes
Apidog é uma ferramenta de teste de contrato como o Pact?
Ele impõe contratos de forma diferente.
O Pact gera contratos por consumidor a partir de código de teste e os reproduz contra provedores. O Apidog usa a especificação OpenAPI como contrato e valida requisições e execuções de CI contra ela.
Isso cobre divergências de esquema sem o fluxo de trabalho do broker. Veja testes de contrato de API para mais detalhes.
O Apidog suporta can-i-deploy ou um Pact Broker?
Não. O Apidog não possui matriz de verificação nem gating de implantação entre serviços.
Seu gating é orientado ao contrato: builds que violam a especificação falham no próprio pipeline. Equipes que precisam de uma matriz entre versões devem manter o Pact nessas integrações.
Como alternativa intermediária, avalie a comparação estática em testes de contrato bidirecionais.
O Apidog pode substituir os mocks de consumidor do Pact?
Sim, para a maioria dos casos.
O mock server inteligente gera respostas compatíveis com o schema a partir da especificação, sem configuração inicial. Para cenários específicos, você pode definir expectativas personalizadas.
Em vez de escrever DSL para um mock provider local, as equipes desenvolvem contra uma URL de contrato ativa. Veja ferramentas de teste de contrato e mocking para um panorama mais amplo.
E quanto a testar o provedor contra a especificação com fuzzing?
Combine os cenários de teste do Apidog com uma ferramenta de testes baseados em propriedades para obter cobertura negativa mais ampla do que a reprodução de exemplos.
A mesma especificação OpenAPI pode alimentar ambas as ferramentas. Veja o que é Schemathesis.
Quanto custa o PactFlow em comparação com o Apidog?
O nível Starter do PactFlow é gratuito para 2 integrações. O nível Team custa US$ 127 por mês, cerca de US$ 1.385 faturados anualmente, para 50 integrações. O Enterprise possui preço personalizado.
O Apidog é gratuito para até 4 usuários, com planos pagos a partir de US$ 9 por usuário por mês. As ferramentas de contrato estão incluídas, em vez de serem cobradas como um broker separado.
Se você também está comparando ferramentas de captura e reprodução, veja a melhor alternativa ao Keploy.
Dispense a cerimônia, mantenha o contrato
Se sua configuração do Pact existe principalmente para detectar divergências de schema, você pode obter essa garantia com uma única especificação validada em cada execução, além de mocks que os consumidores já precisam.
Fluxo mínimo:
- Importe seu arquivo OpenAPI.
- Configure cenários de teste.
- Execute
apidog runno CI. - Distribua a URL do mock para os consumidores.
- Faça alterações de especificação passarem por revisão.
Baixe o Apidog ou comece no navegador. Uma equipe de até 4 usuários pode usar o plano gratuito — e o broker que você deixa de manter é parte do ganho.
Top comments (0)