先给结论:不要为组件单独写一份验收样例,而要围绕“组件+页面上下文”成对构造。同一组件在A页正常、在B页异常,通常不是组件本身坏了,而是页面给它的输入、容器约束或数据状态不同。可执行的验收样例应当记录页面、数据状态、容器条件和预期结果,让异常能被复现,而不是只截一张图。
面对“同一组件不同页面表现不同”,常见的解释只有两类,方向相反,处理方式也完全不同。
把这两类混在一起排查,最容易出现“改了组件,A页又坏了”的循环。验收样例的作用,就是让这两种解释各自可被验证。
每个样例至少包含五项:页面标识、数据状态、容器条件、执行动作、预期结果。缺任何一项,异常都可能无法复现。可以把它写成一份可核对的清单,而不是抽象描述。
假设某列表组件在首页显示三行,在详情页只显示一行。不要先断言组件有bug,而是先补一条样例:把详情页的容器宽度、传入条数和首页对齐,再观察差异是否消失。这一步动作的结果会直接决定下一步——若对齐后恢复正常,问题在页面上下文;若仍异常,才转向组件状态排查。
光有样例还不够,关键是找能“二选一”的证据。
这些证据的价值在于可重复。截图只能说明“当时是这样”,交叉替换能说明“换成另一条件会怎样”,后者才支撑决策。
验收时不要只测“每个组件是否出现”,而要测“每个组件在每个页面上下文是否成立”。可以按页面分组,但每条样例仍绑定具体页面。对高风险组件,至少覆盖正常值、空值、超长值三种数据状态,并记录容器宽度区间。
当某条样例失败时,先按上一节的证据做一次交叉替换,再决定是提组件缺陷还是提页面适配问题。这个动作会改变后续工单的归属:归组件的问题应附带最小复现数据;归页面的问题应附带容器与样式差异。两者混在一张工单里,修复范围会被放大,回归成本也随之上升。
需要提醒的是,某条样例通过并不等于组件在所有页面都安全。请求量、渲染次数或报错计数归零,也不能单独证明处理正确,因为缓存、延迟加载或统计口径变化都可能有同样表现。因此样例应保留对照页,而不是只保留结果。
这套方法适用于组件被多个页面复用、且页面之间存在布局或数据差异的情况。如果组件只在一个页面出现,直接在该页验收即可,不必强行建立跨页样例。若页面差异本身不稳定,例如容器宽度随内容频繁变化,应先固定测量条件,否则样例结果无法比较。
最终判断标准很简单:拿到一条失败样例,能否在不猜测的前提下,把它归到“组件状态”或“页面上下文”之一,并据此确定下一步动作。能做到,验收样例就构造到位了。