先给结论:不要用“组件本身对不对”来验收,而要用“同一组件在不同页面、不同数据条件下的表现是否可复现”来验收。做法是选择两个条件——数据量小与数据量大、或首屏可见与滚动后可见——各构造一组最小样例,记录实际渲染结果,再把差异转成可核对的项目。
组件在页面 A 正常、在页面 B 错位,通常不是组件代码被改坏了,而是它继承的外部条件变了。常见变量有三类:容器宽度、数据条数、以及同页其他脚本的执行顺序。这三类变量里,前两类最容易在验收阶段被忽略,因为它们不影响组件单独打开时的表现。
把分歧转成可核对项目的第一步,是让每个角色说出自己看到的是哪个页面、哪种数据状态。设计师看到的是设计稿尺寸下的样子,开发看到的是本地测试数据下的样子,运营看到的是正式数据下的样子。三种“事实”都成立,只是条件不同。验收样例的作用就是把这些条件显式写出来。
同一组件在数据量小和数据量大时,处理方式应当不同,验收样例也要分开构造。
选择依据很简单:如果这个组件在正式内容里会出现长度差异很大的文案,就必须用大数据样例验收;如果它的内容长度基本固定,小数据样例加一条边界值即可。例外是分页或懒加载组件,数据量大时它可能根本不渲染全部条目,这时要单独核对加载后的状态,而不是拿首屏结果下结论。
一份能减少争论的样例,至少包含三个字段:条件、操作、预期。条件写页面路径和视口宽度;操作写“滚动到该组件”“切换到第二页”这类可重复动作;预期写具体数值或可见状态,而不是“显示正常”。
假设一个桂林本地企业站的新闻列表组件在首页和详情页侧栏表现不同。可以这样写样例:条件为首页宽度 1280、侧栏宽度 360;操作为加载 20 条标题;预期为标题最多两行、超出部分省略、容器高度不超过 320。这里的所有数字都是假设示例,用于说明写法,实际数值应按设计稿确定。下一步动作是把两组样例分别在两个页面执行,把截图和实际高度填入同一张记录,差异就变成了可核对的项目,而不是“我觉得不对”。
有时开发者会看到控制台没有报错、接口返回正常,就认为组件没问题。这两项只能说明脚本执行和数据获取没有明显失败,不能证明布局正确。同样,某个页面截图看起来正常,也不能证明另一个页面正常,因为容器宽度和相邻模块都不同。
更稳妥的做法是保留对比证据:同一组件在两个页面的截图、两组数据条件下的截图、以及视口宽度记录。如果只有一组证据,先补另一组,再下结论。这样做的结果是,后续修改可以只针对出现差异的那个条件,避免为了修侧栏而改坏首页。
把样例整理成一页可执行清单后,安排一次交叉核对:由不写这段组件代码的人按清单逐条执行,记录通过或失败。失败项要附上页面路径、视口宽度和数据条数,缺一项就退回补充。这个动作的影响是,修改范围会被限制在失败项对应的条件内,回归测试也只需重跑相关样例,而不是整站重验。
最后提醒一点:如果差异只在某个特定浏览器或某个特定屏幕尺寸下出现,把它单独列为一条样例,不要合并进通用项。合并会让这条差异在后续迭代中被再次忽略,而它恰恰是最容易引发多角色理解不一致的那一类问题。