首先,我们要建立一个核心认知:测试和开发的目标是一致的,都是为了交付高质量的产品。 开发不认可Bug,通常不是针对个人,而是源于信息不对称、理解差异或环境问题。因此,我们的态度应该是 “冷静、专业、对事不对人” 。
切忌一上来就觉得“他在刁难我”,或者用“测试就是比开发懂用户”的心态去硬刚。那只会让沟通陷入僵局。
当开发说“这不是Bug”时,我会遵循以下步骤来处理:
在回去“争论”之前,我先做好功课,确保自己的立场无懈可击。
复现路径是否清晰? 我能否100%稳定地复现这个Bug?如果复现率低,说服力会急剧下降。
Bug描述是否“傻瓜式”?
标题:是否清晰表达了【在什么情况下,发生了什么问题,导致什么结果】?
步骤:是否提供了 step-by-step 的操作步骤,让任何人都能按照说明重现问题?(包括测试环境、账号、前置条件等)
数据:是否提供了测试所用的具体数据?
预期结果 vs 实际结果:描述是否基于需求文档/设计稿/用户常识,且没有歧义?
证据是否确凿? 我是否附上了截图、录屏、日志、抓包数据等铁证?“一图胜千言”,一段录屏能解决所有争论。
举个栗子:
差评描述:“页面点不动,有Bug。”
好评描述:
标题:【购物车页-iOS】连续点击“+”按钮增加商品数量时,页面卡死无响应
环境:iOS 15.5, iPhone 12, App版本 v2.1.0
步骤:
登录账号 test01/123456
进入商品A详情页,加入购物车
进入购物车页
对商品A的数量,在1秒内连续点击“+”按钮超过5次
实际结果:页面卡死,无法进行任何操作,需强制关闭App。
预期结果:商品数量应正常增加,页面响应流畅。
附件:附上卡死时的屏幕录制视频和App日志。
带着准备好的“弹药”,与开发进行一次心平气和的沟通。
倾听对方的理由:“嗯,您认为这不是Bug,能具体和我说说您的看法吗?” 倾听是尊重的开始,也能帮你了解他的真实想法。常见理由有:
“需求就是这样设计的。” -> 对策:拿出需求文档或设计稿,核对确认。如果是文档缺失,则暴露了流程问题。
“这是已知问题,下个版本修复。” -> 对策:确认是否已记录,关联到已知Bug,避免重复提交。
“在我本地是好的。”/“环境问题吧?” -> 对策:邀请开发到你的测试环境上一起复现;或者对比双方环境差异(网络、服务器、数据等)。
“这样设计不影响使用,用户不会这么操作的。” -> 对策:从用户体验、产品品牌形象、非主流操作场景等角度阐述潜在风险。必要时,可以引用一些用户体验设计原则。
摆出事实和数据:向开发展示你准备的清晰步骤、录屏和日志。特别是日志中的错误信息,是定位问题的关键。
引入第三方视角(仲裁者)
与产品经理确认:如果争议在于“这是否符合需求”,就请产品经理根据业务逻辑和用户体验拍板。
与项目经理/技术负责人确认:如果争议在于“是否需要修改”(例如,修改成本高但问题影响小),请项目经理从项目进度、风险和资源角度权衡。
发起Bug评审:在团队内建立一种文化,将争议Bug定期拿出来讨论,集体决策。这既能解决问题,又能统一团队的质量认知。
如果以上沟通都无法达成一致,但你认为这个Bug确实对用户影响重大,那么:
遵循团队规则:将Bug状态设置为 “争议” 或 “待裁决” ,并详细记录双方的观点。
升级问题:按照团队事先定义好的流程,将问题升级给项目经理、技术负责人或测试经理来做最终决策。这不是打小报告,而是对产品负责的职业行为。
尊重最终决定:即使最终决定是不修复,也要记录下来。这将成为一份重要的“技术债”或“风险记录”,在未来类似问题再次出现或被用户投诉时,有据可查。
测试左移:在需求评审和设计阶段就积极参与,提前澄清模糊点,从源头减少歧义。
建立团队质量共识:共同制定Bug定级标准和Bug验收规范,让大家对“什么是Bug”有统一的认识。
提升个人专业度:除了会找Bug,还要学习一些开发、网络、数据库知识,能通过日志、代码(前端Console、后端Stack Trace)初步判断问题根源,这样与开发沟通时更具说服力。
记住,一个优秀的测试工程师,不仅是问题的发现者,更是问题的推动者和解决者。 处理争议Bug的过程,恰恰最能体现你的沟通能力、专业素养和责任心。