先把“表现不同”拆成可观察的差异,再为每个差异构造能独立复现的验收样例,而不是继续在出问题的页面上反复微调。核心动作是:固定组件本身的输入条件,只改变页面上下文,记录组件在哪一层开始偏离预期;如果同一组件在A页正常、B页异常,验收样例就必须包含A页和B页两组对照,否则你无法判断问题属于组件还是页面。
同一组件在不同页面表现不同,常见原因分布在三个层次,验收样例要能逐层排除:
判定方法:把B页出问题的组件单独放到一个只含该组件和必要容器的测试页。若测试页正常,问题在页面环境或容器;若测试页仍异常,问题在组件内部或其数据输入。这一步的结果直接决定下一步是查样式覆盖还是查组件逻辑,不要跳过。
验收样例不是“组件显示正常”这种描述,而是一组固定输入加固定观察点。对每个差异,按下面结构写一条:
假设一个场景:某卡片组件在列表页正常,在详情页侧栏中图片被压扁。可写的验收样例是——前置条件为详情页侧栏容器宽度约为列表页卡片宽度的一半;操作为打开详情页并定位到侧栏卡片;预期结果为图片保持原始宽高比且不超出容器。若实际结果是不等比压缩,则说明组件内图片缺少对容器宽度的适应规则,下一步应检查图片样式而非页面整体布局。
当常规做法(逐页调样式、加媒体查询)没有解决时,遗漏条件往往是你同时改变了多个变量。构造验收样例时,一次只改一个:
每完成一次对照,记录“改了什么、结果是否复现”。如果替换数据后异常消失,问题在数据形态;如果改宽度后复现,问题在响应式规则;如果引入某样式文件后复现,问题在样式覆盖。这个记录本身就是验收样例的一部分,它让后来者不必重新试错。
定位到具体原因后,验收样例要转化为后续可重复执行的检查项,而不是停留在一次性结论。例如确认是容器宽度导致图片压缩,则清单中增加一条:在容器宽度低于组件设计基准宽度时,图片应保持比例且不溢出。同时注明该条适用于所有复用该组件的页面,而不只是当前出问题的页面。
如果检查后发现异常只出现在某个页面的特定数据组合下,验收清单应写明该数据组合的边界条件,例如“字段为空时组件隐藏占位而非撑高容器”。这样下次改版或新增页面时,可以直接用这条样例验证,不必重新排查。
如果同一组件在多个页面、多种宽度、多组数据下表现一致,只是与你记忆中的旧版本不同,那可能是一次有意的样式或结构更新,而非缺陷。此时应先确认当前预期是否仍然成立,再决定是否把它当作问题处理。验收样例只服务于“同一组件在不同页面表现不同”这一具体异常,不要把它扩展成对所有页面做全量回归,否则成本会超过问题本身。
当你能用一条固定输入、一个固定观察点、一个对照页稳定复现差异时,就已经具备继续修复的条件;反之,如果换台设备或换个时间就无法复现,应先记录环境差异,而不是直接改代码。