先给结论:不要为“组件本身”写一份通用验收样例,而要为“组件与页面条件的组合”各写一份。具体做法是固定组件版本,把页面差异拆成可枚举的条件,再为每种条件准备一份最小样例页,记录预期结果与实际结果。假设有一个定州本地服务类站点,同一个咨询表单组件放在首页侧栏正常提交,放在服务详情页正文底部却偶尔无响应——下面用这个假设情境说明怎么构造能区分原因的验收样例。
同一组件表现不同,第一件要排除的是“其实不是同一个组件”。验收前先确认两处引用的文件路径、构建产物和参数是否一致。假设首页引用的是打包后的 form.bundle.js,详情页引用的是模板内联的旧版脚本,那么问题不在页面环境,而在版本漂移。
确认版本一致后,把页面差异拆成可枚举的条件,而不是笼统写“页面不同”。常见可拆项包括:
把这几项列成条件表,验收样例才有区分力。否则两份样例只差一个页面名称,测出来的差异无法归因。
最小样例页的含义是:只保留复现问题所必需的 HTML 结构、样式和脚本,不引入导航、轮播、统计代码等无关内容。假设要验证“详情页正文底部无响应”是否由外层容器引起,可以构造两份样例:一份把组件放在无样式的普通容器里,另一份套上与详情页相同的容器样式。两份样例除容器外完全相同。
这样做的结果是:如果只有套用容器的那份失败,就可以把怀疑范围收窄到容器样式或布局,而不是继续在组件代码里盲查。下一步动作也随之明确——检查该容器是否影响了点击区域、层级或事件绑定,而不是重写整个组件。
样例页还应记录三样东西:组件版本标识、页面条件清单、预期结果。预期结果要写成可判断的句子,例如“点击提交后出现成功提示,且请求发出一次”,而不是“表单正常工作”。
同一组件表现不同,至少有四类合理解释,需要不同证据来区分:
这里要提醒一点:某个页面的请求量或抓取量归零,不能单独证明组件处理正确。它也可能是页面本身未被访问、统计脚本未加载或路由未触发。把这类现象当作结论,容易把验收方向带偏。
回到前面的假设:首页侧栏正常,详情页底部偶尔无响应。按下面的顺序推进,每一步都产出可核对的记录。
第一步,核对版本。若两处引用一致,进入下一步;若不一致,先统一版本再复测,很多“页面差异”到此结束。
第二步,构造两份最小样例页。一份无容器样式,一份带详情页容器样式。若只有后者失败,把结论记为“容器条件相关”,并进入第三步;若两份都失败,说明问题在组件自身或数据层,应转向接口与初始化检查。
第三步,逐项减少容器条件。每次只去掉一个样式或一层包裹,记录结果变化。假设去掉固定高度后恢复正常,那么验收样例就应把“容器不得限制组件可点击区域”写成一条明确条件,而不是只写“组件可用”。
这个过程的实际影响是:验收清单从“组件功能正常”变成“组件在哪些页面条件下正常、在哪些条件下失败”。后续无论是修改样式还是调整组件,都有可复测的基准。
颗粒度以“能区分原因”为准,不以覆盖页面数量为准。对定州网站制作这类项目,通常三类样例就够用:基础样例验证组件本身,条件样例验证页面环境,回归样例验证修改后原有页面未被破坏。
每份样例建议包含:页面条件、组件版本、操作步骤、预期结果、实际结果、结论。结论只写三种之一——通过、失败且原因已定位、失败但原因待查。这样即使换人复测,也能接着上一步继续,而不是从头再来。
最后提醒:验收样例不是一次性文档。组件升级、页面模板调整或引入新的全局脚本后,应重新跑一遍条件样例。把样例与条件表放在一起维护,比反复口头描述“首页能提交、详情页不行”更省时间,也更容易定位下一次出现的反常结果。