先给结论:不要先改组件,也不要先怀疑浏览器。把“同一组件”拆成可核对的输入、容器和使用位置三组变量,再为每个变量构造一个只改变它的验收样例,才能判断差异来自组件本身还是页面环境。下面用一个假设情境说明完整决策过程。
假设某站点用一站式建站方式搭建,公共按钮组件在首页显示正常,在列表页却变窄、文字换行。直觉上会认为组件代码写坏了,但组件文件是同一份,说明差异更可能来自页面给它的容器宽度、父级样式或内容长度。此时要做的不是重写按钮,而是构造能区分这三种原因的验收样例。
注意,这个情境只是说明方法,不代表任何具体平台或工具的真实表现。验收样例的价值在于:每个样例只改变一个条件,让结果可以被单独解释。
先列出可能影响组件呈现的变量,并确认哪些是组件内部、哪些是页面外部:
把这几组变量写下来后,验收样例就不再是“再看一眼页面”,而是可以逐项对照的检查对象。若某一组变量无法确认,就先把它标记为待验证,而不是直接归因。
最小对照样例的做法是:新建一个只放该组件的测试页面,然后依次改变一个条件。例如:
如果 A 正常、B 异常,差异更可能来自内容长度;如果 B 正常、C 异常,差异更可能来自容器;如果 C 正常、D 异常,则要检查样式覆盖。这样得到的证据比“首页正常、列表页不正常”更接近原因。
实际动作可以是:先只建 A 和 C 两个样例,运行后记录哪一个复现问题。若 C 复现,下一步就固定容器结构,只改宽度值,找出触发塌陷的临界范围;若 C 不复现,下一步才回到组件输入和加载顺序。这个动作的结果会直接决定后续排查方向,避免在无关变量上反复调整。
两类解释都成立时,需要看可区分证据:
如果同一组件在多个页面表现不同,但所有异常页面都共享同一个父级容器,那么优先检查容器,而不是修改组件默认样式。反过来,如果异常页面之间没有共同容器,却都调用了同一个组件变体,才应回到组件本身。
这里要避免一个常见误判:某个页面访问量或抓取量归零,并不能单独证明组件处理正确或错误。它可能来自缓存、路由、权限、发布状态等多种解释。验收样例要解决的是呈现差异,不应把流量现象直接当成组件结论。
为了让下一次改版还能用,验收记录至少包含:样例编号、固定条件、被改变的条件、观察结果、下一步动作。可以用简短的代码注释或测试说明承载,例如把测试页面的容器写成 <div class="test-container">,并在旁边注明该容器模拟的是列表页父级。这样做的结果是:当组件再次出现差异时,可以直接复跑样例,而不是重新猜测。
如果时间有限,优先保留能复现问题的那一组对照,而不是保留所有页面截图。截图的局限在于它只记录结果,不记录变量;对照样例则能说明“改变了什么,所以结果变了”。
只有在最小样例中,组件单独使用也异常,并且排除了容器、文字和加载顺序之后,才适合直接改组件。否则,先改页面容器或使用方式,往往比改公共组件风险更低。因为公共组件一旦调整,可能影响所有调用页面,而容器调整只影响当前页面。
假设你只有一次上线窗口,建议顺序是:先复现、再定位、最后改一处。复现失败时不要强行上线修复,因为无法确认修复对象;复现成功但只影响单个页面时,优先在该页面处理;只有多个页面共享同一组件缺陷时,才考虑统一修改。