← Blog Home

Checklist QA: probar registro y OTP con correo desechable (sin sorpresas)

es 2026-02-07 13:36:30

Checklist QA: probar registro y OTP con correo desechable (sin sorpresas)

Probar un flujo de signup + verificación + OTP con correo desechable no es “una prueba más”. Es una batería de validaciones donde se cruzan deliverability, seguridad, UX, antiabuso y métricas. Si tu producto permite (o no bloquea) emails temporales, tienes que asegurarte de que el usuario legítimo recibe el código a tiempo, de que el sistema resiste reintentos y de que el equipo puede depurar incidencias sin tocar datos sensibles.

Este checklist está pensado para QA funcional y de producto: pasos concretos, casos límite y señales de alarma. Úsalo como guion para pruebas manuales, automatización E2E y validación previa a release.

1) Preparación de entorno y datos de prueba

  • Entorno: confirma si estás en staging, preprod o prod; revisa feature flags de signup/OTP.
  • Plantillas: identifica la plantilla exacta de “verificación” y “OTP” (título, remitente, cuerpo, enlaces).
  • Proveedor: ten a mano al menos 2–3 correos desechables de proveedores distintos para comparar comportamiento.
  • Variables: define país/idioma, zona horaria, tipo de usuario (nuevo vs existente), y canal (web/iOS/Android).
  • Observabilidad: habilita logs con IDs correlacionables (request_id, user_id hash, otp_id) sin exponer PII.

Consejo de QA: antes de iniciar, acuerda con backend cómo se rastrea una solicitud OTP de extremo a extremo (API → cola → proveedor email → entrega → verificación). Sin esa trazabilidad, los bugs se vuelven “fantasmas”.

2) Validaciones del formulario de registro

Entrada de email

  • Formato correcto: dominios con subdominios, plus addressing, mayúsculas, espacios al inicio/fin, caracteres unicode.
  • Normalización: trim, lowercasing cuando aplique, y comparación consistente para evitar duplicados.
  • Mensajes de error claros: no revelar si un email existe (evitar enumeración de cuentas).
  • Autocompletado: en móvil, teclado tipo email, autocorrección desactivada, accesibilidad del label.

Contraseña y políticas

  • Reglas: longitud, complejidad, listas de contraseñas comunes, y feedback en tiempo real sin bloquear el flujo.
  • Mostrar/ocultar: botón accesible, no rompe foco, no cambia el layout.
  • Copiar/pegar: permitido (mejor UX) y no rompe validación.

Aceptación de términos

  • Checkbox obligatorio: errores visibles y accesibles.
  • Links a política/terms: abren correctamente (webview externa/in-app según plataforma) y vuelven al flujo sin perder estado.

3) Envío del email de verificación: entrega y contenido

Con correo desechable, lo más frecuente es fallar en la entrega o en el tiempo. Tu QA debe medir y verificar: ¿se envía?, ¿se entrega?, ¿se ve?, ¿se entiende?, ¿se puede usar?

Deliverability básica

  • Remitente coherente: nombre y dirección; evita remitentes genéricos que disparan filtros.
  • Asunto útil: identifica producto y acción (“Verifica tu cuenta”, “Tu código de acceso”).
  • Tiempo de llegada: prueba en red rápida y lenta; mide retrasos; verifica reintentos de la cola.
  • Duplicados: al pedir reenvío, llega un email nuevo (no se recicla el anterior de forma confusa).

Contenido del email

  • Enlaces: abren en el navegador correcto, y redirigen a una página final con confirmación clara.
  • Fallback: si hay link y código, ambos funcionan; si el link expira, el código sigue un flujo consistente.
  • HTML vs texto: el email se entiende en ambos; imágenes no son requisito.
  • Localización: idioma correcto según selección del usuario; formatos de fecha/hora coherentes.

Seguridad del enlace

  • Token: longitud suficiente, no predecible, y con expiración.
  • Uso único: el mismo link no debe verificar dos veces de forma peligrosa; manejo de “ya verificado”.
  • No filtrar datos: el link no debe incluir PII en claro (email, nombre, etc.).

4) OTP: generación, expiración y reintentos

Generación y formato

  • Longitud y tipo: 6 dígitos o lo que defina el producto; consistente en UI, email y backend.
  • Caracteres ambiguos: si es alfanumérico, evita confusión (O/0, I/1) o usa dígitos.
  • Vinculación: OTP ligado a propósito (login/signup/reset) y a un identificador (sesión o intento).

Expiración

  • Expira en el tiempo esperado: UI muestra un contador real o un mensaje no engañoso.
  • Uso tras expiración: error claro y opción de solicitar uno nuevo.
  • Tiempo del servidor: no depende del reloj del dispositivo; prueba con hora del móvil alterada.

Reenvíos y límites

  • Botón “Reenviar”: deshabilitado el tiempo correcto; evita spamming accidental.
  • Rate limit: después de N intentos, bloqueo temporal; mensajes no revelan demasiado.
  • Invalidación: al generar un OTP nuevo, el anterior debería invalidarse (según política) y esto debe ser consistente.

Intentos de verificación

  • Intentos fallidos: cuenta atrás, bloqueo o captcha (si existe); logs de seguridad registran el patrón.
  • Brute force: verifica que el backend corta intentos repetidos incluso si el UI no lo impide.
  • Errores de red: si la verificación falla por timeout, la app no debe marcar el OTP como “usado” sin confirmación.

5) Experiencia de usuario: el flujo debe sentirse “fluido”

Un usuario con correo desechable suele estar en modo “rápido”: quiere entrar, copiar el código y seguir. Tu QA debería asegurarse de que el flujo no castiga ese comportamiento.

  • Copiar OTP: el email muestra el código claramente; la app permite pegar; no bloquea por formato.
  • Autofill: en iOS/Android, prueba sugerencias de código (si existen) y que no rompan el foco.
  • Estados de carga: botones con spinner, sin dobles envíos; errores recuperables.
  • Volver atrás: navegar atrás no debería “romper” la sesión ni duplicar intentos.
  • Mensajes: evita textos técnicos (“token inválido”); usa “código incorrecto o caducado”.

6) Casos límite que rompen releases (pruébalos siempre)

Email llega tarde

  • OTP caduca antes de llegar: el sistema debe soportar pedir uno nuevo sin confusión.
  • El usuario recibe dos OTP: la UI debe explicar cuál usar (idealmente el más reciente).

El correo desechable caduca

  • El buzón desaparece a mitad del flujo: la app debe permitir cambiar email o reiniciar registro sin quedar bloqueado.
  • El usuario intenta recuperar: el producto no debe sugerir “revisa tu bandeja” si ya no existe; ofrece alternativas.

Cuenta ya existente

  • Registro con email ya usado: mensaje que no confirma existencia (seguridad) pero guía el siguiente paso.
  • Si el usuario elige “iniciar sesión”, el flujo se redirige sin perder contexto.

Verificación repetida

  • Click en link dos veces: “ya verificado” sin error 500.
  • OTP ya usado: respuesta consistente; no se permite reutilización.

7) Antiabuso y detección de correos desechables

Algunas empresas deciden bloquear dominios temporales. Otras los permiten, pero aplican controles. Sea cual sea tu política, QA debe validar que el comportamiento es coherente y no genera falsos positivos masivos.

  • Si bloqueas: el error debe aparecer en el momento correcto (idealmente en el campo email), con explicación no agresiva.
  • Si permitís: revisa límites extra para OTP, captcha adaptativo o throttling en intentos sospechosos.
  • Listas: si hay “allowlist/denylist” de dominios, prueba un dominio nuevo y uno conocido para confirmar la lógica.
  • Telemetry: registra “dominio temporal detectado” como evento sin almacenar el email en claro.

8) iOS y apps: puntos que suelen fallar

Deep links y navegación

  • Link de verificación abre la app (si corresponde) y aterriza en pantalla correcta.
  • Si la app no está instalada: abre web y permite continuar o descargar.
  • Retorno desde navegador: no se pierde la sesión del registro.

Permisos y seguridad

  • Evita exponer el OTP en notificaciones o logs locales.
  • Si hay portapapeles: no “copies” automáticamente sin intención; respeta privacidad.
  • Capturas de pantalla: si el producto es sensible, valida políticas (según requisitos) sin romper UX.

9) Backend: integridad, consistencia y mensajes correctos

  • Idempotencia: reintentar “enviar OTP” por timeout no debe crear estados corruptos.
  • Estados: usuario “pendiente de verificación”, “verificado”, “bloqueado” y transiciones claras.
  • Errores: códigos HTTP correctos; mensajes de UI no exponen detalles internos.
  • Colas: si hay worker caído, el sistema alerta; QA puede simular y verificar degradación.
  • Persistencia: no guardes OTP en texto plano; valida hashing o equivalentes según arquitectura.

10) Analítica y métricas: saber dónde se cae el usuario

En flujos con OTP y correo desechable, la conversión se pierde en mil detalles. Si no mides, no mejoras. QA puede validar que los eventos existen y se disparan una sola vez, con parámetros correctos.

  • Eventos sugeridos: signup_started, signup_submitted, verification_sent, otp_requested, otp_verified, verification_failed.
  • Parámetros útiles: plataforma, país/idioma, tipo de flujo, motivo de error (sin PII).
  • Funnel: confirma que el usuario no cuenta doble si vuelve atrás o reintenta.

11) Accesibilidad y calidad visual

  • Lectores de pantalla: labels correctos, errores anunciados, focus manejado al mostrar validaciones.
  • Contraste: botones y textos legibles; estados deshabilitados distinguibles.
  • Teclado: navegación por tab, enter para enviar, escape para cerrar modales.
  • Responsive: en móviles pequeños, el campo OTP no se corta; el teclado no tapa CTA.

12) Resultado esperado: criterios de “pasa/no pasa”

Para cerrar QA con claridad, define criterios verificables:

  • El usuario puede completar registro y verificación con un correo desechable típico sin fricciones graves.
  • Los OTP llegan con contenido correcto, dentro de tiempos razonables y con reenvíos controlados.
  • Errores y expiraciones se comunican de forma clara, recuperable y segura.
  • Rate limits y controles antiabuso funcionan sin bloquear a usuarios legítimos.
  • Los enlaces y deep links se comportan bien en web, iOS y Android, sin pérdida de estado.
  • La analítica registra el funnel sin duplicidades ni PII en claro.

Si tu checklist pasa estos puntos, tu flujo está listo para soportar el uso real: usuarios con prisa, redes imperfectas, buzones temporales que caducan y un ecosistema de dispositivos variado.

Tip: Temporary inboxes are best for low-risk sign-ups and verification. Avoid sensitive accounts that require long-term recovery access.