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

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

做成一个时间限制的测试版 -VB资料 PHP中利用jQuery实现SWF图像上传和裁剪 VB.NET或C#将DataSet快速导出到Excel中 HashSet的equals和hashCode重写问题 PendingIntent实现原理和代码 IntentService实现原理及内部代码 AsyncTask实现原理和内部代码 Neither user nor current process错误 ListView的右边滚动滑块启用方法 Live Wallpaper动态壁纸开发 控制软键盘显示和隐藏 设置Activity大小不再全屏原理 Android面试题,看看你基础如何? Android Canvas绘图抗锯齿解决方法 Android xliff和字符串资源 android.hardware.USB类介绍 Android开发经验谈之应用间数据共享 android_asset这个URL详细使用方法 Android 2.3系统自带高清UI图标下载 设置ScrollView滚动条的颜色 WakeLock使用方法示例代码 Concurrent并发库常见问题总结 Android数据库SQLite性能优化技巧 Android开发之Java设计模式基础篇 Android开发之Java设计模式入门篇 Android开发之Java设计模式 Android开发之Java并发包集合类性能分析 Android开发之Java集合类性能分析 Android开发之Java虚拟机原理和内存分配 Android开发之Java基础系列教程目录 Android Theme主题样式开发注意点 这是我作的jsp和bean作的程序为什么不能运行:这一次发的是运行错误的信息。 谁敢拍着自己胸口摸着良心说没有用过马甲的 麻烦了:) 如何建立一个button清空文本框? 关于在RedHat2.1As上安装Oracle9i(9.0.1)的错误问题,帮帮我吧,火烧眉毛了! 急等答案 ,请问数据库中 的Null和零值有什么区别,请给详细解释一下 用FLASHGET无法下载. 趁着各位斑竹到任,赶紧把几个悬而未决的问题提出来,呵呵! com+的调用方式 哪位大侠知道今年计算机等级考试二级C语言还是用Turbo C2。0吗?还是在Dos环境下吗?(100相赠) 关于多媒体定时器的问题,各位进来看看 session出的问题,高手请进来!! 请问,大连雅奇培训如何?请指点。。。。。。 怎样用header()做下载文件? 关于检测组合键的程序怎样写? 菜鸟问题!!!页面显示后台数据 请问软件包LEDA -- library of the data types and algorithms 哪里有下载的? 如何获得当前页面中的所有Textbox控件集合? 如何对两个表操作???谢谢! java的程序在写Dreamweaver 4里写完不可以直接用,是不是 打印的问题 DELPHI5的资源编辑器用起来很不爽,有没有好点的? 帮帮忙~~~~ 请问软件包LEDA 哪里有下载的?谢谢 ado连接远程数据库是以文件共享方式,还是c/s方式啊? 有没有工作的JAVA程序员吗? 简单的语法问题 vb还是不太会用 求教 最菜的问题 如何保存无法保存的网页? 只要每人献出一点爱,人人都能成为程序员 呵呵,又有问题了 苦恼,大家帮忙啊 关于声音处理的一个问题 求英文资料,急!!! 帮忙解释一下程序,谢谢:) 怎样实现这样的存储过程?高手快来! 用过websnap的进来看一下,巨简单! 调试版本与发布版本的区别? 急等答案, sql的基本表是用一个存储文件表示还是用若干个存储文件表示 我的Windows 2000有时无法关机(重起) ********通过编号找名称!*******求最快的方法!!! 格式化硬盘后安装WIN98过程中为什么出现蓝屏,继续安装下去连软件都安装不了? 请教一个让人郁闷的问题! 寻找一本人民邮电出版社出版的有关 GSM 网络优化的书 请问高手:能不能动态creatLayer? select * ????? 问候大家 晚上好 ,有个问题请教,立即给50分! 怎样使模式对话框最大化显示? 关于socket 十万火急,大哥大姐快救小弟一命!!!考高程的或考过的请帮忙,感激!!! 求救 跟帖 隋朝末年长安守将是谁?隋朝末年,群雄并起,在太原李渊起兵攻打长安之时,当时的长安留守是谁,有知道的没? 【急』十字绣,怎么把六股线拆成4股十字绣一根粗线里有六股,但需要用四股线,怎么分呢?分开了,如果很散,怎样拧成一大股? 质量为m的物块,系在弹簧的一端,弹簧的另一端固定在转轴上,弹簧的自由长度为L.劲度系数为K,使物块在光滑水平支持面上以角速度w作匀速圆周运动,则此时弹簧的长度为多少? 隋朝都城到底是在大兴还是长安?怎么说法不同呢? 已知集合A={x|-2 The hot tiles on the floor will melt your 隋朝人说都城时是长安还是大兴城 集合A={y|y=-x^2+4,x∈N.y∈N}的真子集的个数为( ).A.9 B.8 C.7 D.6 一个蚂蚁从5楼掉下1楼来为什么没有摔死?这是我很长时间搞不懂的问题啊.求救`` 行业分类中仪器仪表属于第几类 隋朝的长安和洛阳分别是什么时期营建的都城 若集合A={x|x=2k-1,k∈z},B={x=4L±1,L∈Z}则 A,A=B B,A是B的真子集 C,B是A的真子集 D,A∪B=Z 仪器仪表及文化办公用机械制造业属于高新技术产业吗 你们经常用哪个动物的表情看看哪个好看好笑的 某列车均速前进,从它驶上300米的桥到通过为止,一共用了三分之一分钟,又知一盏固定的灯一直照列车10秒,求这列车的长.(要写过程) 组成无机自然界最多的元素是什么 青蛙的益处 在空气中弹簧测力计测得物重2.7牛,将其一半浸入水中,示数变为2.2牛(g取10牛每千克)求物体所受浮力大小物体的密度 人体内含量最多的无机元素是? 求一篇有关养宠物的好处的英文对话,急! 有一石块,在空气中称的重为19.6牛,全部浸没在水中称得重为14.7牛.问:(1)石块的体积多大 (2)石块的密度是多少? 这是什么表情动物 养宠物好处英文 有一金属块,在空气称得它的重是72牛,当它全部浸没水中时,弹簧秤的示数为52牛(g=10牛/千克)(1)金属块所受的浮力(2)排开水的体积 这个是什么动物的表情 成都离最近大海有多远 某列车匀速前进,从驶上300米的桥到完全通过,一共用了1/3分钟,又知列车通过桥上一灯塔用时10秒钟,.某列车匀速前进,从驶上300米的桥到完全通过,一共用了1/3分钟,又知列车通过桥上一灯塔用时 鸟窝有什么好处?鸟窝有什么好处呢?以前好早好早,还是我小时候的时候,好像听说,吃鸟吐出来的唾沫有好处?还是什么?鸟用唾沫编制成的鸟窝到底有什么好处阿. 小行星最近离我们的地球有多远?有意者都给我一个答案我吧? melt temperature是什么意思 先天性行为和非条件反射有何区别? 一个人面对另一个人时都会看着对方的脸,因为人类能够读懂面部表情.但是你发现没有,当动物面对你时,也是看着你的面部,即使是个体比人小得多的猫,当它面对你时也绝不会盯着你的脚看.难 地球离各个星球的距离? 非条件反射和先天性行为哪个含义更加广泛?或者说这两个概念含义根本就是相同的?非条件反射是人生来就有的、遗传决定的,比较低级、简单的神经调节方式;先天性行为是动物的一种本能, 求许多动物做同一动作的表情 比如 兔斯基 嘻哈猴这类的都做一个表情 比如揉脸、鼓掌啥的 有的发804931395@com最好要动态的哇 2L 搜的到还找你呀 甲乙2石头,大小不同,石质相同.甲石质量1.5千克,体积4立方分米,乙石质量18千克,体积多少? 一个小孩用10N的力踢了石块,石块滑行1M,则小孩对石块做功多少?答案写位移不知无法计算 光子到底有没有质量 甲、乙两块石头,大小相同,石质相同.甲石头质量是1.5千克,体积是4立方分米.乙石头质量是18千克,体积是多少? 非条件反射是不是先天的啊对相关的知识也要说一下又要具体 某人站在高楼的平台边缘,以 20m /s的速度竖直向上抛出一石子,求抛出后石子经过离抛出点 15m 处所需要的时间.(g= 10m /s2). 甲乙两块石头,大小不同,石质相同,甲石头的质量是1.6千克,体积是4立方分米.乙石头的体积是40立方分米质量是多少? 十字绣的法兰西节怎么打? 胎生的是哺乳动物,那下蛋的叫什么动物像老虎,狗,猫喂奶的叫哺乳动物,那鸡,鸭这些下蛋的叫什么动物啊? 我国公民全部政治生活的基础和准则(基本内容)是 既属于哺乳动物,又要靠生蛋来繁殖后代的是: 谁能告诉我有关简单的细菌与霉的知识细菌的认识和什么是霉 我国公民暴雨政治生活的基本原则是什么 r、s、e、n、u组成什么单词 为啥子有的哺乳动物会下蛋? 我养宠物的英文怎么说 p u s e r 组成什么单词 细菌靠生物而活那么什么靠细菌活? 日本地震到底死了多少人呢?拜托了各位 谢谢 隋朝时长安属于什么省份的?隋朝时长安属于哪个省份的? 为什么有的哺乳动物会下蛋?不许抄袭答案 十字绣用丝线绣好看还是用绵线绣好看以前只绣过一个钱包,听说丝线绣比较慢,这点倒没什么.丝线绣有哪些好处与坏处,请各位妹妹赐教 哪种哺乳动物是通过生蛋来繁衍后代? 十字绣4股线应该折几折? 为什么蚂蚁从高出掉下不会摔死? 吉林前郭地震灾区已发现2户房屋倒塌、江苏全省出现液态奶供不应求 物价上涨调查显示逾半受访香港公司明年平均加薪中国最后一个未通公路的县墨脱今日举行通讯:通往“高原孤岛”的“生命线”高薪由五毛一块凑起 过万很少聚焦激发社会投资活力:用改革撬动“活快递哥倒在送货路上香港官员:监护人代双非儿童买房应被豁复旦大学研究:PM0.5“杀伤力”盖传美国在台北设监听站 台方回应:台美宁波实现大灾之后无大疫 传染病例同比南京:空气质量不达预期将人工增雨消霾南京:承诺绿地不兑现 开发商将受处罚宁波市将新启用一批电子警察规范行车秩《温家宝谈教育》首发 卸任总理后首次孟加拉国列车脱轨致两人死亡诺基亚亏损大幅收窄 手机总销量同比下俄罗斯达吉斯坦共和国首府发生爆炸致1吉林前郭震区移动通讯中断 受灾情况正印度长途巴士车祸后爆炸 45名乘客被优质饮用水直接入户 居民不用掏一分钱中国保险创新大奖揭晓 珠江人寿获“年吴长江被立案侦查 王冬雷欲彻底驱吴《汉字树:活在字里的中国人》见面会转型渠道聚焦电商富士康加速“去制造化8所学校年底要创建示范食堂无证驾摩托被扣 趁保安不备开走曹彤或任前海微众银行行长9·30房贷新政满月 二手房日均成交乐购江门店今日停业参与重大市政工程建设 品质提升赢得社嘉源建筑装饰工程有限公司顺走快递首饰清洁工获刑3年别跟陌生人走,孩子做不到啊吉他情圣班尼斯下周东莞演出怀胎7月照吸毒 台女毒贩直叹“戒不了中国国际雕塑节闭幕 众艺术家发出长沙沪指高开0.09%后收复2400点 俄乌欧签署供气协议 将成立专项基金助快播案件未定性无法偿付员工赔偿自种香料配酒配菜倍儿香
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘