先给结论:不要为“组件本身”写一份通用验收样例,而要为“组件×页面上下文”写一组最小对照样例。做法是固定组件代码与数据,只改变页面级变量(容器宽度、父级样式、加载顺序、同页实例数量),每个变量单独跑一遍,记录哪一项一改就复现异常。这样得到的样例才能区分“组件有缺陷”和“页面把组件用坏了”。
常见情形是:同一个卡片、轮播或表单组件,在A页面显示正常,放进B页面后间距塌陷、宽度溢出或交互失灵。此时如果只截一张B页面的问题图去提验收,开发往往回复“组件在A页面没问题”,双方卡住。问题不在谁对,而在于验收样例缺少可对照的变量。
张家界网站设计项目里,页面常由不同编辑、不同模板拼装,同一组件被放进侧栏、正文、弹窗等不同容器,页面级差异比组件本身更大。所以验收对象必须是“组件在具体页面上下文中的表现”,而不是组件孤立的样子。
解释一:组件自身有缺陷。组件内部写死了宽度、字号或依赖某个全局类,一旦页面没有提供这个前提就出错。特征是:只要换页面就复现,与页面里其他内容无关。
解释二:页面上下文冲突。组件本身没问题,但所在页面的父容器、全局样式、脚本加载顺序或同页实例数量改变了它的计算条件。特征是:同一组件在结构相近的页面正常,只在特定容器或特定组合下出错。
两种解释会导致完全不同的修复动作:前者改组件,后者改页面用法或加约束。如果验收样例分不清这两者,修复就会来回返工。
构造样例的核心是“一次只动一个变量”。假设一个卡片组件在列表页正常、在详情页侧栏溢出,可以这样设计对照:
每一步都记录:容器宽度、父级类名、同页实例数、异常是否复现。这样得到的不是一张问题截图,而是一条能指向原因的因果链。
假设某表单组件在联系页提交正常,在活动报名页点击无反应。可以固定表单代码与字段,只把报名页多出的一个脚本文件移除再测:若移除后恢复,说明冲突来自脚本加载顺序或重复绑定;若仍无反应,则回到组件初始化条件继续排查。这个例子只是说明比较方法,不代表任何真实项目结果。
最小对照样例成立有前提:组件代码版本一致、测试数据一致、浏览器与设备一致。只要其中一项变了,结论就不能直接搬到另一套环境。另外,样例证明的是“在这个页面上下文里会/不会复现”,不等于组件在所有页面都安全。规模化上线前,应把已确认的页面变量写成约束条件,例如“该组件仅用于宽度不小于某值的容器”,并让后续页面遵循这一约束。
实际动作上,建议先跑完对照样例再决定改组件还是改页面:如果异常随容器宽度或父级样式变化,优先改页面用法并补约束;如果异常与页面变量无关、换任何容器都复现,才回到组件内部修复。这个判断顺序能避免把页面问题误改成组件问题,也能避免把组件缺陷当成页面特例放过。
当同一组件再次在新页面表现异常时,先对照这份清单找到最接近的已验样例,再判断是新变量还是旧问题复发,验收就不再依赖“哪张截图更像问题”。