先别急着判定组件坏了。更常见的情况是:组件本身没问题,但它在不同页面拿到了不同的输入、继承了不同的样式,或者被安排在不同上下文里。要区分这些解释,验收样例不能只截一张图,而要构造“同组件、不同页面、可对照”的最小样例组,并记录能复现差异的条件。
同一组件在A页面正常、B页面异常,通常落在两类解释上。第一类是组件自身有缺陷,只是A页面的数据恰好绕开了它,比如空值、超长文本、缺图、特殊字符才会触发。第二类是页面环境差异,组件代码没变,但B页面给了它不同的容器宽度、父级样式、脚本加载顺序或数据来源。
这两类解释的处理动作完全不同。前者要改组件,后者要改页面接入方式。如果只凭“B页面坏了”就去改组件,可能把A页面弄坏,问题却还在。所以验收样例的目标不是证明谁对,而是让两种解释产生可观察的不同结果。
有效样例的核心是控制变量。选一个已确认正常的页面作为基线,再复制出若干测试页,每个测试页只改一个条件。这样差异一旦出现,就能指向被改的那个条件,而不是一堆同时变化的因素。
假设某组件在宽栏正常、窄栏溢出。若把基线页容器改窄后复现,说明问题更可能来自布局约束;若容器不变、仅换成长文本就复现,说明问题更可能在组件内部对内容的处理。这个判断只说明下一步该往哪查,不等于已经找到根因。
截图能说明“看起来不一样”,但不足以区分原因。更有用的证据是成对的:同一组件在两组条件下的实际计算值。浏览器开发者工具里可以查看元素最终生效的样式、盒模型尺寸和脚本报错,这些比肉眼判断稳定。
建议每个样例记录三样东西:一是组件根元素的最终尺寸和关键计算样式;二是控制台是否有报错或警告;三是传入组件的数据快照。把基线页和异常页并排比对,如果只有某一项不同,那一项就是优先怀疑对象。
要注意,某项统计归零或某页面不再报错,不能单独证明处理正确。报错消失可能是因为脚本提前中断、组件没渲染,或错误被别的代码吞掉。所以除了看报错,还要确认组件确实渲染出了预期内容。
样例要能交给别人复跑,否则只是一次性排查。可以按下面的顺序组织,每一步都写明预期结果和实际结果:
反向验证很关键。如果改回基线值后异常仍在,说明之前怀疑的条件不是唯一原因,样例组还需要增加变量。这个动作的结果会直接决定是继续排查还是进入修复。
如果差异只出现在特定账号、特定时间或特定网络环境,页面级样例可能复现不了,需要把这些外部条件也纳入记录。如果组件依赖第三方服务,而该服务的返回内容会变化,那么样例要固定返回数据或使用本地替身,否则每次结果都不同,无法对照。
另外,样例数量不必多。能区分两种解释的最小组合通常就够:一个基线、一个只改可疑条件的测试页、一个反向验证页。样例太多反而会让变量重新混在一起。把条件写清楚、结果记准确,比堆页面数量更有用。