先给结论:不要急着改组件,而是把“同一组件”拆成组件版本、页面上下文、数据输入三个变量,为每个变量各构造一组最小验收样例。只有当同一版本在两组样例中表现相反时,才能把原因锁定在页面上下文或数据输入上。下面给出一个可复用的构造方法。
同一组件在不同页面表现不同,通常只有两类解释。第一类是组件自身被改动过,比如两个页面引用了不同版本的脚本或样式;第二类是组件没变,但页面上下文不同,比如父容器宽度、继承的字号、加载顺序、数据字段缺失。遵义做网站时,很多团队会直接归因于“组件有bug”,但如果没有先排除上下文差异,改组件往往是白费力气。
区分这两类解释,最有效的动作是固定组件版本,只改页面上下文。做法是:把两个页面中表现正常的那个页面作为基准,复制它的组件引用路径和版本号,替换到表现异常的页面里,其他内容不动。如果异常消失,说明问题出在版本不一致;如果异常仍在,说明是上下文或数据问题。这个动作的结果直接决定下一步方向:前者去统一版本,后者去查上下文。
验收样例不是随便截两张图,而是要让每个变量可单独对照。建议按下面三个维度各准备一组最小样例。
每组样例只改一个变量,其余保持相同。这样当表现不同时,你才能指出是哪一个变量导致的,而不是笼统地说“两个页面不一样”。
假设你在遵义做网站时遇到一个筛选组件:在列表页正常,在详情页错位。可以这样构造样例:
这三步的每一步都对应一个可观察的结果,并且结果会告诉你下一步该查什么。比如第一步就消除了错位,你就不需要再去查容器宽度;反之,如果前两步都没变化,数据输入就是最可能的解释。
为了让验收样例能反复使用,建议写成固定格式:前提条件、操作步骤、预期结果、实际结果。前提条件里写清页面路径、组件版本、容器宽度、数据字段;操作步骤里写清改哪一个变量;预期结果写清正常表现是什么样;实际结果留空,执行时填写。
这样做的好处是,当组件升级或页面改版后,你可以重新跑一遍同样的样例,快速判断是旧问题复发还是新问题出现。验收样例的价值不在于证明“现在没问题”,而在于当问题再次出现时,能快速定位到是哪个变量变了。
如果验收样例显示:同一版本在多个页面都异常,且与容器宽度、数据字段无关,那么可以判断是组件自身的问题,直接改组件是合理的。反之,如果同一版本只在特定页面异常,且异常随容器或数据变化,那么应该先改页面上下文或数据输入,而不是改组件。
这个判断标准能避免一种常见浪费:把页面上下文问题误当成组件问题,改完组件后发现其他页面又坏了。遵义做网站时,组件往往被多个页面复用,改组件的影响面比改页面大,所以先确认原因再动手,是更稳妥的顺序。
最后提醒一点:验收样例中的数字和字段只是用于说明比较方法,实际使用时请替换成你自己页面的真实值。样例的目的是让变量可控、结果可对照,而不是追求一次覆盖所有情况。