先给结论:不要试图用一个“万能页面”验收组件,而应把组件拆成“基础态、内容压力态、容器冲突态”三层样例,每层单独记录预期结果。当同一组件在A页面正常、B页面异常时,真正要验收的不是组件本身,而是组件与页面容器的组合行为。
做企业建站平台对比时,常见的验收方式是先搭一个测试页,把按钮、表单、卡片、导航等组件逐个放上去,确认显示正常,然后判定“组件可用”。这个做法在样本阶段几乎总能通过,但上线后往往出现同一组件在不同页面表现不一致:列表页的卡片正常,详情页的卡片却撑破容器;首页的表单提交正常,联系页的表单却错位。
问题不在于组件坏了,而在于样本页没有覆盖真实页面的容器条件。样本页通常是干净、单列、宽度充裕的布局,而真实页面可能处在侧栏、多列网格、弹窗或嵌套区块中。验收样例如果只验证“组件单独存在时是否正常”,就无法回答“组件进入不同容器后是否仍然正常”。
面对同一组件表现不同,通常有两种解释,需要先分开再验证。
解释一:组件自身存在状态缺陷。组件在某种内容长度、数据状态或交互状态下才会暴露问题,比如空数据、超长文本、图片缺失、加载中状态。样本页恰好没触发这些状态,所以看起来正常。
解释二:组件与页面容器的组合条件不同。组件本身没问题,但它依赖的宽度、高度、层叠顺序、外边距或父级溢出规则在不同页面里不一样。换一个容器,组件的行为就变了。
这两种解释的修复方向完全不同:前者要改组件,后者要改页面容器或组件与容器的约定。如果不先区分就动手,很容易在错误的一层反复调整。
要区分上述两种解释,可以构造一组对照样例,让“组件不变、容器变”和“容器不变、组件状态变”分别成立。
这组对照的价值在于:它把“页面不同”这个模糊变量拆成了可控的两个方向。验收记录里应写明每个样例的容器宽度、所在区块、组件状态,而不是只写“某页面显示异常”。
具体动作可以按以下顺序执行,并记录每步结果如何影响下一步。
这里的关键是第4步的分支:复现与不复现指向不同修复路径,决定了下一步是改组件还是改容器。很多验收失败,是因为跳过了这一步,直接凭印象修改。
假设某企业站的产品卡片组件在列表页显示正常,在详情页相关推荐区域却出现文字溢出。按上述方法:先固定详情页容器,只换卡片状态,发现超长产品名会溢出;再把同一正常卡片放进列表页容器,显示正常。此时证据指向“组件在超长文本状态下缺少截断或换行规则”,而不是详情页容器本身有问题。修复动作应落在组件的文本处理上,而不是调整详情页宽度。这个例子中,容器宽度、文本长度均为假设值,仅用于说明对照方法。
需要说明适用条件:这套样例方法适合组件复用较多、页面容器类型有限的企业站。如果站点页面结构高度随机、几乎没有可归类的容器,应先做容器归类,再谈组件验收,否则样例数量会失控。
样本页通过不等于规模化后通过,这是最常见的误判。另一个边界是:不能把某个页面的一次异常直接推广为“组件在所有页面都有问题”。在完成容器对照之前,异常只能算作待定位现象,不能作为修改依据。验收样例应随容器类型增加而扩充,而不是随页面数量线性增加,否则维护成本会迅速超过收益。
把验收对象从“组件”改成“组件与容器的组合”,并保留可区分原因的证据链,才能在平台对比和后续改版中判断问题到底出在哪一层。