先给结论:如果同一组件在A页面正常、在B页面异常,而两页只在“内容长度、查询参数、登录状态、投放来源”中的某一项不同,那么验收样例应按“组件+页面上下文”成对构造,而不是只验收组件本身。只有当两页的差异属于同一类上下文变量时,成对样例才成立;若差异来自两个以上变量同时变化,结论会失效,需要先拆变量再重测。
同一组件在不同页面表现不同,通常有三种可区分原因:组件接收的数据不同、组件所处的布局容器不同、页面级脚本或样式影响了组件。要区分它们,最直接的动作是固定组件输入,只改变页面上下文,观察异常是否跟随页面移动。
这个判断会直接影响下一步:前两种要改组件或数据,第三种要改页面加载流程,不能混为一谈。
普通验收常写成“打开某页面,组件显示正常”。这种写法无法覆盖跨页差异。更有效的做法是写成一对样例:一组是基准页,一组是对照页,两页只允许一个上下文变量不同。例如:
假设某组件在短内容页正常、在长内容页被截断。如果只验收短内容页,就会漏掉这个差异。成对样例的价值在于,它把“页面上下文”变成了可比较的变量,而不是靠感觉判断。
成对样例成立的前提是:两页之间只有一个上下文变量不同。如果实际业务中,对照页同时改变了内容长度、登录状态和投放来源,那么即使组件异常,也无法判断是哪一个变量导致的。这时成对样例失效,需要先做变量拆分,再重新构造样例。
另一个反例是:两页虽然只有一个变量不同,但这个变量在真实业务中从不单独出现。例如,登录状态总是和个性化数据同时变化,那么单独测登录状态就没有实际意义。此时验收样例应改为“组合变量样例”,并明确记录组合条件,而不是假装只测了一个变量。
还有一种情况:组件在A页面正常、B页面异常,但两页的差异是页面模板不同。如果模板差异包含多个结构性变化,成对样例同样不成立。正确动作是先固定模板,只改变其中一个结构块,确认异常是否复现,再决定是否扩大验收范围。
具体动作可以分三步:
这个动作的结果会直接影响下一步:如果最小对照样例能稳定复现异常,验收范围就锁定在该变量;如果不能复现,说明还需要继续拆分,不能直接下结论。验收样例不是越多越好,而是每个样例都要能回答“哪个变量导致了差异”。
为了让后续推广投放、页面改版或组件升级时能复用,验收样例应包含:页面地址或页面标识、上下文条件、操作步骤、预期结果、实际结果、可疑变量。不要只写“组件正常”或“组件异常”,那样无法判断下次是否仍然适用。
如果业务前提发生变化,例如原来只做自然流量,后来增加了广告落地页,那么同一组件在广告页和自然页的表现差异,应作为新的验收样例重新构造。旧样例仍然有效,但不能直接套用到新前提上。先确认变化前后哪些条件不同,再决定是复用旧样例还是新建对照样例,这是避免验收遗漏的关键一步。