先给结论:不要继续在出问题的页面上反复调试,而要把这个组件抽出来,做成一组“最小差异样例”,让同一个组件只在某一个条件上变化。这样你才能判断差异来自组件本身、页面上下文,还是数据来源,而不是靠感觉猜。
很多所谓“同一组件表现不同”,拆开看并不是同一个东西。常见情况有三种:
判断方法很直接:在你正在处理的页面上,找到这个组件的渲染入口,确认它引用的是同一个文件、同一个类名或同一个数据源。如果引用不同,那问题属于代码重复,不是组件行为差异,验收样例的方向也要换。
确认是同一组件后,下一步不是马上写测试,而是列出两个页面之间所有不同的条件。以你手上的资料页和列表页为例,可能的不同点包括:
把这些条件写成一张对照表,每行只保留一个变量。假设列表页正常、详情页异常,那么第一组样例就固定宽度和数据,只切换外层类;第二组固定外层类,只切换数据字段数量。这样每跑一次,你都能把原因范围缩小一半。
动作可以按下面顺序执行:
这个动作的结果会直接影响下一步:如果异常只在加入“外层主题类”后出现,说明问题在样式继承或变量覆盖,接下来应检查该类下的样式规则,而不是继续改组件内部结构。如果异常只在数据字段减少后出现,说明问题在空值处理,接下来应补默认值或空状态判断。
假设你有一个卡片组件,在列表页显示三行文字正常,在详情页只显示一行且高度塌陷。你构造两组样例:A 组保持三行数据、切换页面容器;B 组保持详情页容器、把数据补到三行。如果 A 组正常、B 组正常,说明单独改容器或单独改数据都不触发问题,问题可能出在“窄容器 + 少数据”的组合上。这时验收样例就要增加一组同时满足窄容器和少数据的条件,而不是继续在完整页面上试。
这个例子的数字只是用来区分条件,不代表真实项目的固定值。它的价值在于让你知道:验收样例不是越多越好,而是每一组都要能回答一个“是哪个条件造成的”问题。
可执行的样例至少要让另一个人不看你的页面也能复现。它需要写清:组件名称、容器条件、数据条件、操作步骤、预期表现、实际表现。预期表现要写成可观察的结果,比如“卡片高度不低于两行文字”“按钮不换行”,而不是“显示正常”。
当样例能稳定复现异常后,修复才有明确目标。修完后重跑同一组样例,如果异常消失且其他样例未受影响,这一步的验收才算完成。之后再回到真实页面确认,而不是一开始就在真实页面上反复刷新。