结论是:当同一个组件在A页面正常、在B页面异常时,验收样例不能只按组件本身写,而要按“组件+承载页面的上下文”成对构造。具体做法是先把差异归因到可枚举的上下文变量,再为每个变量造一组最小对照样例,只有当对照组里除目标变量外其余条件一致时,才允许把结论写进验收标准。若做不到这种对照,就只能把该组件的验收范围限定在已验证的页面类型内,不能声明它在全站通用。
同一组件在不同页面表现不同,常见原因并不在组件代码,而在承载它的页面上下文。构造验收样例前,先把差异拆成可枚举的几类变量,每一类都对应一种需要单独验证的样例。
把这几类写下来,验收样例就有了骨架:每一类变量至少一条“常规值”样例和一条“边界值”样例,而不是笼统地在几个页面各点一遍。
目标是让两次运行之间只差一个变量。可按以下顺序落地。
假设某卡片组件的标题在列表页单行显示,在详情页换成两行并挤压了下方按钮。此时不要直接给标题加省略样式,而是先造一条“同宽度容器+长标题”的对照样例。若该样例复现挤压,说明问题来自标题长度而非页面本身,验收项应写成“标题达到N字时按钮位置不变”;若未复现,则继续检查容器宽度或样式命中。这个动作的价值在于把修改范围从“全站组件”缩小到具体变量,避免为修一个页面而改动影响所有页面的组件。
最小对照法有一个明确的反例:当差异来自多个变量的组合,而不是单一变量时,逐项对照会得出“每个变量单独测试都正常”的错误结论。例如组件在窄容器下遇到长标题才溢出,单独测窄容器(短标题)和单独测长标题(宽容器)都不复现。此时应补一组“窄容器+长标题”的组合样例,并把验收范围写成条件式,如“容器宽度低于某值且标题超过某长度时不得溢出”,而不是写成无条件通用规则。
另一个失效场景是差异来自不可控的外部条件,比如第三方脚本加载顺序或用户网络状态。这类差异无法用固定样例稳定复现,验收样例只能记录为“在指定加载顺序下通过”,并明确注明该结论不覆盖其他顺序。把不可复现的差异写成硬性验收项,只会让后续测试反复失败却找不到原因。
验收项要写清适用条件,而不是只写期望结果。可用的写法包括:
这样写的直接好处是:当后续有人在新页面复用该组件时,能立刻判断自己是否落在已验证范围内,超出范围就补样例,而不是默认它一定可用。下一步动作也很明确——把本次发现的变量补进组件文档的“已知边界”一节,并在下次改版时优先复测这些边界样例,而不是重新全站点击一遍。