先把“表现不同”拆成可观察的差异,再为同一组件写两组验收样例:一组覆盖它正常工作的页面条件,一组覆盖它失效或输出异常的页面条件。缺少完整数据和后台权限时,仍可以用浏览器开发者工具、页面源码、抓取结果和人工操作记录构造最小验收样例,但只能证明“在该条件下该组件输出什么”,不能推出全站所有页面都正确,也不能推出搜索引擎一定如何抓取或排名。
同一组件在不同页面表现不同,常见原因不是组件代码有两套,而是页面给它的输入不同。构造验收样例前,先固定一个判断顺序:
如果只在两个页面之间比较,很容易把“页面类型不同”误判成“组件坏了”。更稳妥的做法是:先找两个页面类型相同、只有输入不同的页面作为对照;再找两个页面类型不同、但组件参数相同的页面作为对照。两组对照的结论不能混用。
这时优先构造输出型验收样例。它不依赖后台权限,只检查组件最终输出了什么。样例应包含:
具体动作:打开页面源码,搜索组件对应的 HTML 片段,记录它是否出现在初始 HTML 中,还是由脚本后插入。如果初始 HTML 中没有该组件,而页面可见区域后来出现了它,说明验收样例必须包含“脚本执行后”的状态,不能只看源码。这个动作的结果会直接影响下一步:若组件依赖脚本插入,后续验收要同时记录脚本失败时的页面表现,而不是只记录成功状态。
这时优先构造输入型验收样例。它通过人为改变组件接收的参数,观察输出是否按预期变化。样例应包含:
具体动作:在测试环境或可回滚的配置中修改一个参数,只改一项,记录修改前后的页面输出。若修改后组件在详情页正常、在列表页异常,说明验收样例需要按页面类型分开写,而不是写一条“全站通用”的通过标准。这个结果会决定下一步是继续查组件逻辑,还是先查页面类型传入的参数。
颗粒度不够,验收就会变成“看起来没问题”。可执行的样例至少写清四件事:
假设一个组件在详情页显示完整标题,在列表页只显示前几个字。验收样例不能只写“标题显示正常”,而要写成:详情页输入完整标题时,组件输出完整标题;列表页输入同一标题时,组件按列表规则截断,且截断后仍保留可识别的链接或标识。这里的数字只是说明比较方法,不是固定阈值。
没有后台数据、没有日志、没有抓取权限时,仍可做三件事:
这些动作能帮你判断差异是否与登录态、脚本执行或页面类型有关。但它们不能证明搜索引擎看到了什么,也不能证明抓取量、索引量或排名变化。请求量或抓取量归零,可能是统计口径变化、权限限制、采样缺失或页面本身未被访问,不能单独当作组件处理正确的证据。
有两种情况不适合继续套用上面的样例。第一种,组件差异来自第三方嵌入内容,你无法控制其返回结果,此时验收样例应记录“第三方可用”和“第三方不可用”两种状态,而不是要求组件本身修复第三方输出。第二种,页面差异来自个性化或地域化内容,同一 URL 对不同访问者输出不同,此时验收样例必须写明访问身份和地域前提,否则两组结果不可比。
最后要明确:验收样例通过,只能说明在写明的条件下组件输出符合预期;它不能推出全站页面都一致,不能推出搜索引擎会按同样方式处理,也不能替代上线后的实际观察。把样例、前提和未覆盖范围一起记录下来,下一次遇到同一组件在不同页面表现不同时,才能快速判断是该改组件、改页面输入,还是先补一条新的验收样例。