结论先说:验收样例不能只写“组件显示正常”,而要写成“同一组件在哪些页面、哪些数据条件下,输出哪些可观察结果”。如果同一组件在列表页、详情页或首页表现不同,先判断差异来自数据内容、容器宽度还是调用参数,再按差异来源分别构造样例。只要这三类来源中有一类无法在测试环境中复现,样例就不足以支撑验收结论。
同一组件表现不同,通常有三种可区分的原因。第一种是数据差异:列表页传入的是短标题,详情页传入的是长标题或含换行符的文本。第二种是容器差异:组件在窄栏中可用,在通栏中却出现拉伸或留白。第三种是调用参数差异:同一组件在首页使用默认配置,在内页传入不同数量或不同排序规则。
三种原因对应不同样例构造方式。数据差异要准备边界值样例,例如最短标题、最长标题、含特殊符号的标题。容器差异要固定数据、只改变外层宽度,观察组件是否出现溢出、截断或错位。参数差异要固定数据和宽度,只改变传入参数,确认组件行为是否符合约定。
如果三种原因混在一起测,出现异常时无法判断该改组件、改页面还是改数据。因此验收样例的第一步不是增加数量,而是分组隔离变量。
假设某组件用于展示条目摘要,在列表页正常,在详情页侧栏出现文字溢出。可以构造三组样例:
这三组样例的作用不是证明组件有缺陷,而是定位缺陷归属。如果只有超长无空格文本在侧栏宽度下溢出,问题更可能出在断词规则或容器约束;如果所有文本在通栏下都异常,问题更可能出在组件对外层宽度的假设。
可执行的样例至少包含三项:输入条件、执行动作、可观察结果。输入条件要具体到数据形态和容器条件,执行动作要具体到打开哪个页面、触发什么交互,可观察结果要具体到文字是否截断、按钮是否可点、布局是否位移。
例如,“在详情页侧栏传入超长无空格标题,加载完成后观察摘要区域是否出现横向滚动条”比“检查组件显示是否正常”更容易复现,也更容易判断通过与否。验收记录中应保留实际观察结果,而不是只写“通过”或“不通过”。
当同一组件在多个页面使用时,建议为每个页面建立一条样例记录,并标注该页面与基准页面的差异项。这样在回归测试时,可以优先重测差异项,而不是每次全量重测。
如果页面表现差异来自服务端渲染与客户端渲染的时序不同,仅靠固定数据和容器宽度可能无法复现。此时样例需要增加加载阶段条件,例如首次直出、二次切换、异步数据返回后的状态。若忽略时序条件,样例可能全部通过,但真实访问中仍出现闪动或错位。
另一个失效条件是组件依赖外部数据源且数据源不可控。此时样例只能覆盖已知数据形态,不能证明所有线上数据都安全。应把这类组件单独标记为“依赖外部数据”,并在验收结论中说明覆盖范围。
完成上述分组后,把每个差异项写成一条回归检查项,并指定触发条件和预期结果。下一次组件调整或页面改版时,先跑这些检查项,再决定是否需要扩大测试范围。如果某个差异项在两次回归中都不再出现,可以降级为抽样检查,但不要直接删除记录,以免同类问题再次出现时缺少参照。
验收样例的价值不在于数量多,而在于每个样例都能回答“差异从哪来、改哪里、改完看什么”。当同一组件在不同页面表现不同时,先隔离数据、容器和参数三类变量,再补充时序条件,最后把差异项转成可重复执行的回归清单,这样验收结论才有依据。