Endereços fictícios: o campo mais complexo do e-commerce
Um guia técnico completo para testar formulários de entrega no Brasil.
Do ponto de vista de QA, o campo de endereço é o mais perigoso de testar inadequadamente. Ele envolve múltiplos campos interdependentes (logradouro, número, complemento, bairro, cidade, estado, CEP), regras de negócio complexas (zonas de entrega, cálculo de frete por região), integração com APIs externas (Correios, Google Maps) e restrições fiscais (ICMS por estado). Uma string genérica como "Rua Teste, 1" não vai descobrir nem 10% dos bugs reais.
A estrutura de um endereço brasileiro
Um endereço brasileiro completo para um sistema de e-commerce precisa de pelo menos 6 campos funcionando em harmonia:
| Campo | Exemplo | O que testar |
|---|---|---|
| Logradouro | Rua das Flores | Tipo: Rua / Av / Travessa / Alameda |
| Número | 1247 | Sem número (s/n), número muito grande (99999) |
| Complemento | Apto 42, Bloco B | Campo optional — null não deve quebrar |
| Bairro | Pinheiros | Bairros com acentos e nomes compostos |
| CEP | 05422-030 | Com e sem hífen, CEP inexistente, CEP de outro estado |
| Cidade + UF | São Paulo, SP | Coerência: cidade ≠ estado do CEP |
Testando zonas de entrega e cálculo de frete
Um dos maiores desafios de QA em e-commerces brasileiros é garantir que as regras de frete funcionam corretamente para diferentes regiões. O Brasil tem uma disparidade enorme de frete entre capitais e interior, entre Sul+Sudeste e Norte+Nordeste. Um bug de cálculo de frete pode custar caro — literalmente.
Teste de capital vs. interior
Gere um endereço de São Paulo (capital) e um de interior (Sorocaba, SP) e verifique se o frete e prazo diferenciam corretamente.
Teste de zona de restrição
Gere endereços de AC, RR, AM — estados de acesso difícil. Verifique se o sistema rejeita ou oferece opções alternativas adequadas.
Teste de cálculo de ICMS
CEPs de RS, SP e AM têm alíquotas de ICMS diferentes para e-commerce. Confirme que o imposto no pedido muda conforme o estado de destino.
Teste de formato de CEP
CEP com hífen '01310-100' e sem hífen '01310100' devem ambos funcionar. Teste que a sanitização ocorre antes da consulta à API dos Correios.
Mockando a API ViaCEP no Cypress
Em vez de deixar seus testes E2E dependerem de uma API externa instável, intercepte a chamada e retorne nosso payload. Isso torna seus testes determinísticos e 10x mais rápidos:
// cypress/e2e/checkout.cy.ts
cy.intercept("GET", "https://viacep.com.br/ws/*/json/", {
statusCode: 200,
body: {
cep: "04538-133",
logradouro: "Avenida Brigadeiro Faria Lima",
bairro: "Itaim Bibi",
localidade: "São Paulo",
uf: "SP",
ibge: "3550308"
}
}).as("viaCep");
cy.get("[data-testid='cep-input']").type("04538133");
cy.wait("@viaCep");
cy.get("[data-testid='cidade']").should("have.value", "São Paulo");Dica de Senior QA
Sempre que possível, crie dois cenários: um com intercept (para o happy path determinístico) e um sem intercept (para o teste de integração real que roda apenas no CI com acesso à internet). Você terá velocidade nos testes locais e garantia de integração real no pipeline.
