作为一个软件开发人员,如何高效地解决BUG,有没有方法,有没有捷径,说没有也是没有,但也有一定的流程可以一个新人理解如何面对一个BUG,如何解决BUG才是不浪费时间,不走弯路。

作者:Younger Liu,

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

1  理解问题

好的测试人员在提报BUG时,会包括如下信息:

1) 标题:主要简明扼要地描述了Bug;可以让人快速了解问题

2) 测试环境:什么环境下发现的,软件和硬件系统,什么版本,如果需要,还应注明哪个、硬件平台

3) 前提条件:用户测试步骤前的系统环境信息

4) 测试步骤:在执行什么操作时,发现的问题

5) 实际结果:在测试软件的过程中,软件所表现出来的特征或者行为

6) 预期结果:软件设计所要求达到的结果或者目标

当然也有不负责任的测试人员,仅仅留下简单的问题现象的描述。

无论是哪种情况,BUG定位人员都要找到并理解上述描述的BUG六要素。

注意:

1.测试人员观察到的实际结果,认为是不符合预期的。有的时候可能是测试人员对需求的理解和开发人员不一致,而提出了bug。这个时候需要找产品经理来确认,判断是不是一个BUG。

2.不要完全相信测试人员的描述。对于测试人员来说,系统就是个黑盒,她做出的一些主观判断可能并不精确,这就需要开发人员批判的看待bug单中的信息,分离出有价值的信息。

只有梳理正确的BUG六要素,才能明确自己要解决的是什么,要达到什么结果。 

2  重现问题

BUG定位人员已经理解BUG 六要素后。搭建与问题软硬件版本相同的环境,进行问题复现。

梳理出最窄的重现步骤。

 1. 要保持软硬件环境和项目版本相同

(a) 环境差异: 可能B版本的代码在A版本的环境也会出问题,但是在开发环境可能就不能复现;

(b) 代码变更:也许是其他的代码引起的bug,B版本时其他开发已经修改,此类可以归纳为相关联功能引起的bug;

(c) 两版本进行复现的前置条件及步骤已不同。

2) “疑难杂症”要通力配合复现

在自己负责的那部分代码确定完没有问题,这时候就需要考虑到接口,是否在接口数据处理上的问题,就需要其他开发人员配合。

3) 保持关注

通过各种的努力,仍然不能复现的bug一定是优先级不高的,那就再评估重要度,若通过项目组决定不影响版本发布,就密切关注此bug,在发布后验证时也重点关注下。

而且该bug不能关闭,依次往以后版本中顺延,并且每轮测试时都要尝试再次复现。那何时可以关闭呢?也许3,5个版本发布后,没有出问题就可以决定关闭它了。

3  寻找问题根源

重现问题后,就可以通过调试手段来定位问题所在。不同的问题有不同的调试手段

1.打断点:这可能是最方便的调试手段了。

2.打日志

……

不够什么样的调试手段,一定是通过可以观察的现象,给提示信息。

了解问题发生的根本原因,而非表面原因或中层原因。

4  设计解决方案

问题重现了,通过调试手段也寻找到了问题根源,下面就是考虑如何解决问题了。这里就考察你的老本行,设计的能力了。

1.如果修改老系统,一定要了解清楚之前的运作原理,才能设计方案。

2.对与影响比较大的解决方案,建议进行解决方案评审,请其他同事把把关,并邀请测试人员。

开发人员的老本行——设计能力

5  方案实施(修改问题)

问题根源找到了,设计方案也有了,到了表现程序员基本能力——编码开发的时候了。

1. 代码开发完成,必须经过代码检视。

2. 进过开发自测

程序员的基本能力——编程开发

6  方案测试

按照步骤2的最窄复现步骤,进行多轮测试,验证问题是否真正的解决。

特别注意的一点就是,任何一个bug的解决,一定会经历以上几步,如果没有按照上述几步来做,就失去了做事的条理性。

作者:Younger Liu

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

软件开发新人如何高效解决BUG相关推荐

  1. 让你提前知道软件开发(44):如何解决软件故障?

    文章3部分 软件开发工作总结 怎样解决软件故障? 在软件产品的运营维护阶段,软件project师的一项重要工作就是解决软件的bug.在学校的时候,大家学完一门课程.然后考试通过就万事大吉了. 但在实际 ...

  2. halcon从入门到精通pdf_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...

    机器视觉是机械.运动.控制.光学.软件.算法于一体的交叉学科,对于学工科的人来说,机械.运动.控制都有一定的了解,对于软件.算法.光学不是很了解.一台设备,有一个到二个机械设计师或者结构工程师,那么这 ...

  3. 亚信联创公用研发中心WAP2.0手机客户端软件开发

    今天公司老板给我转发了一个邮件,这个邮件的意思是明天公用产品线下的wap2.0开发团队经理会跟我聊聊,应该就是要聊关于公司手机客户端的一个项目wap2.0的用户体验设计工作,会给到我手里,看到这个邮件 ...

  4. 计算传递函数乘法_软件开发教程:计算机科学最重要的32个算法

    软件开发的根本在于解决各种业务功能需要,实现数字化和自动化,而算法(Algorithm)是对解决方案的准确而完整的描述,是一系列解决问题的清晰指令.算法代表着用系统的方法描述解决问题的策略机制.在计算 ...

  5. 华为软件开发云释放莫比嗨客开发潜能

    "华为软件开发云一体化的代码编辑.托管.编译.部署.维护.任务的分配.OA功能令莫比嗨客印象深刻,而这些对于像莫比嗨客这样一方面需要节省成本,另一方面又需要快速产出产品的小微企业会很有帮助, ...

  6. 上线一周年 华为云软件开发云为何如此受欢迎?

    软件开发云之于软件工程,就如同机床之于制造业.华为云软件开发云正在努力成为软件业的"工作母机". 去年12月,华为云在大连正式上线发布了软件开发云平台(DevCloud),平台刚一 ...

  7. 软件开发相关的读书笔记 问题与方法

    软件开发相关的读书笔记 问题与方法 https://www.zybuluo.com/UDvoid/note/45720 标签: 读书笔记 软件开发 关于银弹的讨论 [No Silver Bullet: ...

  8. 超越传统软件开发技术

    王安全:2006年加入阿里巴巴(http://www.alibaba.com/)集团研究院,任软件架构师:2007年阿里集团分拆,进入阿里软件(http://www.alisoft.com/),从事架 ...

  9. 软件开发打败了 80 %的程序员

    作者 | Ben Hoskin 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 首先,我并不是说软件开发人员都是输家,我想说的是,大多数软件开发人员都没能赢得软件开发,他们都被软件开发打 ...

最新文章

  1. 网络数据嗅探工具HexInject
  2. Android中自定义xmlns
  3. 一起学nRF51xx 20 -  移植SDK蓝牙例程
  4. Spark之Master主备切换机制原理
  5. 反沙箱——SetErrorMode
  6. 大佬 Python 对阵新秀 Julia ,谁能问鼎机器学习和数据科学?
  7. php请求图片,PHP - 发送GET请求并获取图片作为回报
  8. 北京交通大学《机器学习》课程总结
  9. Mac OS X 背后的故事(三)Mach之父Avie Tevanian
  10. 商业虚拟专用网络技术二通用路由封装
  11. Python实战——外星人入侵游戏
  12. Bable的基本使用
  13. 著名英文谚语(珍藏版)
  14. jqueryCutDown.js结合moment.js倒计时整理,直接copy可用,别忘了引入jquery
  15. linux ffmpeg Unknown encoder 'h264'
  16. Python调用cmd
  17. 学习LSM(Linux security module)之一:解读yama
  18. CF 371D Vessels 【并查集】
  19. Portfolio、program和project的联系和区别;它们与operation和OPM的关系
  20. 公司企业部门英文名称

热门文章

  1. 安卓手机怎么卸载APP软件
  2. 如何通俗的理解最大似然估计法
  3. java爬取网页数据_Python网络爬虫实战(二)数据解析
  4. 《网络黑白》一书所抄袭的文章列表 1
  5. 【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)
  6. 个子矮的女生选择婚纱的注意事项
  7. isNotEmpty()和isNotBlank()
  8. 从零写一个具有IOC-AOP-MVC功能的框架---学习笔记---07. AOP功能实现以及讲解
  9. 陈照奎大师陈氏太极拳要义
  10. fiilt1左耳无法同步_目标千元内最好的真无线耳机 FIIL T1 X真无线运动耳机全新发布...