先把结论说清楚:验收样例不能只写“组件显示正常”,而要固定页面、数据、权限和容器宽度这四个变量,再让同一个组件在至少两种真实页面里跑一遍。如果表现不同,优先怀疑是父级样式或数据形态差异,而不是组件本身坏了。下面给出可操作的构造方法。
同一组件在列表页正常、在详情页错位,通常只有两类原因。第一类是组件自身对输入敏感,比如没有默认值、没有空状态、依赖某个可选字段;第二类是宿主页面给了不同的外部条件,比如父容器宽度、主题变量、全局CSS重置、脚本加载顺序。这两类原因的修复成本差别很大:前者要改组件,后者往往只改调用页面的包裹层。
判断顺序建议从宿主差异查起,因为它的证据更容易收集,也更容易复现。只有在宿主条件完全对齐后仍然表现不同,才把责任归到组件。
要让样例可比较,每个用例都要记录以下四项,缺一项就无法排除干扰:
这四项写完,样例才具备“能区分解释”的能力。只写“在首页和详情页各看一次”,等于没有控制变量。
做法是:先在一个页面上把组件调到正常,然后只改变一个变量,观察是否复现异常。假设某商品卡片在列表页正常、在详情页右侧推荐位文字溢出,可以按这个顺序试:
每一步的结果都决定下一步查哪里,而不是一次性把所有嫌疑都改掉。改掉多个变量后即使恢复正常,也无法知道真正原因,后续同类页面还会再犯。
支持“宿主差异”的证据包括:同一份数据换页面就复现、调整父容器宽度后表现改变、只在某个模板下出现、与登录态无关。支持“组件缺陷”的证据包括:所有页面在特定数据形态下都异常、必填字段缺失时无兜底、同一容器宽度下仍随页面变化。
还有一种容易被误判的情况:请求量或抓取量在改版后下降,有人直接归因于组件改动。这不能单独证明处理正确或错误,因为模板调整、内容更新节奏、外链变化都可能造成同样现象。验收样例要解决的是渲染一致性,不是流量归因,两者不要混在一张验收单里。
推荐格式为:页面 + 数据形态 + 权限 + 容器宽度 → 预期表现。例如“详情页 + 标题超过20字 + 游客 + 父容器320px → 标题两行截断,不撑破卡片”。这样写的好处是,测试人员不需要理解组件内部实现就能执行,开发也能从失败条目直接定位是数据、权限还是布局问题。
需要说明适用条件:这套方法适合组件已被多个页面复用、但尚未建立统一视觉回归机制的项目。如果组件只在一个页面出现,构造多页面样例的收益有限,优先做数据形态和宽度的边界测试即可。张家界网站开发中常见的多模板、多栏目结构,恰好容易触发这类宿主差异,所以先固定变量再验收,比反复截图对比更省事。