先给结论:不要为每个页面单独写一条验收项,而要把“组件本身”和“页面给它的上下文”拆成两组变量,用最小对照样例锁定差异来源。具体做法是选一个已经出现差异的组件,固定其中一组变量、只放行另一组,逐次记录结果,直到能复现“哪些页面正常、哪些页面异常”的分界。
同一组件在不同页面表现不同,常见来源只有两类。第一类是组件自身状态:默认态、悬停态、禁用态、加载态、空数据态是否都实现完整。第二类是页面上下文:容器宽度、父级样式、同页其他脚本、数据条数、字段缺失、权限差异。验收样例要能区分这两类,否则修完一个页面,另一个页面还会复发。
可操作的第一步是取两个页面做对照:一个表现正常,一个表现异常,且两者使用同一组件。把这两个页面并排记录以下字段:容器可用宽度、组件接收的数据条数、是否首屏渲染、同页是否加载了其他交互脚本、组件外层是否被额外样式包裹。只要其中一项不同,就先把它当作嫌疑变量,而不是直接改组件代码。
假设你手上有一个商品卡片组件,在列表页显示正常,在详情页推荐区出现文字截断。可以按下面的顺序构造样例,每一步只改一个条件:
这四步的价值在于:每步都产生一个可判定的结果,而不是靠“感觉好像好了”。假设某一步让异常消失,那么下一步就不是继续改组件,而是回到该页面,检查被移除或替换的那个条件是否在真实环境中必要。如果必要,就要为它单独补一条验收项,而不是把整个页面排除在验收范围外。
个别样本成立不等于规模化后成立。一个组件在三条数据下正常,不代表在三十条、字段缺失或长文本下也正常。写验收样例时,至少要注明三个边界:
如果某个边界在当前页面不会出现,可以不在该页面验收,但要在样例中写明“此条件不适用及原因”。这样后续页面复用组件时,能直接判断是否需要补充样例,而不是把旧页面的通过结果当成通用结论。
实际动作可以固定为:每引入一个新页面,先跑一遍最小对照样例,再记录该页面与基准页面的差异项。差异项为零,直接复用基准验收结果;差异项不为零,只针对差异项补测,不重跑全部用例。这样做的结果是,验收范围随页面差异增长,而不是随页面数量线性膨胀。下一步如果差异项反复出现在同一类页面上,就把它升级为组件级约束,写进组件说明,而不是继续留在单个页面的验收记录里。
需要注意,页面表现不同有时来自缓存、网络或第三方资源加载顺序,这类原因无法只靠对照样例完全排除。遇到无法稳定复现的差异,先记录出现条件,再决定是否纳入验收,不要用一次偶发结果直接修改组件。