同事说“我这边复现不了”,先核对这三处差异
“我这边复现不了。同事”小林把这句话发到群里时,说边附了一张截图:页面是复现空的,控制台干干净净。不先可提问题的核对那位同事,手机上明明每隔十几秒就弹一次提示。处差两边都没说谎,同事只是说边他们测的根本不是同一个东西。
“最小复现问题”这个词,复现新手最容易理解成“把代码删到最少”。不先方向对了一半,核对但删之前得先确认:两边跑的处差是不是同一份条件。版本、同事地区、说边人群这几类差异,复现恰恰是最不容易在聊天记录里说清、又最容易被一句“我这也是最新版”带过去的部分。下面这几步,适合在动手删代码之前先走一遍。
先把双方的“环境三件套”摆到同一张表上
别急着问“你什么版本”,这句话太笼统。让对方报三样:应用或系统的版本号、运行设备与系统、账号所在地区或语言设置。最好直接截图设置页,而不是让对方凭印象口述。口述的版本号经常是“大概上个月更新的那个”,截图不会。
拿到之后,做一件很朴素的事:把两边不一样的格子标出来。通常标完就会发现,差异不止一处。比如一边是内测通道、一边是商店正式版;一边系统语言是简体中文、一边是英文;一边账号注册地在境内、一边在境外。这三类差异会各自引出一套不同的行为,混在一起看,就会误以为是同一个 bug。
这里有个反例值得说。有人为了“排除干扰”,让复现不了的那位同事把应用卸了重装。结果重装后装到了另一个通道的版本,问题反而消失了——不是因为修复了,而是因为换了一个环境。这种“消失”最危险,它会让排查提前收工,等到正式环境再冒出来时,线索已经断了。所以核对环境时,优先做记录,不要顺手做变更;要变更,也先记下变更前的状态。
版本差异要落到“哪个功能变了”,而不是只比大小
版本号比大小,只能说明新旧,说明不了行为。新手常犯的错是:看到对方版本低,就断定“升级一下就好了”。可有些问题是新版本引入的,升级只会让人一起踩进去。
更实用的做法,是把版本号翻译成一句人能读懂的话:这个版本改动过什么、和当前问题沾不沾边。渠道一般会提供更新说明,应用商店的版本记录、官网的发布说明、系统设置里的更新日志,都是可以核对的当期页面。看的时候注意日期,别拿半年前的说明去解释今天的行为。
如果更新说明写得含糊,还有一个笨办法:找一台和出问题方版本一致的设备,或者用同一渠道的安装包,先在隔离环境里试。能稳定重现,就说明问题跟这个版本绑定;重现不了,就说明还有别的变量没控住。这一步不需要改任何业务代码,却能省掉后面大量无效删改。
顺带提醒一句:版本对比要连“构建号”一起看。同一个版本号下,不同渠道打出来的包可能并不相同,只看主版本号会漏掉这层差异。具体怎么显示构建号,各家不一样,以当期设置页实际展示为准。
地区与人群差异,去查当期规则页而不是凭经验
地区差异最容易被“我以前试过没问题”带偏。语言、时区、账号归属地、可用的服务范围,任何一项变动都可能让同一段操作走出不同结果。人群差异同理:新注册账号和老账号、有无某项权限、是否在灰度范围内,表现可能完全不同。
这类差异没法靠猜。正确的动作是打开官方规则页或帮助中心,找到与当前功能对应的那一页,看清生效日期和适用范围,再和自己的环境对一遍。页面会改,所以核对时以你打开那一刻的内容为准,别引用聊天记录里转发的旧截图。如果页面上写的是“逐步开放”“以实际展示为准”这类表述,那就说明它本身存在分批差异,这时候最该做的是记录双方各自看到什么,而不是强行让两边一致。
这也是最小复现问题里最容易被跳过的一步:很多人把“复现”理解成技术动作,其实一半是信息核对。把地区、账号类型、权限状态写进复现说明,别人才有可能照着走一遍。
写一张能交给别人的核对表
核对完,别停在脑子里。用几行字固定下来,格式可以很简单:
一、问题现象:一句话,带截图或录屏的时间点。
二、出问题方:版本与构建号、设备与系统、语言与时区、账号类型与地区、相关权限状态。
三、未复现方:同样五项,逐项对照。
四、已确认相同的条件:列出来,避免后面重复验证。
五、尚未确认的条件:写清楚卡在哪,是拿不到设备,还是查不到规则页。
这张表的价值在于,它把“我这边没问题”变成了一句可检验的话。新手做最小复现问题,往往卡在不知道删什么;有了这张表,就知道该先固定哪些变量,再动代码。第五项尤其别省,它决定了下一步是继续自己查,还是去找能提供对应环境的人。
最后说一个判断点:如果核对完发现差异来自地区规则或分批开放,那这大概率不是代码缺陷,继续删代码只会白费功夫;如果差异只在版本上、且能稳定重现,那才值得进入缩小范围的正题。分不清这两者时,先把核对表补齐,比反复重跑有用得多。