Os programas de referidos estão entre os fluxos mais carregados de email que os produtos lançam: uma partilha gera um código, um referido recebe um email, um registo cria atribuição e, eventualmente, duas pessoas recebem emails de recompensa. Cada passo é uma superfície de falha distinta, e o fluxo é inerentemente multi-caixa — um teste completo precisa de pelo menos um recomendador e um referido. É exatamente onde as caixas descartáveis brilham: endereços novos por execução, extração de códigos por script e nenhuma caixa pessoal dos colegas a encher-se de convites de teste.
Anatomia de um fluxo de referidos que merece testes
Antes de automatizar algo, escreva os eventos que o seu produto emite e o que cada um deve conter:
- Geração de código: único por recomendador, por vezes por canal, com restrições de formato como comprimento, conjunto de caracteres e sensibilidade a maiúsculas.
- Email de partilha: contém o código, uma ligação personalizada com um identificador de clique, ou ambos.
- Registo com o código aplicado: o referido clica na ligação ou introduz o código manualmente — dois caminhos de código diferentes.
- Atribuição: o backend regista o referido ao recomendador, normalmente com uma janela de atribuição e regras para conflitos.
- Emails de recompensa: normalmente dois, um por parte, enviados quando o referido completa uma ação qualificante — não no registo.
A maioria dos bugs de referidos vive nas costuras: o código no email não corresponder ao gerado, o identificador da ligação removido por um redirecionamento, recompensas a disparar no registo em vez da qualificação, ou os dois templates de recompensa trocados.
O fluxo de teste multi-caixa
1. Aprovisione a caixa A e registe o recomendador. [Crie uma caixa temporária](/) ou aprovisione contas por API como coberto em email temporário para contas de teste de QA. 2. Desencadeie a partilha. Use o caminho de convite-por-email com o endereço da caixa B como destinatário. Confirme que o email de partilha chega e extraia o código e a ligação — o extrator de OTP retira códigos dos corpos das mensagens sem regexes por template. 3. Aprovisione a caixa B como uma caixa genuinamente separada. A deteção de auto-referência é uma das coisas sob teste; garanta que o seu teste a apanha deliberadamente, nunca por acidente de aliasing. 4. Complete o registo do referido através da ligação enviada por email. A ligação é a portadora da atribuição; escrever o código manualmente exercita um caminho diferente. Verifique a atribuição no servidor — na base de dados ou numa API de admin — não apenas num selo de UI. 5. Verifique os emails de recompensa para ambas as partes. Após a ação qualificante, a caixa A e a caixa B devem cada uma receber o seu próprio email de recompensa. Verifique nomes, montantes e ligações individualmente; templates trocados são um bug clássico. 6. Execute os caminhos negativos: código expirado, código reutilizado para além do limite, auto-referência, referido cliente existente, expiração da janela de atribuição. Cada um deve produzir uma mensagem clara, não silêncio. 7. Repita uma vez com um código introduzido manualmente para cobrir o caminho sem ligação.
Os passos um a cinco scriptam-se bem para CI, e o playground da API é uma forma rápida de prototipar a coreografia de duas caixas antes de se tornar uma suite.
Atribuição de ligações: onde os referidos partem em silêncio
A ligação enviada por email é a parte frágil:
- Cadeias de redirecionamento — do email para o domínio de rastreio para a aplicação — podem perder parâmetros de consulta em qualquer salto. Capture o URL final de aterragem no seu teste e verifique se o identificador de clique sobreviveu.
- Primeiro clique versus último clique: quando um referido clica em duas ligações de referido diferentes, a sua regra de conflito decide quem recebe o crédito. Teste explicitamente o caso de duplo clique; quase ninguém o faz.
- Realidade multidispositivo: clique no telemóvel, registo no portátil. Muitos programas perdem a atribuição aqui por conceção; verifique se o comportamento documentado corresponde à implementação.
- Normalização de códigos: maiúsculas, espaços e confusão entre zero e a letra O. Um código que funciona colado mas não escrito é um gerador de tickets de suporte.
Armadilhas de desencadeamento antifraude
Os programas de referidos são patrulhados agressivamente contra fraude, e um ciclo de testes pode parecer exatamente abuso:
- Rajadas do mesmo IP: dezenas de registos de um único runner de CI em minutos assemelham-se a uma fazenda de fraude. Isole o tráfego de teste em staging ou consiga que contas e intervalos de IP de teste sejam permitidos explicitamente.
- Blocklists de domínios descartáveis: os fluxos de referidos costumam bloquear domínios descartáveis precisamente por causa do abuso de referidos. A sua ferramenta de testes pode ser bloqueada pela funcionalidade que está a testar — conte com isso e leia-o como um dado sobre o comportamento da sua própria blocklist em vez de um mistério de indisponibilidade.
- Regras de velocidade: ciclos rápidos de gerar-partilhar-registar por conta acionam verificações de velocidade. Espaçe as execuções automáticas ou sinalize as contas como tráfego de teste onde o sistema o suportar.
- Limites de recompensa: um limite por recomendador pode parar silenciosamente de recompensar após um número fixo de referidos, o que parece que os emails pararam de ser enviados. Verifique os contadores antes de culpar o pipeline de correio.
O modo de falha a evitar: a suite é sinalizada na sombra, os referidos deixam de funcionar para as suas contas e começa a registar bugs de correio que são na verdade veredictos do sistema antifraude.
FAQ
De quantas caixas precisa um teste de referidos? Duas no mínimo: recomendador e referido. Acrescente uma terceira ao testar conflitos de atribuição — dois recomendadores a competir por um referido — e use pares novos em cada execução para que o estado anterior não vaze entre testes.
Como extraio códigos de referido automaticamente? Obtenha a mensagem mais recente em cada caixa e analise o código do corpo com um extrator dedicado. Verificar a presença e o formato do código é muito mais estável do que verificar o texto envolvente, que muda constantemente.
Os testes de referidos devem correr no CI em cada commit? O caminho feliz, sim — é barato com caixas aprovisionadas por API. Mantenha cenários adjacentes à fraude, como velocidade e limites, atrás de um sinal ou num ambiente noturno onde tráfego deliberadamente estranho seja seguro.
Como distingo um bug de correio de um veredicto antifraude? Rastreie o envio no servidor primeiro. Se o seu sistema nunca pôs o email em fila, a causa é normalmente uma regra — um limite, uma blocklist, uma verificação de velocidade — não o pipeline de correio. Registos no ponto de decisão batem o palpite do lado da caixa todas as vezes.
Conclusão
Os fluxos de referidos multiplicam as superfícies de teste de email: duas partes, várias mensagens, ligações que transportam atribuição e sistemas antifraude a vigiar tudo. As caixas descartáveis tornam a configuração multiparte trivial — pares novos por execução, códigos analisados programaticamente, atribuição verificada no servidor. Teste os caminhos negativos com tanto rigor quanto o caminho feliz; nos sistemas de referidos, os caminhos infelizes são onde o dinheiro escapa.
