先别急着改代码。更可靠的做法是:把“同一组件”拆成可复现的最小页面组合,用固定数据、固定视口、固定操作路径各跑一遍,记录差异出现在哪一层。只有确认差异来自组件自身、页面上下文还是数据形态,才决定保留现状、改写组件还是退出当前实现。
同一组件在不同页面表现不同,常见原因有三类,验收样例的构造方式完全不同。
把这三类混在一起测,得到的结论通常是“有时好有时坏”,无法支撑决策。先分类,再为每类各构造一组样例,是后续取舍的前提。
保留适用于差异只出现在个别页面,且能定位到明确的父容器约束。例如某列表页给组件套了额外的窄容器,导致内部元素换行。此时修正页面级样式即可,组件本身不必动。代价是同类页面若继续增加,仍可能重复踩坑,所以需要把容器约束写进验收样例。
改写适用于差异跨多个页面出现,且根因在组件的尺寸假设或数据假设上。例如组件默认按固定宽度排版,遇到窄栏就溢出。改写要付出的代价是回归范围扩大:所有引用该组件的位置都要重新跑一遍样例。
退出适用于组件依赖的机制与当前页面结构根本冲突,或维护成本已超过替换成本。退出前应确认替代方案能覆盖原有数据形态,否则只是把问题换了个位置。
可按下面顺序执行,每一步的结果都会影响下一步是否继续。
动作三的结果尤其关键:如果只有超长数据触发异常,改写方向就是文本截断或换行策略;如果空值触发异常,改写方向是占位与容错。方向不同,代价也不同。
假设某黄石网站建设项目的产品卡片组件,在列表页显示正常,在详情页侧栏出现图片被压扁。按上述流程:先复制最小页面并套用侧栏容器宽度,若仍被压扁,说明根因在组件的图片尺寸假设;再替换三组不同比例的图片,若只有竖图异常,说明需要为图片容器设定固定比例。此时选择改写组件,并把“竖图 + 窄容器”写进样例集。若最小页面在侧栏宽度下表现正常,则差异来自详情页的额外样式覆盖,选择保留组件、修正页面样式即可。这个例子中的数字和比例仅为说明比较方法,不代表任何真实项目结果。
样例不必覆盖所有页面,但应覆盖已出现差异的每一种组合,并注明容器宽度、数据形态和插入时机三个条件。判断标准是:换一个人按样例重跑,能得到相同的正常或异常结论。若重跑结论不稳定,说明样例还缺少某个未记录的条件,应回到动作二继续缩小范围,而不是直接下结论。
需要提醒的是,某个页面在样例中表现正常,不能单独证明组件已无问题;同样,某次抓取或统计归零,也不能单独证明处理正确,还可能是缓存、路径或统计口径变化所致。验收样例的作用是缩小可疑范围,而不是替代完整回归。把范围缩到足够小之后,再决定保留、改写还是退出,代价才可控。