先给结论:同一组件在不同页面表现不同,通常不是组件本身“坏”了,而是页面上下文改变了它的输入、布局约束或执行顺序。验收样例不应只写“组件正常显示”,而应把组件放回至少两种页面上下文里,固定变量、记录差异,再决定是改组件、改页面还是改验收标准。下面用一个假设情境说明怎么构造可执行的验收样例。
假设某移动网站建设项目的商品筛选组件在列表页表现正常:横向按钮可点、间距均匀、滚动不溢出。同一个组件被复用到“搜索结果页”后,出现按钮换行、部分选项被遮挡、点击区域偏移。此时缺少完整埋点数据和真机调试权限,仍可执行的最小动作是:在浏览器开发者工具中固定视口宽度,分别打开两个页面,记录组件外层容器的宽度、内边距、overflow 取值和父级定位方式,再对比组件内部按钮的换行位置。这个动作能确认差异是否来自页面容器,但不能直接推断为组件代码有缺陷,也不能据此判断线上所有设备都会出现同样问题。
构造验收样例前,先判断差异属于哪一类,因为不同原因对应不同验收动作。
三类原因的证据不同:输入问题看数据条数和文本长度;容器问题看父级盒模型和视口宽度;执行顺序问题看资源加载顺序和组件初始化时机。把这三类混在一起写验收样例,结论会互相矛盾。
仍以筛选组件为例,可构造如下假设样例,不需要完整权限也能执行:
第 3 步和第 5 步是实际动作。第 3 步的结果决定下一步是改数据映射还是改组件;第 5 步的结果决定下一步是改页面布局还是改组件内部样式。每一步只改变一个变量,验收结论才可复现。
在只有浏览器开发者工具、没有真机农场和完整用户行为数据的情况下,可以确认的是:在指定视口和指定页面上下文中,组件出现了可复现的布局差异。不能推出的是:该差异影响了多少真实用户、是否导致转化下降、是否在所有移动设备上出现。请求量或抓取量归零也不能单独证明组件处理正确,因为还可能是页面未被访问、资源被缓存或统计口径变化。
因此,验收样例的结论应写成条件句,例如“在 375px 视口、筛选项为 12 个时,搜索结果页的筛选组件出现换行;在同样视口、筛选项改为 6 个后换行消失”。这种写法比“组件在搜索结果页异常”更可执行,也方便后续决定是限制数据条数、调整容器宽度,还是修改组件内部换行规则。
构造样例的目的不是描述现象,而是帮助团队做决定。若差异来自输入数据,下一步应明确组件的最大可容纳项数或文本长度,并在页面接入时校验;若差异来自容器,下一步应统一两个页面的容器约束,或让组件支持可配置宽度;若差异来自执行顺序,下一步应检查资源加载和初始化时机。每个动作都应附带一个可观察结果,例如“将筛选项限制为 8 个后,375px 视口下不再换行”。只有动作和结果都明确,验收样例才算完整。