<读书笔记>软件调试之道 :从大局看调试-发现代码存在问题
声明:本文档的内容主要来源于书籍《软件调试修炼之道》作者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 ...
随机推荐
- Ext GridPanel
Extjs GridPanel用法详解 创建GridPanel 要使用GridPanel,首先要定义Store,而在创建Store的时候必须要有Model,因此我们首先来定义Model: //1.定义 ...
- 10天学会phpWeChat——第二天:hello world!我的第一个功能模块
今天我们开始进入<10天学会phpWeChat>系列教程的第二天:创建我的第一个hello world! 功能模块. 1.登录后台,进入 系统设置--自定义模块,如图: 自定义模块参数说明 ...
- python-语句
assert语句 用来声明某个条件是真的.例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句.当 ...
- Character类的2个定义大小写方法以及charAt(int index)方法
API文档charAt(int index)是这样定义的: charAt(char index):Returns the char value at the specified index.在指定的索 ...
- 实现windows批处理下的计时功能
有时在执行完一段windows的批处理后,想知道这个过程花费了多少时间,如果是windows下的c代码可以在过程前后分别调用GetTickCount(),然后相减即可得到花费的时间. 但是如果在批处理 ...
- delphi中的各种文件类型介绍【转】
1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...
- JavaScript的学习2
1. a.字符串运算符 符号 功能 + 字符串连接 += 将左边的值加上右边的值然后再赋值给左边的变量 b.比较运算符 运算符 含义 说明 > 大于 M>N,当M大于N时,返回TRUE ...
- Windows下python virtualenv使用,镜像源设置,批量安装,安装scipy,numpy
镜像源设置 在C:\Users\Administrator\下建立pip文件夹,然后在里面创建了一个pip.ini 内容为: [global]index-url = https://pypi.tuna ...
- 仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码。
仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码. discuz 版本: 3.2
- Xilinx DCM 使用---- 输出频率问题
最近在使用Xilinx FPGA验证项目,使用DCM将50M晶振分频得到20M时钟.但是下载代码到板子上验证,发现板子完全不工作. 然后 测量时钟,发现根本就没有20M时钟.查找资料,以及跟以前项目对 ...