先给结论:不要为“组件本身”写一份通用验收样例,而要为“组件在具体页面上下文中的表现”分别取样。做法是把组件拆成结构、数据、容器、样式作用域四层,每层记录一个可观察信号,再按页面类型各建一条最小样例。只有当某条样例在目标页面类型中稳定复现,才把它保留为验收依据;否则改写为带前提的条件样例,或从验收集中退出。
同一组件表现不同,常见原因有三类,需要先区分再决定样例怎么构造。
判断方法很直接:把同一组数据分别放进两个页面的容器里。如果结果一致,问题在数据或容器;如果不一致,问题更可能在样式作用域。这个动作决定下一步是补数据样例,还是补容器约束样例,而不是继续扩充通用组件清单。
验收样例不是越多越好。面对表现不一致的组件,按下面三条线决定去留。
如果差异是设计上就允许的,例如详情页标题允许两行、列表页标题只允许一行,那么保留两条独立样例,并在样例中写清前提:页面类型、可用宽度、字段长度上限。保留的前提是该差异能被稳定复现,而不是偶尔出现。
如果组件只在窄容器或超长文本下异常,不要写“组件显示正常”这种笼统条款,改写为条件样例:在容器宽度低于某阈值、字段长度超过某值时,组件应截断而非溢出。改写后的样例必须带触发条件,否则执行者无法判断通过与否。
如果某页面对组件做了局部覆盖,且这种覆盖不会被其他页面复用,就不要把它纳入组件级验收。退出验收集,改为该页面的单独检查项。否则每新增一个定制页面,验收集都会膨胀,最终没人愿意执行。
一条可执行的样例至少包含四个字段,缺一个就会在执行时产生歧义。
假设一个用于说明比较方法的短例子:某卡片组件在列表页正常,在详情页侧栏出现文字溢出。先构造一条样例,上下文写“详情页侧栏、容器宽度较窄”,输入写“标题字段为较长中文”,观察点写“是否出现横向滚动”,判定写“无横向滚动且超出部分截断”。执行后若仍溢出,说明问题在容器约束而非数据,下一步应调整容器规则,而不是继续增加标题长度的测试值。
样例执行后通常出现三种结果,对应三种不同的后续动作。
需要提醒的是,某个页面抓取量或请求量下降,并不能单独证明组件处理正确,也可能是缓存、入口调整或统计口径变化。验收判断应基于页面上的可观察事实,而不是单一统计信号。
这套方法适用于组件在多个页面复用、且差异可被页面类型和容器条件解释的场景。若组件只在一个页面出现,直接写该页面的检查项更省事。若差异来自第三方嵌入内容或用户生成内容,其内部结构不受你控制,验收样例应退到外层容器,只检查占位、尺寸和降级表现,不深入其内部渲染。若团队尚未固定容器宽度规则,先补规则再补样例,否则样例会随每次改版失效。
把样例写在页面类型和容器条件上,而不是写在组件名称上,是让验收集在规模化后仍然可执行的关键。下一步可以从当前失败最多的那个页面类型开始,只补一条最小样例,执行后再决定保留、改写还是退出。