先把“组件坏了”这个判断拆开:同一组件在不同页面表现不同,通常不是组件本身时好时坏,而是它在这两个页面拿到的输入、所处的容器宽度、依赖的脚本加载顺序或渲染时机不同。验收样例要做的不是复测一遍,而是构造出能把这几类原因分开的最小对照页,用可核对的证据决定下一步是改组件、改页面还是改加载方式。
假设你在做一个牡丹江本地的企业站,页头导航组件在首页正常,进入产品列表页后下拉菜单错位,在文章详情页则偶尔点不开。三个页面引用的是同一份组件代码,但首页导航在首屏直接渲染,产品列表页的导航被放在一个带横向内边距的容器里,文章详情页的导航在页面底部脚本执行后才初始化。
这时如果直接在出问题的页面上反复刷新、随手调整样式,得到的只是一堆互相干扰的结果。正确做法是先写下这次要验证的假设,例如“错位由容器宽度变化引起”“点不开由脚本执行顺序引起”,每个假设对应一个独立的验收样例,一次只动一个变量。
同一组件在不同页面出现差异,绝大多数可以归到下面三类输入之一。构造样例时,先判断差异属于哪一类,再决定对照页怎么搭。
这三类对应三种不同的修复方向:布局问题改容器或组件样式,数据问题改传入逻辑或做兜底,时机问题改加载顺序或加就绪判断。样例的作用就是让你在动手改之前,先知道该往哪个方向改。
假设你怀疑产品列表页的错位来自容器内边距,可以按下面的顺序做一个对照样例:
如果下面那个实例复现了错位,说明差异确实来自容器输入,接下来应该去核对产品列表页容器的实际计算宽度,而不是去改组件内部。如果两个实例表现一致,说明容器不是原因,需要转向数据或时机的对照样例。这一步的结果直接决定下一个样例怎么搭,而不是决定“组件有没有问题”。
可以用一段简单的结构说明对照页要放什么,注意这里只是示意:
<div class="wrap-a"><nav id="nav-a"></nav></div><div class="wrap-b"><nav id="nav-b"></nav></div>
几个常见的反常现象,往往有多种合理解释,验收样例要能排除掉其中一部分。
把这几类解释写成可勾选的核对项,比在出问题页面上反复刷新更容易得到稳定结论。核对项本身不需要复杂,关键是每一项都对应一个可以观察到的信号。
当对照样例把原因收敛到某一类输入后,验收标准也随之明确:如果原因在容器,就规定该组件在允许的容器宽度区间内不得出现偏移;如果原因在数据,就规定菜单项数量和文字长度的上限,并要求超限时有可见的降级表现;如果原因在时机,就规定初始化必须发生在依赖就绪之后,并给出一个能稳定复现的检测方式。
这些标准写进验收项时,要带上具体的观察动作和预期结果,例如“在最小宽度和最大宽度两种容器下各渲染一次,两次的定位偏移差值为零”。这样后续任何人复测时,都能得到同样的判断,而不是依赖“看起来正常”。对于牡丹江建站这类页面数量不多、改动频繁的项目,把验收样例留在代码库里,比留在某次聊天记录里更有用。