先给结论:不要试图用一个“万能样例”覆盖所有页面,而要把组件拆成“结构、数据、环境”三个变量,为每个变量建立最小对照样例。当某个组件在A页面正常、B页面异常时,验收样例的正确构造方式是:固定其中两个变量,只改变一个,观察差异是否稳定复现。如果差异只在特定数据或特定环境下出现,就保留该样例并标注边界;如果差异无法稳定复现,就退出该样例,改用更基础的检查项。下面按“保留、改写、退出”三种取舍展开。
同一组件在不同页面表现不同,最常见的原因不是组件本身坏了,而是它被放进了不同的上下文。要构造可用的验收样例,先做一次归因,把差异来源分成三类:
归因之后才能决定样例怎么建。如果差异只在结构上出现,样例就应固定数据和环境,只切换容器宽度;如果差异只在数据上出现,就固定页面结构,只替换边界数据。把三类变量混在一个样例里,复现结果无法解释,验收结论也不可信。
当你能用一组最小步骤稳定复现差异,并且能说清它出现的边界,这个样例就值得保留,作为回归验收的一部分。保留的前提有三个:
保留之后要做的一个实际动作是:把该样例写成一条可执行的验收项,注明前提条件和预期结果,而不是只写“组件显示正常”。例如假设一个卡片组件在侧栏页面文字被截断,在正文页面正常,那么验收项应写成“在侧栏容器宽度下,标题超过两行时是否按预期截断或换行”。这样下一步的修复或取舍才有依据。
有些差异确实存在,但原始样例的触发条件太特殊,直接保留会让验收清单变得冗长且难以维护。这时应改写样例,而不是删除。改写的方向通常有两个:
改写的适用前提是:你已经知道差异的稳定边界,只是需要让样例更容易复用。如果边界还不清楚,改写只会掩盖问题,此时应先回到归因步骤,而不是急着调整样例描述。
不是所有差异都值得进入验收清单。以下两种情况应主动退出:
退出的动作本身也要有记录:说明退出原因、观察到的现象、以及未来若条件变化是否需要重新纳入。这样做的结果是,验收清单不会因为个别样本成立就无限膨胀,同时也不会把真实问题悄悄丢掉。
把上面的取舍落到具体动作,可以按这个顺序执行:先选一个出现差异的页面作为基准页,记录它的容器结构、传入数据和视口条件;再选一个表现正常的页面作为对照页,只改变其中一个变量,其余保持一致;然后重复执行三次,确认差异是否稳定。如果稳定,保留并标注边界;如果触发条件过窄,改写成区间或对照样例;如果无法稳定复现,退出并记录原因。这个顺序的关键在于:每次只动一个变量,且对结果做重复验证。请求量或抓取量归零、页面某处统计异常,都不能单独证明样例构造正确,它们可能来自缓存、统计口径或加载时序,需要结合复现步骤一起判断。只有当你能够用一组固定步骤稳定得到同一结果时,这个样例才适合进入正式的验收范围。