先给结论:不要把“组件在首页正常、在列表页异常”当成一个整体问题去验收,而要把组件拆成结构、状态、数据量、容器约束四类变量,为每类变量各写一条可复现的最小样例。缺少完整数据或权限时,先用静态占位和手工改参构造样例,仍然能区分“组件本身有问题”还是“页面环境把它带偏了”。这类样例只能证明差异在哪个变量上出现,不能直接推出全站所有页面都已修复。
同一组件表现不同,通常只有两个方向:
这两种解释的修复动作完全不同:前者改组件,后者改页面容器或使用约定。验收样例必须先能区分它们,否则改完一处,另一处照旧。
能区分两种解释的证据,不是截图对比,而是控制变量后的对照样例。建议按下面的顺序构造:
这三步做完,你手上就有了一组能指向原因的样例,而不是一堆“看起来不对”的页面。
没有真实接口、没有后台权限,仍然可以执行最小动作:在本地或测试环境建一个临时页面,用静态数组模拟不同长度、不同状态的数据,把组件按上述对照条件各渲染一次。动作的结果是:你能拿到“哪种变量触发异常”的记录,下一步就能决定是给组件补状态样式,还是给页面加容器约束。
需要说明的是,静态样例通过,不能推出真实数据下也通过;真实数据里的极端长度、空值、超长无空格字符串,仍可能触发新问题。所以样例只是缩小排查范围,不是最终验收结论。
样例要能被别人重跑,必须写清前置条件。可以按这个结构写:
假设某卡片组件在首页两列布局下正常,在三列列表页出现文字溢出。可以构造一条样例:容器宽度固定为三列时的实际值,内容用一段无空格长字符串,预期是截断而非撑破容器。若截断生效,说明问题在页面容器约束;若仍溢出,说明组件内部缺少溢出处理。这个判断直接决定下一步改哪一层。
第一,把“某一页正常”当成组件已验收,忽略了其他页面用的是不同容器。第二,只记录现象不记录变量,别人无法复现。第三,用真实数据当唯一依据,数据一变结论就失效。第四,把一次通过当成长期结论,后续容器或样式调整后需要重跑。
验收样例的价值不在于数量多,而在于每条都能回答“如果它失败,我该改组件还是改页面”。做到这一点,同一组件在不同页面的表现差异就不再是玄学,而是一条条可追踪、可复现、可决定下一步动作的记录。