先给结论:不要试图找一个“标准页面”来验收组件,而要把组件表现差异拆成可复现的变量组合,每个组合生成一个最小验收样例。下面用一个假设情境说明具体做法。
假设你负责一个漳州网站开发项目,站内有一个商品筛选组件,同时出现在列表页和搜索页。测试反馈说:列表页筛选正常,搜索页筛选后结果数量对不上。你们已经检查过组件代码、接口返回和浏览器控制台,都没有明显报错,但问题依然存在。
这类“同一组件、不同页面表现不同”的问题,通常不是组件本身坏了,而是组件所处的页面条件不同。需要先找出这些条件,再为每种条件构造验收样例。
把组件从页面中“抽离”出来看,它依赖的外部条件至少有四类:
这些变量不需要全部验证,但至少要找出当前页面之间实际不同的那一个。判断方法很简单:把两个页面的 URL、接口请求参数和组件接收到的初始 props 并排列出来,差异项就是候选变量。
假设排查后发现,差异出在“组件初始化时是否已经拿到查询参数”。那么可以构造三个验收样例:
每个样例只改变一个变量,其他条件保持一致。这样当某个样例失败时,你能直接定位到是哪一个变量导致的,而不是继续在两个完整页面之间来回猜测。
验收样例不能只写“搜索页筛选正常”,而要写成任何人照着做都能得到同一结果的动作序列。例如样例 B 可以写成:
这样写的好处是:执行结果不依赖执行人的经验,也不依赖“看起来正常”这种主观判断。下一步修复时,你可以直接针对失败的样例调整组件初始化逻辑,而不是改动整个页面。
如果只有样例 B 失败,说明问题集中在参数异步到达时的处理逻辑上,修复范围可以限定在组件的参数监听和状态合并部分,不需要动列表页。如果样例 A 和 C 都通过,而样例 B 失败,就不应该再去检查接口字段或页面布局,因为那些条件在三个样例中并没有变化。
反过来,如果三个样例都通过,但真实页面仍然表现不同,说明还有未列出的变量,比如页面缓存、路由切换方式或组件被复用的位置不同。这时应该回到第一步,补充新的候选变量,而不是继续在已通过的样例上反复测试。
关键取舍:验收样例的数量不是越多越好。每增加一个样例,都应该对应一个明确的、尚未验证的变量。没有变量差异的样例只是重复劳动,反而会掩盖真正的问题。
最后提醒一点:组件在不同页面表现不同,并不一定意味着组件有缺陷。有时是页面传入的初始状态本身就不符合组件假设。构造验收样例的目的,是让这个假设显式化,而不是先假定某一方错了。