先对齐三个时间点,而不是盯着邮件排序

2026 年的注册流程常把发码任务放进队列:页面提示请求已接受,后台生成验证码,邮件服务再尝试投递。用户看到的“已发送”可能只是任务创建成功,并不能证明邮件已经抵达收件服务器。第二次请求有机会走更快的队列,于是新码先到、旧码后到。

测试时至少记下三件事:点击发送的本地时间、收件箱首次出现这封信的时间,以及提交验证码的时间。拥有服务端日志时,再补充验证码签发时间和邮件任务标识。不要把邮件正文的日期或 Date 信头直接当作收件时间,它们通常由发送端填写。

例子:10:00:00 触发 A,10:01:00 触发 B;B 在 10:01:04 出现,A 在 10:01:12 才出现。此时列表最上面的 A 可能恰好是已经失效的旧码。

浏览器轮询只能给出“首次被页面观察到”的时间,精度受轮询间隔、网络和页面是否在前台影响。它适合定位分钟级乱序,不是毫秒级投递监测。需要计算严格的服务等级指标时,应使用发送日志与接收端日志,而不是依靠截图倒推。

只发一次,建立能重复的收信基线

先打开收信测试邮箱,复制当前地址,确认剩余有效期覆盖本轮测试。仅在你有权操作的测试环境里填写这个地址;不要拿临时邮箱绑定资产、正式业务账户或需要长期找回的身份。地址到期和验证码到期是两件独立的事,延长前者不会延长后者。

  1. 准备一个未使用过的测试账户,并记下测试环境、页面版本和本地时区。
  2. 只点击一次发送。记录请求是否成功,不要为“让邮件快点到”连续点击。
  3. 保持收件页打开,等真实来信出现,核对收件地址、主题与正文用途。
  4. 在声明的有效期内提交验证码,记录验证结果,再用同一码尝试一次以检查是否已被消费。

同一码第二次提交是否应失败,要看产品规范。用于一次性登录的验证码通常应在成功使用后失效,但测试人员不能把这种期望写成所有产品都遵循的事实。先与负责认证的团队确认:有效期从签发还是发送开始计时、成功验证后是否立即消费、同一地址是否只保留一枚活动验证码。

这一步如果已经收不到信,先回到注册测试工作台的触发与投递检查,不要马上进入重发实验。没有成功基线时,“旧码失效”和“从未发出”很容易被混为一谈。

重发要测两轮,避免一次尝试污染结论

在冷却结束后请求 B,把 A 和 B 分别标记为第一轮与第二轮。若两封邮件的验证码相同,不要仅凭数值认定为重复投递:有的系统在有效期内重发同一码,有的系统每次签发新码。请对照任务标识、发送日志及产品设计判断。

假设规范明确“重发立即使旧码失效”,可以做两轮相互独立的实验。第一轮请求 A、再请求 B,先提交 A 并记录拒绝结果;第二轮换一个干净会话重新请求 A、B,仅提交 B,确认新码可以完成验证。不要先把 B 用掉,再据 A 失败推断重发机制正确,因为 A 也可能因整个挑战已结束而被拒绝。

  • 旧码在新码签发后仍通过:查活动挑战的存储与失效逻辑,不要只调邮件队列。
  • 新码也失败:核对挑战 ID、会话、测试地址和时钟,再查过期时间。
  • 邮件到达时已经过期:把签发到投递的时间差交给邮件与认证团队共同分析。
  • 点击重发被限流:保留冷却提示,按允许的节奏测试,不绕过限流。

到期边界同样要用独立样本。分别在有效期内、临近边界和过期后提交,避免同一码反复试错触发锁定。客户端倒计时是提示,服务端的判断才是最终结果;用户设备时钟快慢不应决定验证码是否通过。

多标签页冲突,与“重复收到邮件”分开判断

如果一个标签页发出 A,另一个发出 B,两个页面可能分别持有不同的挑战或会话。把 B 填回第一个标签页失败,并不自动说明邮件乱序。先在单标签页里复现,再测试双标签页,分别记录每个页面的操作和预期。

对“收到两封一样的信”,至少区分三种情况:页面重复提交了两次、后台重试导致重复投递、收件界面重复显示。能访问原始信头时可比较 Message-ID,并与邮件任务日志关联;但它只是线索,不是唯一证据,转发或供应商处理也可能改写相关字段。

只收到一封也不能证明系统有幂等保护。第二次任务可能尚未执行,或邮件供应商做了合并。要验收防重复机制,应检查被测系统的请求标识与任务记录;临时收件箱负责证明最终观察到了什么,不能替代后台行为审计。

把观察写成别人能够复现的验收记录

一份有效报告应包含环境版本、匿名化的账户标识、地址有效期、发码操作时间、观察到达时间、验证码提交时间和页面结果。用 A、B 代替完整验证码;关联日志时写任务 ID,不把仍有效的验证码放到公开工单。截图如果带有验证链接,分享前也要遮蔽其中的令牌。

结论尽量收窄。例如“第二次请求后,第一枚验证码仍在同一会话被接受”比“验证码不安全”更可执行;“收件页在 12 秒后观察到邮件”比“邮件服务延迟 12 秒”更准确,因为你没有测到所有中间环节。

完成时间顺序验收后,还要看邮件本身。主题是否清楚标明用途,正文是否说明有效期,手机上能不能区分相似数字?继续读通知邮件的内容与纯文本验收,把“到达了”和“用户能正确使用”拆开验证。术语不确定时,可查收信术语表。

下一轮,只改变一个变量

拿一个干净的临时地址,先发一封基线邮件,再测试重发。HideRelay 只负责收信,不替被测产品签发或验证验证码。