先给结论:不要试图在验收阶段找出“组件到底对不对”的唯一答案,而要把组件拆成“组件本身的行为”和“页面环境给它的输入”两层,各构造一组只改变一个变量的样例,用对照结果判断问题出在哪一层。缺少完整数据或后台权限时,仍然可以做这种最小对照,只是结论范围要收窄到“在当前可见条件下,哪个变量与差异同时出现”。
常见情形是:同一个按钮组件、卡片组件或表单组件,在首页显示正常,放进列表页或详情页后出现错位、样式丢失、点击无响应或文字被截断。此时容易得出两种相反结论——要么认为组件有缺陷,要么认为某个页面“环境特殊”。两种说法都太粗,无法指导验收。
更可操作的做法是先明确一个前提:组件在不同页面表现不同,说明至少有一个输入在两个页面之间不一致。这个输入可能是数据、样式作用域、容器宽度、加载顺序或权限状态。验收样例的任务不是证明组件好坏,而是把这些输入逐个固定下来,看哪一个被改变时差异复现。
解释一:组件自身状态问题。组件内部依赖某个默认值、初始化时机或自身状态。当它被放在不同位置时,初始化顺序改变,于是表现不同。典型证据是:同一组件在同一页面的不同位置也表现不一致,或者刷新后偶发变化。
解释二:页面环境输入问题。组件本身行为一致,但页面传给它的数据、外层容器、样式覆盖或权限条件不同。典型证据是:把同一份数据喂给两个页面中的组件,差异消失;或者只调整容器宽度,差异复现。
这两种解释并不互斥,但验收时可以先分开验证,避免把环境问题误判为组件缺陷,或反过来把组件缺陷当成页面适配问题。
构造验收样例的核心是“一次只动一个变量”。可以按下面的顺序做,每一步都记录结果,再决定下一步。
每一步之后都要问:差异是消失了、减弱了,还是完全没变?消失说明该变量是候选原因;没变说明该变量可以暂时排除。这个判断会直接决定下一步去查数据、查布局还是查脚本,而不是盲目重装组件。
没有后台数据、没有完整账号、没有构建权限,仍然可以做三件事:
需要说清楚的限制是:以上动作只能得出“在当前可见条件下,某个变量与差异相关”。它不能推出组件在所有页面都正确,也不能推出某个修复方案一定有效。请求量、抓取量或某个统计指标归零,同样不能单独证明验收通过,因为缓存、权限、采样范围或页面未触发都可能是合理解释。
假设某站点首页和详情页使用同一个按钮组件,首页显示正常,详情页中按钮文字换行。按上面的顺序做对照:
第一步,把详情页按钮的文字替换成与首页相同的短文本。如果换行消失,说明差异来自文字长度,下一步应检查详情页的数据字段是否允许过长文本,而不是修改按钮的全局样式。
第二步,如果短文本仍然换行,把按钮放入与首页相同的容器宽度中。如果恢复正常,说明差异来自详情页容器过窄,下一步应调整详情页布局或为该场景设置合理的换行规则。
第三步,如果容器宽度一致后仍然异常,检查两个页面中按钮的样式加载顺序。若详情页中某个全局样式覆盖了按钮的宽度,差异就与样式作用域相关,下一步应缩小该全局样式的选择范围,而不是给按钮叠加更多 `!important`。
这个例子的数字和现象都是假设,用于说明对照方法:每次只改变一个输入,观察差异是否复现,再决定下一步查什么。验收样例的价值不在于一次判定对错,而在于把“不同页面表现不同”拆成可验证的变量,让后续动作有依据。