先给结论:不要为每个页面各写一份验收样例,而要为这个组件写三层样例——最小可控单例、真实页面组合、边界退化场景,并把“页面差异”本身当成一个待验证变量。下面用一个假设情境把决策过程走一遍。
假设你在做漳州网站制作时引入了一个产品卡片组件,首页、栏目列表页、详情页侧栏都在用。首页上它显示正常,列表页第三屏之后图片开始错位,详情页侧栏里标题被截断成两行。此时如果直接去改组件代码,很可能把首页也改坏。
更稳的动作是先做一次归因:把三个页面的差异列出来——容器宽度、父级是否用了弹性布局、卡片外层有没有额外的边距类、数据字段是否完整、脚本加载顺序是否一致。列完之后你会发现,真正需要验收的不是“卡片好不好看”,而是“卡片在哪些容器条件下仍然成立”。这一步的产出直接决定后面样例怎么写,而不是先写样例再去猜原因。
按页面平铺的问题是:页面会改版,样例就全部作废。按条件分层,样例可以跟着组件走。
三层的顺序不能颠倒。先跑最小单例,如果它就不对,组合层和边界层的失败都不必归因到页面差异上。
同一组件在不同页面表现不同,原因通常落在三类里,而且它们留下的证据不一样:
这三类证据互斥程度较高,能帮你排除掉大部分猜测。注意,某个页面“看起来正常”不能证明组件没问题,只能说明该页面恰好没触发条件。
把上面三层落成可执行的样例,每条写清前提、动作、期望和失败后的下一步:
前提:容器宽 320px,标题 40 字,无图;动作:渲染单个卡片;期望:标题换行不溢出,占位图区域保留;失败后:先查空值分支,再查最小宽度约束。前提:列表页容器,同屏 12 个卡片,图片比例 1:1 与 4:3 混用;动作:滚动到第三屏;期望:高度不跳动,图片不拉伸;失败后:检查是否给了固定高度,而不是继续调间距。前提:侧栏容器宽 240px,标题 30 字;动作:渲染;期望:截断规则一致,不出现半行;失败后:确认截断是按字符还是按容器,两者不能混用。每条样例都带“失败后下一步”,是为了让验收结果能直接指导修改,而不是只留下一个“不通过”。
三层样例适合组件被复用在多个已知容器里的情况。如果组件只在一个页面出现,边界层可以压缩成两三条,不必铺开。如果页面容器宽度本身还在频繁调整,先把容器规则定下来再写样例,否则样例会跟着容器一起变,失去参照价值。
另外,样例通过不等于全站通过。它只覆盖你写出来的前提组合。当页面数量或数据形态明显超出样例范围时,应该新增边界样例,而不是默认旧样例仍然成立。把“新增了什么前提”记录下来,比记录“这次通过了”更有用。