<读书笔记>软件调试之道 :从大局看调试-发现代码存在问题
声明:本文档的内容主要来源于书籍《软件调试修炼之道》作者Paul Butcher,属于读书笔记。欢迎转载!
-----------------------------------------------------------------------------------------------
缺陷可以随时发生,从代码编写完毕到代码发布后的成年累月!
无论你开发什么样的软件,都需要创建一些流程,通过这些流程,可以告诉你软件哪里出了问题,并且应该如何修复!
1、缺陷管理系统
既有简单用途的,也有全面流程管理的,但其目的都一样。
- 确保不会遗漏缺陷。
- 通过提供一个缺陷报告的标准格式,把所有相关信息都包含其中!
- 作为审查线索,可以确保我们知道每一个版本还有哪些缺陷未解决。
- 也可以作为软件发布的重要信息来源 可以设定缺陷优先级,并确定先解决哪个。
- 为相关利益方提供一个有效的沟通方式,确保在团队之间传递时准确提供了相关信息
- 作为一个管理工具,提供了该项目的当前状态
2、如何写出一份出色的缺陷报告
一份好的缺陷报告宁多勿少,因为我们无法知道哪些信息是相关的,哪些是无关的。
- 报告应该是具体的、明确的和详细的。
- 报告也应该是最小化的、唯一的。比如报告1万字,其是否可以消减?哪一个版本出现缺陷,其它版本有没有?
3、简化流程-通过消减不利条件来提高缺陷报告质量
如果没有人花时间和精力向你反映问题,你就不能找出这些缺陷,也不会修复它!
- 明确说明如何报告缺陷。 提高多种选择: 比如电子邮件、直接交谈、在线沟通等!
- 要尽量简单 :要求用户执行的动作要尽量少,否则其可能不会完成
- 模板不要太死板 :确保每个区域设置合理选项,比如“以上都不是”。 尊重用于隐私:用户的数据属于他们,而不是属于你,要遵守相关隐私策略。
4、有效沟通
聪明是一个软件工程师的必要条件,大多数在学校都有良好的成绩,但这并不能保证我们不会犯错。在应用领域客户依靠他们的专长,可能理解的比你好,因此当存在明显误解的时候,要记住你可能出错了!
- 从用户的角度设想一下会发生什么,你的目标是把他们的观察结果和他们的解读分开。
- 和非技术人员沟通,唯一办法是要有耐心,解释一下为何这些细节很重要,并通过必要的步骤说服他们收集相关数据。
- 发布你的缺陷数据库,虽然让大家看到你的“爆料”可能很可怕,但其好处巨大。
- 提高反馈,收到缺陷报告时,需积极回应并支持他们继续下去。
- 拜访用户,拜访用于可以比任何缺陷报告了解的更多 。
5、与支持人员协作
技术支持,QA,客户工程师,技术客户经理等都可以在调试过程中提高帮助!
- 可以考虑和QA团队的一名同事在诊断阶段一起工作
- 为了确保客户团队能帮助我们解决沟通问题,你应该能够判断并确保所有相关信息已被确认,避免吹毛求疵以及一些相关细节,可以考虑要求他们执行一项特定进程,来提高缺陷报告质量
- 偶尔也做做客户支持,以表示对客户的尊重,避免被用户封杀
- 由于QA的所具有的不同视角,他们需要守护的是避免与开发团队先入为主的“同流合污”,但也容易过火!比如作者所工作的一个公司开发和QA团队之间存在很深的隔阂,QA能得到的信息就是一个已编译的二进制文件,开发团队唯一能得到信息就是“通过”或者“失败”。
<读书笔记>软件调试之道 :从大局看调试-发现代码存在问题的更多相关文章
- <读书笔记>软件调试之道 :从大局看调试-理想的调试环境
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :从大局看调试-零容忍策略
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :问题的核心-修复后的反思
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :问题的核心-如何修复缺陷
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! 修复缺陷 对于一个好的修复来说,不仅仅是让软件运行正确,还需要为将来奠定基础.一 ...
- <读书笔记>软件调试之道 :问题的核心-诊断
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 不要急于动手! 尽管可以利用各种工具和技术以及软件自身查找缺陷,但是你最重要的财富是你的智 ...
- <读书笔记>软件调试之道 :问题的核心-重现问题
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 重现第一,提问第二 问题重现是实证过程的最强大武器,如果不能重现问题,你也无法证明修复了它 ...
- <读书笔记>软件调试之道 :实证方法
有效调试不仅仅是排除缺陷,其包含如下几个步骤 弄明白软件为何运行错误 修复这个问题 避免破坏其它部分 保持或者提高代码的总体质量 确保同样的问题不在其它地方发生,也不会再次发生 构建实验.观察结果 依 ...
- 【读书笔记】--《编写高质量iOS与OS X代码的52个有效方法》
1.Objective-C 起源: 在 C 语言基础上添加了面向对象特性,是 C 语言的超集.Objective-C 由 SmallTalk 语言演变过来,使用消息结构,运行环境由运行环境决定. OC ...
- 【读书笔记】iOS-UIFont-动态下载系统提供的字体-官方代码
一,工程目录 二,AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption ...
随机推荐
- python_selenium智联搜索
python_selenium智联搜索 妹子要去招聘会工作,奈何网上仅仅提供招聘会的公司名字,没有提供招聘的职位,SO我写了个小代码给妹子在智联上面搜索职位,由于时间紧迫,前程的就不写了 #!/usr ...
- geohash基本原理
geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码,这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索 目录: 经纬度常识 认 ...
- [Linux] - Docker移动数据到其它盘的办法
由于使用yum安装Docker,默认是数据是存放在系统盘/var/lib目录下,需要把它放到其实盘里头.方法可以这样做: 1.在其它盘中新建一个目录,比如我的:/yunpan/docker mkdir ...
- java同一个类不同方法间的同步
对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法.假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方 ...
- SQL2005语句实现行转列,列转行
在做报表时,经常需要将数据表中的行转列,或者列转行,如果不知道方法,你会觉得通过SQL语句来实现非常难.这里,我将使用pivot和unpivot来实现看似复杂的功能.这个功能在sql2005及以上版本 ...
- 通过宏判断VS编译版本以及系统平台
MSC_VER 定义编译器的版本.下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio ...
- 深入理解Session与Cookie
Session与cookie的作用都是为了保持访问用户与后端服务器的交互状态. cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储 ...
- SparkSQL(源码阅读三)
额,没忍住,想完全了解sparksql,毕竟一直在用嘛,想一次性搞清楚它,所以今天再多看点好了~ 曾几何时,有一个叫做shark的东西,它改了hive的源码...突然有一天,spark Sql突然出现 ...
- POJ 3468 A Simple Problem with Integers(线段树 成段增减+区间求和)
A Simple Problem with Integers [题目链接]A Simple Problem with Integers [题目类型]线段树 成段增减+区间求和 &题解: 线段树 ...
- C#扇形的绘制与Hittest交互、图种制作
C# 扇区的绘制与交互 哪位大神的杰作,代码里有,我就不废话了.源码下载方式如下. 注:将下面的图下载后,另存为.rar就可以看到图片中隐藏的代码程序了. 图种的制作 图种的目的在于隐藏文件.使得外人 ...