先给结论:不要为每个页面各写一份验收样例,而要为组件建立一份“宿主条件矩阵”,把影响表现的页面环境变量列全,再从中挑出能暴露差异的最小组合。假设你所在团队有一个商品卡片组件,在列表页显示正常,在搜索页却偶尔错位——此时应把两页的容器宽度、相邻元素、数据长度、渲染顺序写成可复现的样例,而不是先改样式。
同一组件表现不同,常见原因有三类:宿主容器约束不同、传入数据形态不同、页面级样式或脚本干扰。验收样例要能区分这三类,否则修完一处,另一处仍会复发。
判断方法很直接:把组件单独放进一个空白测试页,用与出问题页面相同的容器宽度和数据调用它。如果空白页正常,问题大概率在宿主环境;如果空白页也异常,问题在组件内部。这个动作的结果决定下一步是改页面还是改组件,避免两边同时改导致无法归因。
验收样例不是截图,而是一组可重放的输入。对每个涉及该组件的页面,至少记录以下字段,并标注哪些是变量、哪些是常量。
记录后,先固定常量、只改一个变量做对照。例如保持数据不变,只把容器宽度从列表页的值换成搜索页的值。若差异复现,就能确认宽度是触发条件,验收样例应把这两个宽度都纳入回归集。
以下为假设情境,用于说明决策过程,不代表任何真实项目。某站点有首页推荐、分类列表、搜索结果三个页面,共用同一个文章摘要组件。首页和分类页显示正常,搜索结果页在部分条目上出现按钮换行。
第一步,收集三页的容器宽度与数据长度分布,发现搜索页的摘要区比其他两页窄,且标题平均更长。第二步,在空白测试页复现:用搜索页宽度加长标题,按钮换行出现;换成短标题则正常。第三步,判定触发条件是“窄容器加长标题”的组合,而非搜索页本身。
此时有两个成立的选择:若产品允许,放宽搜索页摘要区宽度,验收样例只需覆盖原宽度;若宽度不可改,则需在组件内增加标题截断或按钮自适应规则,验收样例必须同时包含窄容器与长标题。选择依据是页面布局能否调整,而不是哪个改起来更快。
把所有页面组合都写成样例,维护成本会迅速上升。可行做法是先做变量排序:把出现差异的页面按容器宽度、数据长度、加载方式分组,只保留每组中最极端的一个作为代表。
例如三个页面中,两个宽度接近、一个明显更窄,就只保留最窄的那个加最长数据作为样例,其余作为常规回归。这样做的结果是:验收样例数量下降,但覆盖了已知的差异边界。若后续新增页面落在未覆盖的区间,再补一条样例,而不是重写整套。
需要说明的是,某页面请求量或渲染次数下降,并不能单独证明该页面的组件表现已经正常,也可能是流量转移或缓存命中变化所致。判断是否通过验收,仍应以样例复现结果为准。
验收完成后,把触发条件、对照结果和最终选择记录到组件说明中,注明哪些宿主条件是组件正常工作的前提。回归清单只保留能复现差异的最小样例,并标注每条样例对应的页面与数据边界。
这样做的实际影响是:下次有人报告“某个页面组件又坏了”,可以先查清单里是否已有对应条件,若有则直接复现,若无则按同样字段补充一条,而不是从零排查。验收样例因此从一次性检查变成可累积的判断依据。