验收样例的目标不是证明组件“没问题”,而是把“在哪些页面、什么数据条件下它才成立”写成可重复执行的检查项。做法是:先固定一个基准页面,记录组件在该页的输入与输出,再逐页改变一个变量,观察输出是否仍符合预期,最后把不成立的页面单独列为例外清单。
同一组件在不同页面表现不同,通常不是组件本身随机,而是页面给了它不同的输入。构造验收样例的第一步,是选一个结构最简单、内容最完整、依赖最少的页面作为基准。这个页面要能代表组件“理想状态”下的行为。
在基准页面上,记录三类信息:
记录完成后,基准页面就成了一把尺子。后续所有页面的差异,都能对照这把尺子定位,而不是凭感觉判断“这个页面好像不太对”。
不要一次改动多个条件。对每个待验收页面,只替换基准样例中的一个变量,然后看结果是否仍然成立。常见的可替换变量有:
每替换一个变量,就记录一次结果。如果某个页面在“长标题”条件下结构错乱,那么这条就是该页面的例外样例,而不是整个组件的缺陷。例外样例要写清触发条件,否则开发修复时无法复现。
假设你手上有一个产品卡片组件,在列表页显示正常,但在详情页推荐位出现标题换行后高度不一致。可以这样把它转为处理方案:
第一步,在基准列表页记录卡片在标题为 12 个汉字时的渲染结果,作为通过样例。第二步,在详情页推荐位用同样的 12 字标题测试,若高度不同,说明容器宽度或继承样式发生了变化。第三步,只调整容器宽度这一个变量,再次测试,确认高度是否恢复一致。第四步,若调整后仍不一致,把该页面标记为“不适用统一卡片高度”,改为在该位置使用独立样式或限制标题长度。
这个动作的结果会直接影响下一步:如果例外只出现在一个页面,可以保留组件默认规则,只对该页面做覆盖;如果多个页面在相同条件下都失败,就需要回到组件本身,修改其默认行为,而不是逐页打补丁。
一份可用的验收样例,不能只列通过项。它必须明确写出:在什么条件下该组件不适用。例如:
这些边界不是缺陷清单,而是使用条件。写清边界后,后续页面在复用组件前,可以先对照边界判断是否需要额外处理,减少规模化后反复出现同类例外。
假设有 30 个页面要复用同一个导航组件,其中 5 个页面使用了不同的主题色配置。验收时不必逐页肉眼检查,而是先构造三个样例:默认主题、深色主题、无主题配置。在默认主题下记录导航的链接顺序和可点击区域;在深色主题下只改变颜色变量,确认结构不变;在无主题配置下确认组件是否回退到默认样式。如果无主题配置的页面出现链接缺失,那么这 5 个页面就需要单独补充配置,而不是直接套用默认样例。
这个例子的数字只用于说明比较方法,不代表任何真实项目的规模或结果。关键是:样例要能区分“结构问题”和“样式问题”,因为两者的修复路径不同。结构问题需要改组件逻辑,样式问题通常只需调整页面级配置。
完成上述步骤后,你会得到一份带条件的样例记录。它至少能回答三个问题:这个组件在哪些页面可以直接复用;在哪些页面需要先调整输入;在哪些页面根本不该使用。后续新增页面时,先对照这份记录判断属于哪一类,再决定是直接复用、局部覆盖,还是另建组件。这样,同一组件在多页表现不一致就不再是随机故障,而是一组有明确触发条件的已知情况。