先给结论:不要为“组件本身”写一份通用验收样例,而要为“组件与页面的组合”分别建样例。判断依据是组件在不同页面上的输入、上下文和依赖是否一致;只要其中一项不同,就应拆成独立验收项,并标注该页面是否属于旧系统退出范围。下面以你手里一个已经上线、但表现不一致的组件为对象,逐步转成可执行方案。
同一组件在两个页面表现不同,常见原因不是组件坏了,而是页面给它的条件不同。构造验收样例前,先把差异归到下面几类,每一类对应不同的样例写法:
可区分的证据是:把表现正常的页面条件复制到异常页面,如果异常消失,问题在页面上下文;如果仍然异常,才回到组件本身。这个判断直接决定你下一步是改页面调用,还是改组件实现。
验收样例的最小结构是四段:前提、操作、可观察结果、判定。以假设的“相关推荐”组件为例,它在文章详情页正常,在旧版专题页错位。你可以这样写:
这里的关键动作是为每个页面组合单独建一条样例,而不是写“组件显示正常”。结果会直接影响下一步:如果只有旧模板不通过,处理方向是旧模板的容器约束,而不是重写组件。
当旧页面、旧模板或旧合作关系需要退出时,同一组件的验收样例不能一刀切。先给每个页面组合标一个处置状态,再决定样例是否保留:
一个实际动作是:在样例清单里增加“处置状态”一列。这样做的结果是,验收范围从“所有页面必须一致”缩小为“保留页面必须一致、冻结页面只做记录、退出页面只做隔离检查”,人手和判断成本都会下降。需要说明的是,某页面流量下降或抓取减少,并不能单独证明它应当退出,也可能只是入口调整或统计口径变化,处置状态仍应以业务归属为准。
为了让差异可复现,至少构造一组对照:同一组件、同一输入数据,只改变页面容器或调用参数。假设详情页容器宽度记为 A,专题页容器宽度记为 B,且 B 明显小于 A。样例可以写成:
样例一:容器为 A、输入完整字段,期望组件单行排列。样例二:容器为 B、输入相同字段,期望组件换行且不溢出。若样例二实际溢出,则差异被锁定在容器条件,而非数据。这个对照的价值在于,它把“哪个页面有问题”变成“哪个条件导致问题”,后续修改和回归都有明确对象。
样例不是一次性文档。每新增一个调用该组件的页面,就应新增一条组合样例;每退出一个页面,就把对应样例标记为归档而非直接删除,以便回溯旧系统的处理依据。判断是否保留某条样例,可以问三个问题:该页面是否仍在服务用户、该组件是否仍被调用、差异是否已被其他样例覆盖。三个都否,才可以归档。
最后提醒一点:不要用“组件在所有页面表现一致”作为验收目标。列表页、详情页和旧模板对同一组件的合理期望本就可能不同,验收样例要写的是该页面组合下的期望结果,而不是一个脱离上下文的统一标准。这样构造出来的样例,才能在旧内容、旧系统或旧合作关系退出时,既保住仍有价值的部分,又不把维护成本扩散到全部页面。