先判断差异来自数据还是组件本身:同一组件在A页面正常、B页面异常,验收样例要围绕“同组件、不同数据、不同上下文”三组变量构造,而不是把B页面整体重测一遍。如果差异只在某一类数据上出现,保留该组件、改写数据约束;如果差异在同类数据上随机出现,退出该组件或改回静态实现。
组件表现不同,最容易把页面差异误判成组件缺陷。构造验收样例前,先把页面按三个维度分组:数据来源(同一接口、不同接口、手工录入)、上下文(容器宽度、父级样式、页面加载顺序)、交互路径(首次渲染、二次切换、回退后再进入)。
假设一个产品列表组件在列表页正常,在详情页推荐位错位。先不急着改组件,而是把详情页推荐位的数据换成列表页同一批数据再测:如果恢复正常,问题在数据字段缺失或类型不一致,保留组件、改写接口约定;如果仍错位,问题在容器或父级样式,改写样式隔离方案;如果换数据、换容器都无效,只在详情页出现,才考虑退出该组件、改用页面专用实现。
同一组件表现不同,常见原因有三类,验收样例必须能区分它们,否则修完一处、另一处又冒出来。
overflow或transform、页面存在多个同组件实例。样例中至少放一个窄容器、一个带定位父级的容器。三类原因对应的处理动作不同:数据形态差异改接口约定或加兜底;上下文差异改样式作用域或容器约束;时序差异改初始化时机或加状态重置。验收样例如果不区分这三类,就无法判断该保留、改写还是退出。
下面是一组假设的验收样例设计,用于说明比较方法,不代表任何真实项目结果。
这组样例的价值在于:每一步只改一个变量,结果直接指向下一步动作。如果一次同时换数据、换容器、换路径,就无法判断是哪一项导致恢复,也无法决定保留还是退出。
退出不是失败,而是一种取舍。以下条件同时出现时,继续改写的成本高于替换:
反之,如果异常只集中在一类数据或一个容器上,保留组件并改写约束更合理。改写后要重新跑一遍样例A到D,确认差异消失,而不是只看出问题的那个页面。
验收样例跑完后,把结论落到三个具体动作上:数据层加字段校验或默认值;样式层给组件加容器约束或作用域;流程层把“同组件跨页面一致性”加入上线前的检查项。这样下一次同一组件在新页面复用时,可以直接套用已有样例,而不是重新排查一遍。
如果结论是退出组件,也要记录退出条件,例如“当页面容器宽度小于某值且数据字段可能为空时,不使用该组件”。这条记录比“组件有问题”更有用,因为它能指导下一次复用决策。