《软件测试方法和技术-Ch15报告所发现的软件缺陷.ppt》由会员分享,可在线阅读,更多相关《软件测试方法和技术-Ch15报告所发现的软件缺陷.ppt(33页珍藏版)》请在三一办公上搜索。
1、1,报告所发现的软件缺陷,1.软件缺陷的描述 软件缺陷的基本描述 软件缺陷属性 2.软件缺陷相关的信息 软件缺陷的图片、记录信息 分离和再现软件缺陷 3.软件缺陷的处理和跟踪 软件缺陷生命周期 软件缺陷处理技巧 软件缺陷跟踪系统 缺陷跟踪的方法和图表,2,软件缺陷的描述,软件缺陷指的是系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。如果在执行中遇到一个缺陷,可能引起系统的失效。那么准确有效的定义和描述软件缺陷,可以使软件缺陷得以快速修复,节约了软件测试项目的成本和资源,提高产品质量。,软件缺陷是什么?,3,软件缺陷的基本描述,软件缺陷的描述是软件缺陷报告中测试人员对问题的陈述的一部分并
2、且是软件缺陷报告的基础部分。同时,软件缺陷的描述也是测试人员就一个软件问题与开发小组交流的最初且最好的机会。一个好的描述,需要使用简单的、准确的、专业的语言来抓住缺陷的本质。以下是软件缺陷的有效描述规则:单一准确 可以再现 完整统一短小简练特定条件补充完善 不做评价,4,软件缺陷标识和类型,软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。缺陷标识:是标记某个缺陷的唯一的表示,可以使用数字序号表示。缺陷类型:是根据缺陷的自然属性划分缺陷种类。见软件缺陷类型列表:,5,软件缺陷缺陷严重程度,缺陷严重程度:是指因缺陷引起的故障对软
3、件产品的影响程度,所谓“严重性”我指的是在测试条件下,一个错误在系统中的绝对影响。见软件缺陷严重等级列表:,6,软件缺陷缺陷产生的可能性和优先级,缺陷产生的可能性:指缺陷在产品中发生的可能性,通常可以用频率来表示。缺陷优先级:指缺陷必须被修复的紧急程度。“优先级”的衡量抓住了在严重性中没有考虑的重要程度因素。,7,软件缺陷缺陷状态,缺陷状态:指缺陷通过一个跟踪修复过程的进展情况,也就是在软件生命周期中的状态基本定义,如软件缺陷状态列表所示:,8,软件缺陷缺陷起源和来源,缺陷起源:缺陷引起的故障或事件第一次被检测到的阶段,如软件缺陷起源列表所示。缺陷来源:指缺陷所在的地方,如文档、代码等,如软件
4、缺陷来源列表所示。,9,软件缺陷缺陷根源,缺陷根源:指造成上述错误的根本因素,以寻求软件开发流程的改进、管理水平的提高,如软件缺陷根源列表所示。,10,软件缺陷相关的信息,软件缺陷相关的信息包括软件缺陷的图片、记录信息和如何再现和分离软件缺陷;对于某一个软件缺陷报告,测试人员应该给予相关的信息,例如捕捉到软件缺陷日志文件和图片,保证开发人员和其他的测试人员可以分离和重现它。软件缺陷的图片、记录信息 记录软件缺陷的相关图片 一些涉及用户界面(User Interface)的软件缺陷可能很难用文字清楚地描述,因此软件测试人员通过附上图片比较直观地表示缺陷发生在产品界面什么位置、有什么问题等。,11
5、,分离和再现软件缺陷,为了有效地再现软件缺陷,除了按照软件缺陷的有效描述规则来描述软件缺陷,还要遵循软件缺陷分离和再现的方法和具有较高的技巧性,虽然有时少数几个缺陷很难再现、或者根本无法再现。以下就介绍如何分离和再现缺陷的一些常用方法和技巧。确保所有的步骤都被记录。特定条件和时间。压力和负荷、内存和数据溢出相关的边界条件。考虑资源依赖性包括内存、网络和硬件共享的相互作用等。不能忽视硬件。与软件不同,硬件不按预定方式工作。开发人员有时可以根据相对简单的错误信息就能找出问题所在。因为开发人员熟悉代码,因此看到症状、测试用例步骤和分离问题的过程时,可能得到查找软件缺陷的线索。一个软件缺陷的分离和再现
6、问题有时需要小组的共同努力。如果软件测试人员尽最大努力分离软件缺陷,也无法表达准确的再现步骤,那么仍然需要记录和报告软件缺陷。,12,分离和调试软件缺陷之间的区别,讨论分离和调试软件缺陷之间的区别,是为了划清测试人员与开发人员的责任,增加界限的清晰度与测试资源的控制能力。面对一个软件缺陷时,开发人员或测试人员为了修复它,会提出一系列分步骤地、处理缺陷的疑问:再现软件缺陷现象所需的最少步骤有哪些?这些步骤成功再现的可能性多大?软件缺陷是否成立存在?换句话说,测试结果是否可能起源于测试因素或者测试人员自身的错误,还是影响顾客需求的、系统真正的故障?哪些外部因素产生软件缺陷?哪些内部因素,是代码、网
7、络、还是环境引起的软件缺陷?怎样才能在不产生新的缺陷的条件下使这个软件缺陷得到修复?这种修复是否经过调试,单元是否经过测试?问题解决了吗?它是否通过了确认和回归测试,确定系统的其余部分仍工作正常?,13,软件缺陷的处理和跟踪,软件缺陷跟踪管理是测试工作的一个重要部分,测试的目的是为了尽早发现软件系统中的缺陷,而对软件缺陷进行跟踪管理的目的是确保每个被发现的缺陷都能够及时得到处理。软件测试过程简单说就是围绕缺陷进行的,对缺陷的跟踪管理,一般而言需要达到以下目标:确保每个被发现的缺陷都能够被解决,“解决”的意思不一定是被修正,也可能是其他处理方式(例如,延迟到下一个版本中修正或者由于技术原因不能被
8、修正),总之,对每个被发现的BUG的处理方式必须能够在开发组织中达到一致;收集缺陷数据并根据缺陷趋势曲线识别测试处于测试过程中的哪个阶段;决定测试过程是否结束,通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式。收集缺陷数据并在其上进行数据分析,作为组织过程改进的财富。,14,简单、优化的软件缺陷生命周期,生命周期的概念是一个物种从诞生到消亡经历了不同的生命阶段,那么软件缺陷生命周期应该指的是一个软件缺陷被发现、报告到这个缺陷被修复、验证直至最后关闭的完整过程。在整个软件缺陷生命周期中,通常是以改变软件缺陷的状态来体现不同的生命阶段。因此,对于一个软件测试人员来讲,需要关注软件
9、缺陷在生命周期中的状态的变化,来跟踪项目进度和软件质量。一个简单、优化的软件缺陷生命周期:发现-打开:测试人员找到软件缺陷并将软件缺陷提交给开发人员。打开-修复:开发人员再现、修复缺陷,然后提交给测试人员去验证。修复-关闭:测试人员验证修复过的软件,关闭已不存在的缺陷。,15,复杂的软件缺陷生命周期,在实际工作中,软件缺陷的生命周期不可能像如上那么简单,需要考虑其它各种情况,给出了一个复杂的软件缺陷生命周期的例子,如图所示:,16,综上所述,软件缺陷在生命周期中经历了数次的审阅和状态变化,最终测试人员关闭软件缺陷来结束软件缺陷的生命周期。软件缺陷生命周期中的不同阶段是测试人员、开发人员和管理人
10、员一起参与、协同测试的过程。软件缺陷一旦发现,便进入测试人员、开发人员、管理人员的严密监控之中,直至软件缺陷生命周期终结,这样即可保证在较短的时间内高效率地关闭所有的缺陷,缩短软件测试的进程,提高软件质量,同时减少开发、测试和维护成本。,软件缺陷生命周期综述,17,软件缺陷处理技巧,管理员、测试人员和开发人员需要掌握在软件缺陷生命周期的不同阶段处理软件缺陷技巧,从而尽快处理软件缺陷,缩短软件缺陷生命周期。以下列出处理软件缺陷基本技巧:审阅。当测试人员在缺陷跟踪数据库中输入了一个新的缺陷时,测试员应该提交它,以便在它能够起作用之前进行审阅。这种审阅可以由测试管理员、项目管理员或其他人来进行,主要
11、审阅缺陷报告的质量水平;拒绝。如果审阅者决定需要对一份缺陷报告进行重大修改,例如需要添加更多的信息或者需要改变缺陷的严重等级,应该和测试人员一起讨论,由测试人员纠正缺陷报告,然后再次提交;完善。如果测试员已经完整地描述了问题的特征并将其分离,那么审查者就会肯定这个报告;分配。当开发组接受完整描述特征并被分离的问题时,测试员会将它分配给适当的开发人员,如果不知道具体开发人员,应分配给项目开发组长,由开发组长再分配给对应的开发人员;,18,软件缺陷处理技巧,测试。一旦开发人员修复一个缺陷,它就将进入测试阶段。缺陷的修复需要得到测试人员的验证,同时还要进行回归测试,检查这个缺陷的修复是否会引入新的问
12、题;重新打开。如果这个修复没有通过确认测试,那么测试人员将重新打开这个缺陷报告。重新打开一个缺陷,需要加注释说明,否则会引起“打开-修复”多个来回,造成测试人员和开发人员不必要的矛盾 关闭。如果修复通过验证测试,那么测试人员将关闭这个缺陷。只有测试人员有关闭缺陷的权限,开发人员没有这个权限。暂缓。如果每个人都同意将确实存在的缺陷移到以后处理,应该指定下一个版本号或修改的日期。一旦新的版本开始时,这些暂缓的缺陷应该重新被打开。测试人员、开发人员和管理者只有紧密的合作,掌握软件缺陷处理技巧,在项目不同阶段,及时的审查、处理和跟踪每个软件缺陷,加速软件缺陷状态的变换,提高软件质量,促进项目的发展。,
13、19,软件缺陷跟踪系统,到目前为止所讲述的一切表面上看起来很好,但是运用到实践中还需要软件缺陷跟踪系统,以便描述报告所发现的缺陷,处理软件缺陷属性,跟踪软件缺陷的整个生命周期和生成软件缺陷跟踪图表等。为什么需要建立一套软件缺陷跟踪系统呢?因为它会让我们受益无穷,概括起来有:软件缺陷跟踪系统拥有软件缺陷跟踪数据库,它不仅有利于软件缺陷的清楚描述,还提供统一的、标准化报告,使所有人的理解一致;缺陷跟踪数据库允许自动连续的软件缺陷编号,还提供了大量供分析和统计的选项,这是手工方法无法实现的;基于缺陷跟踪数据库,可快速生成满足各种查询条件的、所必要的缺陷报表、曲线图等,开发小组乃至公司的每一个人都可以
14、随时掌握软件产品质量的整体状况、或测试/开发的进度;缺陷跟踪数据库提供了软件缺陷属性并允许开发小组根据对项目的相对和绝对重要性来修复缺陷;,20,软件缺陷跟踪系统,可以在软件缺陷的生命期中管理缺陷,从最初的报告到最后的解决。确保了每一个缺陷不会被忽略,同时,它还可以使注意力保持在那些必须尽快修复的重要缺陷上;当缺陷在它的生命周期中变化时,开发人员,测试人员以及管理人员将熟悉新的软件缺陷信息。一个设计良好的软件缺陷跟踪系统可以获取历史记录,并在检查缺陷的状态时参考历史记录;在软件缺陷跟踪数据库中关闭每一份缺陷报告,它都可以被记录下来。当产品送出去时,每一份未关闭的缺陷报告都提供了预先警告的有效技
15、术支持,并且证明测试人员找到特殊领域突然出现的事件中的软件缺陷。接下来就介绍一下软件缺陷跟踪系统(它遵守IEEE829-1983标准)。,21,软件缺陷报告,任何一个缺陷跟踪系统的核心都是“软件缺陷报告”,一份软件缺陷报告详细信息如表:软件缺陷项目列表,22,软件缺陷报告,23,软件缺陷的详细描述,软件缺陷的详细描述,如上所述,由三部分组成:操作/重现步骤、期望结果、实际结果,有必要再做进一步的讨论:“步骤”提供了如何重复当前缺陷的准确描述,应简明而完备、清楚而准确。这些信息对开发人员是关键的,视为修复缺陷的向导,开发人员有时抱怨糟糕的缺陷报告,往往集中在这里;“期望结果”与测试用例标准或设计
16、规格说明书或用户需求等一致,达到软件预期的功能。测试人员站在用户的角度要对它进行描述,它提供了验证缺陷的依据。“实际结果”测试人员收集的结果和信息,以确认缺陷确实是一个问题,并标识那些影响到缺陷表现的要素。,24,缺陷报告的示例,一份优秀的缺陷报告记录下最少的重复步骤,不仅包括了期望结果,实际结果和必要的附件,还提供必要的数据、测试环境或条件,以及简单的分析。,优秀的缺陷报告重现步骤:打开一个编辑文字的软件并且创建一个新的文档(这个文件可以录入文字)在这个文件里随意录入一两行文字 选中一两行文字,通过选择Font 菜单然后选择Arial字体格式 一两行文字变成了无意义的乱字符 期望结果:当用户
17、选择已录入的文字并改变文字格式的时候,文本应该显示正确的文字格式不会出现乱字符显示。实际结果:它是字体格式的问题,如果改变文字格式成Arial之前,你保存文件,缺陷不会出现。缺陷仅仅发生在Windows98并且改变文字格式成其它的字体格式,文字是显示正常的。见所附的图片,25,缺陷报告的示例,而一份含糊而不完整的缺陷报告,缺少重建步骤,并且没有期望结果、实际结果和必要的图片,如下描述。,含糊而不完整的缺陷报告 重现步骤:打开一个编辑文字的软件.录入一些文字 选择Arial字体格式 文字变成了乱字符 期望结果:实际结果:,26,一份散漫的缺陷报告(无关的重建步骤,以及对开发人员理解这个错误毫无帮
18、助的结果信息)如下描述:,缺陷报告的示例,散漫的缺陷报告重现步骤:在Window98上打开一个编辑文字的软件并且编辑存在文件 文件字体显示正常 我添加了图片,这些图片显示正常 在此之后,我创建了一个新的文档 在这个文档中我随意录入了大量的文字 在我录入这些文字之后,选择几行文字.并且通过选择Font 菜单然后选择Arial字体格式改变文字的字体。有三次我重现了这个缺陷 我在Solaris操作系统运行这些步骤,没有任何问题。我在Mac操作系统运行这些步骤,没有任何问题。期望结果:当用户选择已录入的文字并改变文字格式的时候,文本应该显示正确的文字格式不会出现乱字符显示。实际结果:我试着选择少量的不
19、同的字体格式,但是只有Arial字体格式有软件缺陷,不论如何,它可能会出现在我没有测试的其它的字体格式,27,缺陷跟踪数据库信息,项目中使用Microsoft Excel 电子表格或Word 文档来记录和跟踪软件缺陷,但一般只限于最后的分析报告、文档的打印。为了灵活地存储、操作、搜索、分析以及报告大量数据,我们需要建一个数据库。基于已经讨论过的内容,就比较容易建立一个软件缺陷跟踪数据库,可以使用Microsoft Access或SQL server,也可以使用Oracle、DB2 等关系数据库管理系统。一个缺陷跟踪数据库的基本表,将要包括多达几十项的数据项,如bug的ID号、标题(Title)
20、、状态、严重程度、优先级、重现步骤、期望结果、实际结果、项目名称、模块、报告作者、日期等等。所有缺陷的数据不仅要存储在共享数据库中,还要有相关的数据连接,如产品特性数据库、产品配置数据库、测试用例数据库等的集成。因为某个缺陷是和某个产品特性、某个软件版本、某个测试用例等相关联的,有必要建立起这些关联。同时为了提高缺陷处理的效率,还有和邮件服务器集成,通过邮件传递,测试和开发人员随时可以获得由系统自动发出有关缺陷状态变化的邮件。,28,缺陷跟踪的方法和图表,缺陷数据是生成各种各样测试分析、质量控制图表的基础,从这些缺陷分析图表中可以清楚地看到缺陷的修复过程,分析缺陷发生根本原因,跟踪管理缺陷的效
21、率。软件项目如何发展:软件缺陷打开/关闭图表 打开/关闭图表是最基本的缺陷分析图表,它能提供许多有关软件缺陷状态、项目进度、产品质量、开发人员的工作等信息:项目目前的质量情况取决于累积打开曲线和累积关闭曲线的趋势。项目目前的进度取决于累积关闭曲线和累积打开曲线起点的时间差。开发人员已经完成修复软件缺陷了吗?累积关闭曲线是否快速的上升。测试人员是否积极的去验证软件缺陷也就是说:是否累积关闭曲线紧跟在累积打开曲线后面。管理者可以知道项目在哪一个时间点出现问题,同时协调开发和测试之间的关系,积极推动项目的发展,从而达到项目里程碑的要求,提高项目发布的质量。以下将通过打开/关闭的累积缺陷图分析项目的进
22、展情况。,29,缺陷跟踪的方法和图表,打开/关闭的累积缺陷图,30,当累积的打开曲线(如图的顶部曲线)在一条渐近线限制下稳定下来,通常就认为该测试完成了。修正日期在关闭日期之前,可以看到关闭曲线大约落后了一个星期。这种滞后起源于将修复的软件缺陷引入到产品并将该产品发送到测试小组,以及测试配置和回归测试所引起的延迟。这种延迟集中到测试的最后一天。在当前测试阶段找到软件缺陷的能力在减弱。发现软件缺陷的极限在8月23号左右;接下来系统测试第二个周期发现少数几个软件缺陷,在最后的周期中没有发现缺陷。开发人员完成了修复软件缺陷了吗?在测试和修复的过程中,发现这两条曲线在不断的收敛,当这两条曲线收敛成一个
23、点时,开发人员基本上完成了修复软件缺陷的任务了。并且注意到关闭曲线紧跟在打开曲线的后面,这表明项目小组正在快速地推进问题的解决。当测试人员从一个测试阶段到另一个测试阶段时,发现累积打开曲线有一个突起,这样的凸起是非常可怕的,说明开发人员修复软件缺陷引入了新的缺陷或者有些软件缺陷被遗漏到下一个阶段发现了。项目管理人员需要召开紧急会议分析当前项目情况,找到解决办法。,缺陷跟踪的方法和图表,31,软件缺陷为何发生:根本原因图表,分析软件缺陷根本原因不仅有助于测试人员决定哪些功能领域需要增强测试,而且可以使开发人员的注意力集中到那些引起最严重,最频繁的领域。如下图显示了软件缺陷产生的3个主要来源区域用
24、户界面显示,逻辑和规格说明书占据发现软件缺陷总数的75%。如果从测试风险角度看,这些区域可能是隐藏缺陷比较多的地方,需要测试更细、更深些。从开发角度来说,这些是代码质量提高的主要区域,假定某个产品前后发现10000个Bug,代码在这三个区域减少10个百分点,则总Bug数能减少750(7.5%),代码质量改善效果就很显著。,32,开发人员如何响应:关闭软件缺陷周期图表,关闭软件缺陷周期图表,33,开发人员如何响应:关闭软件缺陷周期图表,“关闭周期”有一个简单直观的意义:关闭周期将开发人员对软件缺陷的响应量化到软件缺陷报告中,一个稳定的关闭周期图表是显示了从一天到另一天相对较少的变化,这是一个理想的例子。如果软件缺陷报告推迟了它们打开的日期,这就将日常关闭曲线拉向0,此外,一个可接受的日常关闭曲线是不显示朝向任何边界的明显倾斜。一个稳定而接受的关闭周期图表指出了一个理解良好,运行平稳的缺陷管理过程。理想情况是一个向下或水平趋向的关闭软件周期曲线。缺陷一般大约一个半星期内得到修正,这是一个良好的速度。,