先给结论:不要试图把组件在所有页面的表现统一成一句话,而要构造一组“受控对照样例”,让同一组件在可解释的差异条件下各跑一次,再记录差异是否与预设原因一致。判断的关键不是结果是否好看,而是结果能否被一个可复现的条件解释。
同一组件在不同页面表现不同,常见的第一种解释是观察本身不可靠:截图时机不同、数据未加载完、缓存命中了旧版本、页面宽度不同、字体回退不同。这些都会让差异看起来像组件问题,实际是环境问题。
可执行动作:固定一组观察条件,包括视口宽度、缩放比例、等待时间、登录状态、数据来源,然后对每个页面各截两次。如果两次之间就不一致,说明差异来自环境而非页面。这一步的结果决定下一步方向:不稳定就先修观察方法,稳定才进入组件本身的对照。
页面之间的差异通常落在几类可枚举的条件上,而不是笼统的“这个页面不一样”:
构造验收样例时,每个样例只改一个条件,其余保持相同。这样差异出现时,能指向唯一变量。若一次改多项,即使复现了问题,也无法判断是哪一项造成的。
假设某卡片组件在列表页正常、在详情页侧栏错位。可以先建立如下假设与对应样例(以下为说明方法的假设场景,非真实项目记录):
每跑完一个样例就记录:条件、观察结果、是否支持假设。支持则缩小范围继续验证,不支持则排除该原因并转向下一个。这样做的价值在于,结论来自被排除的选项,而不是来自猜测。
定位到原因后,验收样例要能长期使用,而不只是一次性排查。建议每个样例包含四要素:前置条件、操作步骤、观察点、通过标准。观察点要具体到可核对的位置,例如“卡片右边缘与容器右边缘的间距”而不是“看起来正常”。
通过标准应写成条件式:在容器宽度不小于某值时,间距保持一致;在内容超长时,组件不溢出容器。这样后续任何页面复用该组件,都能用同一组样例核对,而不是重新凭感觉判断。
如果某个页面的差异突然消失,不能直接认定问题已修复。差异归零还可能是:该页面数据为空导致组件未渲染、条件分支未触发、缓存返回旧结果、观察条件被改变。这些都属于合理解释,需要逐一排除。
同样,所有页面表现一致也不代表组件正确,可能只是所有页面都命中了同一个错误分支。可执行动作:在一致的结果上,反向构造一个应触发差异的样例。如果该样例仍不产生预期差异,说明测试条件没有真正生效,需要回到条件设定重新检查,而不是结束验收。
最终,验收样例的价值不在于证明组件好看,而在于让“为什么这里不一样”变成一个有条件、可复现、可交接的答案。