先给结论:不要用“组件本身有没有问题”作为验收问题,而要把组件放回具体页面,按“相同输入、相同数据、相同视口”三组条件分别构造样例。只有当同一组件在相同条件下表现不一致时,才判定为组件缺陷;条件不同造成的差异,应写成页面级验收项,而不是回退去改组件。
读者手里通常已经有一个可疑页面:同一张卡片、同一个表单或同一个导航,在列表页正常,在详情页错位。此时不要直接截图丢给开发。先做一次条件拆分:把两个页面的容器宽度、父级样式、数据长度、加载顺序四项分别列出来。多数“组件表现不同”实际是父级容器宽度不同,或数据长度把固定高度撑破。
判断依据可以这样用:如果只改父级容器宽度,差异就消失,那问题属于页面布局约定,不属于组件;如果父级条件完全一致、差异仍在,才进入组件级排查。这个动作的结果会直接决定下一步是改页面模板还是改组件代码,避免两边同时改动导致回归时无法定位。
实际工作中常见两种做法,各有成立条件。
选择条件可以落到一个具体判断上:如果这个组件已经出现在三个以上页面,优先做法一;如果只出现在一到两个页面,先按做法二把当前问题修掉,等复用扩大再补组件级样例。这不是优劣之分,而是复用规模决定的成本分摊方式。
假设读者手上有一个详情页,其中商品卡片在列表页显示正常,在详情页右侧栏被压窄后文字换行错乱。可以按下面顺序转成样例,以下为假设示例,不是真实项目记录。
完成这四步后,样例就从“看起来不对”变成可重复执行的四组输入。下一步是把它归入组件级还是页面级:如果四组里只有 240px 加 20 字这一组失败,通常应修组件的截断规则;如果四组都失败,问题更可能在父级样式覆盖。
只测正常数据,验收样例基本没有价值。至少补三类边界,并注明假设。
每类边界都要写清期望结果,而不是只写“显示正常”。期望结果越具体,回归时越容易判断通过与否。需要说明的是,某次验收中全部样例通过,只能说明这批条件下未复现问题,不能单独证明组件在所有页面都正确;差异还可能来自字体加载时机、图片尺寸或异步数据到达顺序,这些都需要单独构造样例确认。
样例执行完,通常得到三种结果,对应三种动作。第一,相同条件下表现一致,差异由页面环境造成,动作是修改页面模板或父级样式,并把该页面加入页面级回归清单。第二,相同条件下表现不一致,动作是修组件,同时把失败组合固化为组件级样例,防止再次出现。第三,无法稳定复现,动作是先补录触发条件,不急于改代码,因为此时任何修改都无法验证是否有效。
对益阳网站制作这类项目,组件在不同页面表现不同往往不是单点故障,而是页面约定与组件约定没有对齐。把验收样例写成“条件加期望结果”的组合,比写成“页面看起来正常”更能支撑后续判断,也更容易在改动后确认问题是否真的被解决。