先给结论:不要为“组件本身”写一份通用验收样例,而要为“组件所处的页面上下文”分别写样例。同一组件在A页面正常、在B页面异常,通常不是组件坏了,而是它继承或依赖了页面级条件,例如容器宽度、主题样式、内容长度、权限状态或缓存层级。验收样例必须把这些条件显式写进前置状态,否则复现和判定都会落空。
拿到“同一组件两处表现不同”的反馈后,第一步不是改组件,而是收集能区分原因的证据。可核对的证据包括:两页的容器计算宽度、加载的样式文件清单、组件所在区域的HTML结构、渲染时的数据条数、访问者角色、以及页面是否走了片段缓存。若这些项一致而表现仍不同,才把怀疑转向组件自身逻辑。
一个常见反常现象是:组件在列表页正常,在详情页错位。若详情页正文更长、侧栏更窄,问题多半出在宽度和换行条件;若两页宽度一致但详情页多加载了一个主题样式,问题出在样式覆盖顺序。这两种解释对应完全不同的修复动作,所以验收样例要能分别触发它们。
条件一:组件行为由页面数据驱动。此时样例的核心是数据边界,而不是视觉截图。你需要为最少条数、常规条数、超长文本、空字段各写一条前置状态,并注明期望结果。例如假设某卡片组件在列表页显示摘要,在详情页显示全文,那么“摘要为空”这条样例应写明:数据源摘要字段为空时,组件回退到标题截断,而不是留白。这个动作的结果会直接决定你是改数据映射,还是改模板回退逻辑。
条件二:组件行为由页面布局或主题驱动。此时样例的核心是环境快照:容器宽度区间、父级样式类、主题变量、是否被其他区块挤压。样例中要写清“在窄容器下,组件进入纵向排列;在宽容器下保持横向”,并给出可测量的判定点,例如卡片间距是否小于某值、按钮是否换行。这样验收人不必凭感觉判断“看起来不对”。
每条样例至少包含四项:前置状态、操作、观察点、判定标准。前置状态写页面级条件,操作写需要触发的交互或数据变更,观察点写具体元素或字段,判定标准写可核对的阈值或状态。下面是一个假设示例,用于说明结构,不代表任何真实项目结果:
执行这条样例后,如果标题溢出,下一步应检查容器的overflow和标题的换行规则,而不是直接改组件宽度。如果按钮换行,则要检查父级布局是否允许收缩。动作与结果的对应关系,决定了修复范围是样式层还是结构层。
同一组件在不同页面的差异,往往在例外状态下才暴露。需要纳入样例的例外包括:字段为空、数据量超过预期、用户权限受限、页面被其他区块遮挡、以及同一组件在页面中出现多次。对每种例外,写明期望的降级表现。例如权限受限时,组件应隐藏操作入口而不是显示报错;同一页面出现两次时,标识应保持唯一,避免脚本重复绑定。
还要注意,请求量或抓取量归零、某接口返回变慢,不能单独证明是组件问题。它们也可能是缓存未命中、上游数据延迟或页面路由变化造成的。验收样例应把这些现象记录为待排除项,而不是直接判定组件故障。
如果团队人力有限,优先为“差异最明显、影响转化或操作”的页面写样例,而不是为所有页面穷举。若组件由第三方提供,样例中应记录版本与配置项,但不要假设其现行功能或维护状态;升级前先确认该版本在当前CMS中的实际加载方式。最终,验收样例的价值不在于数量,而在于每条都能回答:在什么条件下,看到什么现象,就采取哪个下一步动作。