说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Bug报告:小角色,大用处!

HTML文档下载 WORD文档下载 PDF文档下载
软件测试是向开发者反馈软件存在的问题,一般以bug报告的形式进行。开发人员希望从bug报告那里收到错误信息的明确定位,而不是诸如“软件不好用”这样的无用信息。测试人员的工作是尽量的向技术支持方向靠拢。

本文作者Chris Kenst是一位专业的bug报告编写人员,曾参加Bug Advocacy Class的相关培训。在这片文章里,他为我们分析了bug报告到底有哪些作用,能带来哪些影响,在软件开发团队里又有着怎样的重要地位等等。(下面是编译内容)

为何要编写bug报告?

编写Bug报告的目的是为了让开发人员看到程序的错误,当然测试员也可以亲自给开发人员示范,当面交流,也可以在bug报告中给出导致程序出错的、详尽的操作步骤的描述。交流过程中尽量使用bug管理工具提出,这样做回归测试的时候,就能够有迹可循有据可依,同时也能够规范bug管理的过程。

对于软件测试人员来说,bug报告是我们能看的到的最明显的工作成果之一——是对系统调查的有形资产。测试人员的bug报告的质量好坏将直接影响到阅读报告的人如何理解这些bug,反之亦然,也将关乎到测试人员在程序员环境里的可信度和影响力。另外,bug报告在开发团队和测试团队之间起到一个重要的交流媒介的作用,因此,接下来将要强调的是如何理解bug报告和如何提高书写bug报告的技巧。

书写bug报告看上去很简单,像程序员、测试人员、内部和外部客户、分析师,他们并没有写过多少bug报告。不是和代码测试相关的人员就可以写这个报告的:某些东西很容易做,但并不意味着能把它们做好。

如何编写bug报告?

编写bug报告的重点是什么呢?找到bug,解决问题!作家Cem Kaner称之为Bug Advocacy,我们所倡导的方法是修复。程序员根本没有时间来阅读一个毫无意义的bug报告。如果出现的bug是相当明显的,程序员不用太多的信息就能将它修复,也就更谈不上什么bug报告了。我们所倡导的bug或问题是在某种程度上我们理解是重要的,但别人可能不容易理解的。

如何来修复那些被提倡的bug呢?所编写的bug报告要清楚地描述问题细节,用一个严酷但诚实的方式来反映问题,这样相关负责人员就能意识到风险所在并想方设法修复bug。仅仅复制问题可能并不足够,还要通过影响程序员的决定来引导他们修复这些bug,所以编写出好的bug报告起着重要作用。

为了帮助更好的理解bug报告里的那些细节部分,可以使用启发式的RIMGEA方法:

R—Replicate it。(复制)在编写bug报告的时候,必须要包含足够的能够解决bug的信息:必备的步骤和条件,将这个bug复制到另一台设备上。建议使用至少两台不一样的设备——一台主动力计算机和一台从动力约束计算机。其实,这些步骤在虚拟环境里同样可以施行。

I—Isolate it。(孤立)把问题复制之后,需要通过消除一些变量来确定复制问题所需的最简单的步骤或必要条件。同时,也要确保每个报告里只写一个问题,更要避免“一个bug修复了而其他bug仍然悬而未解”这样的情况出现。例如:在导入一个文件之后OpenOffice Impress挂掉了,但是复制品有25个步骤那么长,于是测试之后消除了一些变量,复制品只有6个步骤了。

M—Maximize it。(最大化)最大化的意思是做一些跟踪测试来观察除了刚开始在报告里提到的问题之外,是不是还有更严重的问题存在。跟踪测试包括改变方式、改变环境、改变输入值,甚至是改变系统配置。问题的严重性越大就越有可能说服程序员来修复这些问题。例如:我们无法将老的PowerPoint文件导入OO Impress,但是APP又不做出任何响应。经过一些跟踪测试之后,发现如果过量使用老的PowerPoint文件就会导致Impress死机。 

虽然最大化一个bug的过程比较有意思,但是在写bug报告的时候很费时。这其中就涉及到较为详细的四类变量:方法变量、环境变量、数据变量和系统配置变量。Markus Gartner的帖子里对这些变量做了详细的讲述。

G—Generalize it。(总结)对bug进行总结意味着我们可以了解这个问题所影响的人群范围是不是如之前所预料的那样大小。如果这只是一个角落案例,那么就在非极端环境下把这个问题展示出来。还是拿OO Impress为例,在改变输入值之后,不管输入什么类型的文件,只要是过量的,OO Impress都会死机。现在看起来,貌似不仅仅是老版本的PowerPoint用户遇到了麻烦。

E—Externalize it。(具体化)将对bug报告的注意力从程序上的问题转向相关联系人,这些人能够真实描述bug问题是如何对他们造成影响的。OO Impress因为过量导入文件而死机,与此同时也会阻止所有的用户导入适当的APP文件。还有可能阻止新的用户下载或安装APP,甚至是关闭现有依赖于兼容性的用户。

A—And say it clearly and dispassionately。(清晰冷静的表达)编写bug报告要确保别人能够理解报告所要表达的中心意思,报告的中心基调要保持中立,不冒犯阅读报告的任何一方(因为bug有可能是开发者导致的)。

如何成为一个Bug Advocate?

我们希望通过影响程序员、管理者和其它相关人员的决定来修复bug。只有清晰的bug报告才能达到这一目的,但要注意,还有一些同样重要的事情也可以影响我们成为Bug Advocates(并影响我们写这些报告的能力):

  • 软件错误的定义比较多(所以在bug报告里所说的错误要符合组织/团队的要求)。
  • 质量的定义也是比较多的。
  • 报告阅读者(开发者、测试人员、顾客)可能都带有在问题理解上的偏见。尽量减少他们之间的偏见,以解决问题为最终目的。
  • 要将无法解决bug的种种原因牢记于心:

  1. 参与者时间约束。
  2. 修复bug的成本过高。
  3. 在修复成本和添加一个顾客喜欢的功能之间进行权衡。
  4. 在读者眼里(管理者/程序员),bug编写者的可信度比较低。
  5. Bug问题只是一个角落问题,不可能影响所有的用户。

Bug Advocacy的价值

对于bug报告编写者来说,Bug Advocacy的价值真的很简单:

  • 丰富经验,写出更清楚更高效的bug报告。
  • 根据自身经验来评估别人的bug报告,并给出建设性的反馈。
  • 更好的理解bug报告所使用的交流媒介里所涉及到的细节/组成元素。
  • 在一个开源项目上贡献点时间和精力,回馈技术社区。
  • 在修复bug与否之间做出更好的权衡结果。

对于团队/组织来说,Bug Advocacy的价值在于贡献:

  • 更好的编写、评估和理解bug报告。
  • 增加深入探究、评估和改善bug报告的渴求欲。
  • 提升bug报告者的可信度,减少相互之间的偏见。
  • 更好的理解组织的需求。

下面引用Bug Advocacy课上Cem Kaner的话来作结束语:

最好的测试员不是发现了所有的bug或是让程序员难堪的人,最好的测试员是那个真正能够修复bug的人。                                                                                                        (编译/薛梁 校审/付江)

原文:MyTechFetish

微软公司全球资深副总裁张亚勤:云计算引领互联网物理化 亚马逊网络服务全球市场副总裁Ariel Kelman:亚马逊AWS云服务推动创新 终超苹果,谷歌成全球最有价值品牌 高通业务拓展总监沈周全:以软件为基础建立差异化优势 设计你所需要的,而不是你想要的 疯狂谷歌建广告天网:电冰箱、汽车仪表盘、恒温器、眼镜和手表 开发者眼中的编程语言…… 寻下一突破口?黑莓推Project Ion项目,正式进军物联网 无人驾驶汽车真的要来了:飞思卡尔研制视觉芯片 支持物联网开发! Qt发布5.3版与嵌入式企业版 5月23日:Java已经19岁啦! Google发布Dart1.4版本,新增Observatory工具 《近匠》Mixtile:跑在盒子中的嵌入式平台 从研发、平台化到营销:移动时代,汽车厂商如何升级? CTO俱乐部“云计算创新与实践”沙龙:云计算的发展趋势与那些“坑” 一周消息树:大型网站系统与Java中间件 良心推荐:6款基于云的移动应用开发工具 Google Project Tango第二弹:可生成3D图像的平板电脑 API企业化战略部署三部曲(一) 高通产品市场经理刘晓光:详解骁龙Android SDK 苹果史上最大交易:斥资30亿美元收购Beats 微软是否应该提高Windows版本的推送频率? 咸鱼大翻身?索尼将发展可穿戴游戏设备 popping:基于Facebook Pop引擎的iOS动画库 《近匠》专访极路由CTO康神 真正智能中心应当这样做 为什么说Android才是游戏开发者的乐土? 开发移动医疗应用必知的10个掘金点 个推CTO叶新江:云推送技术如何助力产品开发 《近匠》Face++:漫谈人脸识别 无线充电技术赛高:随意走动也能电量满格 体验至上!移动Web应用JavaScript UI库App.js 知者不难的问题---oracle里有没有像sql server那样生成diagram(表间关系图)的工具? ASP初建网站外,还可以用在哪些方面? 请问序列号在那?? 如何建立与有数据库密码的ACCESS数据库的连接,错误提示:没有可安装的ISAM 指的是什么错误 各位前辈,如果在公司的试用期觉得工资低了,怎么样和公司谈好一点?谢谢! 为什么取不出id字段值! 如何讓SELECT刷新本頁時現有的數据不會消失? 请问这是怎么回事? c语言的源代码!哪里有? 如何在正在运行的窗体中实例化一个控件。 关于向文件中写入表格的问题!谢谢! 爽,两天来在VC版得分2205分,现在偶的专家分有3406了,希望明天能达到5000,这样我就有一个星星了 有人能给我详细解释一下GDI位图和DIB位图的区别吗 smilejiangjun(smile将军)请进 打印问题!! 快来啊,哥哥! 请问,怎样将.fox的文件变成.prg程序 各位前辈,如果在公司的试用期觉得工资低了,怎么样和公司谈好一点?谢谢! 在安装好的机器中提取声显卡驱动吗? 大家有没有兴趣在北京举办一次聚会,大家探讨Java技术? 数据库中的某个字段的数据中包含  ,当把该字段绑定到dropdownlist后,  就显示不出来了.? vb怎么处理导出的历史文件 用户控件问题?急、急、急??? 原文:文字接龙---喜欢玩的请接下去!(转) CInternetSession.OpenURL()打开这个网面,只能得到93字节,怎么处理??? 求救:如何低级格式化硬盘,用什么dos命令? delphi+mapx的问题,求救! 读取数据库怎么这么慢?是不是我的方法不正确? form提交数据后,另一页取值为空?200分相送!! 关于windows.net server的安装 打印问题!!(50) 如何编程获得win2000本机的MAC地址?不用Netbios的方法阿,谢谢 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁有WS-FTP pro 7.5的注册码! 怎样改变MENU的字体? 请问有谁愿意转让《Object-Oriented Software Engineering: A Use Case Driven Approach》一书 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁用C++ BUilder写过类似sql 语句生成器的东西。 有谁知道 NetBoy 3.0.1 的序列号?第一个答对者20分全给!本人说话绝对算数。 ADO,如何判断一个连接对象(_ConnectionPtr)是否已经打开? IIS 5.0 & exchange server 有沖突? 修改数据库问题,急,在线等待! 讨论一下,对于个人来讲计算机可以帮助我们做什么? 怎样实现c语言对数据库的操作?(查询,添加,删除,排序。。。) 建立ActiveX控件的问题 求救:java的‘主要类型’本质上是不是对象? 如何编程实现改变显示器的分辩率? 有谁知道 NetBoy 3.0.1 的序列号?第一个答对者20分全给!本人说话绝对算数。 请大家给个方案:关于中文词法分析? 请 newly_ignorant(不学无术) 兄进来领分 怎样控SourceSafe的物理权限 ? 给你额定功率、额定电压、功率因数、受电距离、允许电压降,怎样根据导线材质计算导线的线径.公式和说明. 商场扶梯由于客流量大,高峰期顾客可以在扶梯上并排站立吗 爸爸 妈妈和小明的年龄和是70岁,爸爸比小明大28岁,妈妈比小明大24岁?爸爸 妈妈 不同输送电压的导线是什么材质的呢?还有相应电压所配导线的粗细是多少?这个应该跟距离有关系吧? 宇宙大爆炸理论的一个小小疑问是由一个很小东西爆炸,那东西大概有多小 小明和他爸爸妈妈三人的年龄之和是82岁,已知爸爸比妈妈大4岁,妈妈比小明大24岁,求3人的年龄各是多少? 现在导线用什么材质的?长距离用什么?还有短距离用什么?为什么? 近似数3.1*10的立方与近似数3100的精确度一样.这句话对吗? 线性代数简单证明题为什么最后一行是可以被 13整除就说 整个行列式就可被13整除 输电导线若用超导材料制作有什么好处与弊端? 关于宇宙大爆炸的疑问.是不是在一个无限的空间中发生的?大爆炸之前,空间是什么?如果没有爆心,又怎么会有宇宙膨胀 若一次函数y=x+a与一次函数y=-x+b的图像的交点坐标为(m,8)求a+b的值 随堂手册第6页第5题:用三个同样大小的正方形可以拼成一个长方形,如果正方形的边长为5分之7dm,那么长方形的周长是多长? 宇宙大爆炸~疑问都说宇宙是由一个原始大球爆炸出来的那那个原始的打球(姑且这么称呼)是怎么来的那呢?难道是本来就存在?不可思议~ 若一次函数y=负x+a和y=x+b的图像交点为(m,8),则a+b= 减数分裂的过程都是什么?什么叫联会?四分体的概念是什么? 因式分解 1 2x(m-n)-(n-m) 2 3ax的2次方+6axy+3ay的2次方 3 16y的4次方-8x的2次方y的2次方+x的4次方因式分解1、 2x(m-n)-(n-m)2、 3ax的2次方+6axy+3ay的2次方3、 16y的4次方-8x的2次方y的2次方+x的4次方 一次函数y=-x+a与一次函数y=x+b的图像的交点的坐标为(m,8),则a+b=? 减数分裂中四分体时期和联会时期的区别》》》如题,这两个不是同时发生吗?四分体就是说两个同源染色体挨在一起才说的,挨在一起不就是联会吗?可为什么说先联会,后是四分体时期,解释明 三相电机的功率因数问题一台15W三相交流电机,Y形接法,A、B、C三相实测电流为11A,计算耗电量:P=0.38*11*1.732*0.8(功率因数),计算出耗电量为5.79KW/h,问题是我安装了一台三相电能表计量电机运 若函数y=-x+a与y=x+b的图像交点坐标为(m,8),求a+b的值 减数分裂四分体和联会图像有什么区别是不是只有四分体时期出现交叉互换,而且螺旋更紧密啊? We are no longer a little kid AB是半圆O的直径,C、D是弧AB的三等分点,求证:AC、AD两弦与弧CD所围成的图形的面积的三分之一 减数分裂:四分体出现在什么时期?在什么时期消失? a little later和a little longer的区别 一共2道大题!8道小题!急 1.求阴影部份面积大小.(6) 2求下面图形阴影部分的面一共2道大题!8道小题! 1.求阴影部份面积大小.(6)2求下面图形阴影部分的面积和周长(2) XY染色体在减数分裂时会联会么?他们算不算四分体? 《stay a little longer》歌词是什么 3的3n次减去 三分之一x的n次(用因式分解做) 多项式与多项式相乘:1.(m-2n)(-m-n) X的平方+Y的平方+Z的平方-XY-XZ-YZ.化简,要把步骤写出来哦. 商场自动扶梯上面的乘梯须知怎么写 “等待”用英文怎么写? 在正方形ABCD中,E是BC上的一点,连接AE,作BF垂直AE,垂足为H,交CD于F,作CG平行AE,交BF于G. 证明:FC²/AB²=GF/GB sheep a little longer的意思the early morning news的意思 我只是一直在等待的英文怎么写? 如图,在正方形ABCD中,E,F,G,H分别是边AB,BC,CD,DA上的点,且AE=BF=CG=DH.试判定四边形EFGH的形状,并证明你的结论. 宇宙大爆炸涉及宇宙的( )( ) ( ),三方面.谢啦急好的加分. 一道英语填空,I had a good time---------the trip介词用on还是in还是at 宇宙大爆炸是什么意思 英语翻译是以c开头的单词 50HZ电机在100HZ时可不可以正常工作 细胞分裂的中期不发生基因突变这句话对吗?基因突变不是发生在细胞分裂的间期 宇宙大爆炸的声音那里去了?340米每秒?如此巨大的爆炸,不可能没有声音吧?那么什么时候能传到地球?看了那么多回答,反而让我觉得,光也必定可以作为介质给声音使用,如此巨大的爆炸, 1 变频调速电机上恒功率是0-100Hz 是不是达到100HZ才达到他的额定功率 那么为一台设备装电机 到底看功率还还是看转矩 外界影响下,基因突变在任何细胞分裂时期都可发生?举例子,是不是有强辐射的时候,即便细胞分裂不是在间期,也有可能突变? 把一个准确数四舍五入得到一个近似数,这个数的准确数就是这个近似数的真值,近似数1.80和近似数1.8的真值有什么不同? 减数分裂间期有四分体吗 椭圆已知长轴为800厘米,短轴为600厘米,怎么画椭圆.谢谢帮帮忙.怎么算出绳子和点距离怎么算出绳子长度和点距离 一个数四舍五入后得到近似数为5万,则这个数最大可能是 减数分裂间期四分体和二价体有什么差别 方老师要把两个边长是3分米的正方形提成一个长方形,你知道拼成的长方形的周长是多少分米吗? 如图,两个正方形的边长分别为4厘米和6厘米,求阴影部分面积, 基因突变发生在间期即DNA复制时期但为什么只能是有丝间期和减Ⅰ间期. 而减Ⅱ间期为什么不行呢? 权威谢谢 一个长方形的周长是一个正方形周长的3倍,已知长方形的宽与正方形的边长都是9分米,长方形的长是多少分 近似数2.5万精确到_____位 什么是基因突变?它发生在减数分裂的什么时期? 用两个边长是3分米的正方形拼成一个长方形,这个长方形的周长是多少分米? 近似数25.08万精确到——位?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘