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

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如何打开或保存为有密码保护的Excel sheets工作表 VB在Excel表格文件中搜索指定内容 VB复制Excel表到另外一个Excel中 Java实现生成网站快照缩略图片 php实现生成网站快照缩略图片 C#实现生成网站快照缩略图片 VB比较两个Excel表格的内容 VB实现Excel按列或行排序 VB删除EXCEL表格指定行 用vb.net写的验证码识别代码 VB删除EXCEL表格指定列 Oracle数据库Windows 2003环境自动备份批处理 VB通过ADODB连接EXCEL表格文件读取数据 使用VBScript卸载软件 Discuz X2用户注册过程SQL Android手机参数表 用jQuery改变图片(image src) 用std::atomic實現簡單的讀寫鎖 ChinaPay网上支付网关.NET开发 VOB生成IFO文件用nero刻录DVD详解 15款开源Android游戏引擎(安卓免费游戏引擎) 将MVC ASPX转换到Razor视图 Word设置目录简明教程 asp.net mvc页面javascript代码中如何使用razor Discuz X论坛数据表结构:用户数据表pre_common_member boost在windows平台下自带超强 IOCP 的ASIO Boost下载和编译安装简明指引 Windows和Linux环境中Boost下载安装编译配置使用指南 Android开发技巧:Android常用类库说明 Android开发技巧:Android 文件系统 Android开发技巧:Android应用程序架构 如何将一个字符串赋值给编辑框所映射的变量,应该用什么命令啊?急! 注册表中的位置——修改启动程序! 哪里有操作系统原理和程序编译原理方面的电子书籍可以下呀?!?! Cool Search Maker 1.0的注册码或注册机谁知道? TCP包 如何传 0 这个...? 请问在一台机(win98)中,如何模仿一个局域网的环境? 我想开发COM组件,但目前为止对它从未接触过,我该看什么书 50分奉送!!谢谢 我装了网上邻居,可是我在网上邻居里找不到自己呢?要安装什么协议吗? 中巴之战----------------中国队的恐怖阵形:911(转贴) qq中察看聊天纪录的窗口中右边那个表格,有没有类似的控件 我做的程序只用了内部控件,打包后必须的文件是身摸?为身摸打包后很大? 真的还是假的?浙江育英学院VS浙江司法职业警校-----愤怒!!!!!!!!!!! 关于SQL的一些问题! 有没有熟悉CAD编程的高手,我们需要合作 关于数据库编程中的CDaoRecordset等几个问题!在线等待! 在这最后的大学时光里,我衷心感谢那些给我帮助的兄弟姐妹们!!! 想找lzw算法的源程序(c/c++) 那位朋友机器上有VS.net中文版的软件呀,如果可以的话,可以用pp共享,给200分 大家帮我看看这个怎么解决,解决了,另开帖送分!急! 请大家帮忙!!! 如何取消vb默认的应用程序忙对话框 请问这段代码哪里有误? 请问各位高手制作MediaPlayer问题,急急!!要交作业。 VB能做绿色软件吗?几十K的! &&&&&&小弟现在初学COM,有谁留下QQ,帮助小弟,小弟感激不尽。 十万火急 我想开发一些牌类和棋类的游戏,有什么外国的网站可以学到,和开放源代码。知道的请帮帮忙(100) 万分感谢 怎样配置运行.exe的CGI程序 请教,如何改变 TreeView的背景颜色? 一个算法问题 誰能介紹廣州几個做掌上電腦開發的牛一點的公司? 如何在客户端的Web Service请求中加入SOAP标头 Fortran中怎样实现类似 全局变量的实现方法。 关于无边框窗口 几个名词的英汉翻译,这样翻译对吗? JBuilder6个人版的注册号谁知道?急用!!! 高分求教 哪儿可以下载InstallShield 6.22(在线等待,急!!!!) 我要installshield 怎样backupwin98的注册表? ****************如何生成安装文件************* 求教这样一个角度算法 征求好网址!大家把收藏夹里的好网址贡献出来吧! 中国队惨了!!!!!!!贝克汉姆已加入土耳其队! 《Applied Cryptography》,这是本什么书? 一个12位的整型,用unsigned long可以容纳吗? Perl以后会变成什么样呢? 谁能帮我!错手把逻辑盘的东西删了,能不能恢复。 下面添加用户的代码能运行吗,我怎么运行不起来,50feng VC文本编辑器没有参数提示 高分子化合物的线形结构及其特点?作用原理?这个结构使此类物质在对溶液胶团的聚沉中的减缓和加速的作用机理? 线型高分子化合物和体型高分子化合物在导电性上有什么区别? 浓硫酸与木炭方程式 生成的所有产物的检验顺序 聚乙烯是线型高分子化合物么 恒温恒湿实验室是怎么界定的? 浓硫酸加热条件下与木炭粉反应.要方程式①产物之一可使无水硫酸铜变色( )变色后的晶体受热又变为白色粉末( )②另一种产物可使溴水褪色( )③最后一种气体可用澄清石灰石验证( 硫化氢和氯化铁反应为什么生成氯化亚铁和硫单质和盐酸? 步入式恒温恒湿试验室规格? 硫酸的相对分子质量是. 氯化铜和硫化氢反应生成什么,氯化铁和硫化氢反应生成什么?我记得强酸制弱酸,这两种反应若反应生成氯化氢.氯化氢的酸性比硫化氢更强,怎么反应? 有没有可以防止二价锰离子被氧化的有机还原剂? 将H+,Al3+,NH4+1投放到OH-中,OH-先与谁反应?为什么? 柱内葡聚糖凝胶断开是什么原因 脂肪酸遇电解质产生沉淀吗 硫酸的分子质量是多少? 葡聚糖凝胶装柱沉降后会流出来,为什么呢? cuso4.5h20+fe=feso4.7h2o+cu 咋样配平 处理废水加明矾的作用 请举几个有机化合物的例子~急 Mg2+ ,Al3+与OH-反应有先后吗?为什么? 碳链为什么是锯齿形键可以扯直了 扯直了不就不是锯齿形了吗? 漂白粉溶液在空气中失效的离子方程式? OH先与 Mg2+反应还是 Al3+生成沉淀? 氯化钠与硫酸的反应氯化钠与浓硫酸反应时,首先生成硫酸氢钠与氯化氢,接着硫酸氢钠与氯化钠反应生成硫酸钠和氯化氢,这时需要加热到多少温度? 漂白粉溶液在空气中失效的离子方程 化合物A~I均是由Na+、NH4+、Al3+、Ba2+、Mg2+、Cl—、OH—、S042—等八种离子中的某两种形成的化合物,物质A~I的转化关系如下图所示. (1)写出下列物质的化学式:A C(s)+H2O(g) = CO(g)+H2(g);ΔH=?反应热怎么算出来的?C(s)+O2(g)=CO2(g) (三角形)H=-393.5ki/molH2(g)+1/2O2(g)=H2O(g) (三角形)H=-242.0ki/molCO(g)+1/2O2(g)=CO2(g) (三角形)H=-283.0ki/mol根据以上数据,写出C(s)与水蒸 单质硫怎样转化为硫化氢同上,谢拉 二价铁被硝酸氧化的化学方程式. OH-与H+,Al3+,NH4+反应顺序,为什么 细胞膜上参与被动运输的主要运输蛋白是什么? 二价锰被氧化被氧化后产物?急需!硫酸锰溶液加氢氧化钠后调节pH至中性,生成了黄色不溶物,这种黄色沉淀是什么?化学式?最好有反应方程式.急需!谢谢! 长期服用DHA(22碳6烯脂肪酸)有副作用吗?背GRE单词需要记忆力 关于细胞膜运输的几个问题.我们已经知道.物质进入细胞有三种形式,自由、协助扩散,主动运输.但平时资料书上看到的都是从细胞外进入细胞内的角度来讲的.那如果是细胞内的Cl-浓度很高,需 有机化合物有什么特点?请举例说明什么是有机化合物,无机化合物和有机高分子化合物? 深海鱼油DHA和海藻DHA有什么不同,小孩子需要补充哪种DHA? 哪些食物含卵磷脂食物或药品 机械 结构设计方案 怎么写 许多海洋生物食品含有丰富的DHA,DHA(分子式为C22H32O2)是近年来备受关注的一元不饱和高级脂肪酸(烃基中只含有碳碳双键),它对大脑细胞的生长发育具有重要的意义.一个DHA分子中含有的碳碳 哪些食物富含卵磷脂? 规划方案怎么写 明矾和氢氧化钡反应(过量和不过量) 的两种离子方程式 有那些食物富含卵磷脂啊?还有含氮多的呢?听说多吃这类食物对身体有好处是吗? 工艺方案设计怎么写 请问1mol明矾向其中加入氢氧化钡反应生成沉淀图像该如何做? 第一次烧饭,写一篇600字的体验日记.写一篇600字的体验日记,要求记叙文;内容完整. 珠宝展示设计方案怎么写 如下图所示,虚线框中的装置可用来加浓硫酸与炭粉在加热条件下反应产生的所有气体产物.已知高锰酸钾酸性溶液具有很强的氧化性,能与SO₂发生氧化还原反应.请按要求回答下列问题:( 色谱柱的如何再生能否给我一个操作流程不是要用二氯甲烷等来冲吗 有道奇怪的反应式:二价锰离子与二氧化铅反应,生成高锰酸根离子与二价铅离子,为什么配不平?能不能反应 浓硫酸与木炭粉在加热条件下的反应产物可能有什么1.浓硫酸与木炭粉在加热条件下的反应方程式 0.2NA个硫酸分子于19.6克磷酸含有相同的氧原子数 为什么? DNA和RNA是属于蛋白质么?还是脂肪酸?还是其他?我想知道DNA和RNA是由我们吃进去的什么东西变成的?蛋白质?脂肪?碳水化合物? 在含有NH4+和Ba2+和NO3-和Cl-的溶液中还能大量共存的离子是 A:Ag+ B:Mg2+ C :(SO4)2- D:OH- 0.2Na个硫酸分子与19.6克磷酸分子含有相同的氧原子吗 --l是磷酸 不是硫酸啊 妈妈我想对你说怎么写? K+,NH4+,Ag+,Al3+,Cl-,OH-,硫酸根离子中,哪5种在同一种溶液中可以共存再问一下,如果配成这种溶液可以将哪两种物质溶于水 0.2NA 个硫酸分子与19.6g磷酸含有相同的氧原子数,都是0.8NA 如何得到0.8NA 妈妈我想对你说该怎么写? 二价锰离子和二氧化铅在酸性条件下反应的化学方程式,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘