先接受一个前提:同一组件在不同页面表现不同,往往不是组件本身坏了,而是它被放进不同上下文后的结果。构造验收样例的正确方向,是先把“变量”固定住,再决定验收粒度。缺少完整数据或后台权限时,仍可执行的最小动作是:用浏览器开发者工具检查该组件在各页面的DOM结构、类名、计算样式和加载顺序,把差异记录下来作为验收基线。但要注意,这只能证明“渲染结果不同”,不能推出“组件代码有缺陷”或“某个页面配置错误”的结论,因为差异也可能来自父容器样式、内容长度、异步数据时序或主题覆盖。
判断验收样例该粗还是该细,先区分两种条件。
条件一:差异随页面模板变化。如果同一组件在列表页正常、在详情页错位,且两个页面使用不同模板或不同父级容器,那么验收样例应以“模板+容器”为组合单位。每个组合至少覆盖一个正常内容和一组长内容,观察组件是否溢出、换行或遮挡。
条件二:差异随数据内容变化。如果同一模板下,只有标题较长或图片缺失的条目出问题,那么验收样例应以“数据形态”为单位,而不是以页面为单位。此时按页面逐个验收会漏掉边界情况。
两种条件可以同时存在。若无法区分,优先固定模板,只改变数据形态;若结果仍不稳定,再把模板作为变量。这个顺序能避免把数据问题误判为模板问题。
下面是一个假设例子,用于说明方法,不代表任何真实项目结果。
假设某组件在首页显示正常,在栏目页右侧栏出现高度塌陷。若没有后台权限查看数据源,可以执行以下动作:
display值和父级容器的宽度。这个动作的结果会直接影响下一步:如果差异由容器宽度引起,验收样例应针对容器约束,而不是要求修改组件本身;如果差异由额外样式引起,验收样例应覆盖样式加载顺序,而不是继续调整内容。
一个可执行的样例不必复杂,但至少要能复现差异。建议包含:页面标识、模板或容器类型、数据形态、预期表现、实际表现、判定条件。判定条件要写成可观察的结果,例如“组件底部与相邻模块间距不小于8像素”,而不是“显示正常”。
缺少完整数据时,数据形态可以用占位内容模拟,但必须注明是假设值。不能因为模拟通过就推断真实数据下一定通过。
如果差异只在某个页面的特定滚动位置出现,且刷新后消失,优先怀疑异步加载或缓存时序,而不是组件逻辑。此时继续增加样例数量收益很低,应先固定加载顺序再复测。
另外,如果组件由第三方提供且无法查看源码,验收样例应停留在“可观察行为”层面,不要求内部实现细节。缺少权限时,能证明的只是当前页面上的表现差异,不能推出组件在所有页面都会同样表现。
把差异写成可复现的样例,再根据样例结果决定改组件、改容器还是改数据,比直接修改组件更稳妥。