软件测试方法和技术报告所发现的软件缺陷由安博测试空间技术中心提供报告所发现的软件缺陷1软件缺陷的描述1.1软件缺陷的基本描述1.2软件缺陷属性2软件缺陷相关的信息2.1软件缺陷的图片、记录信息2.2分离和再现软件缺陷3软件缺陷的处理和跟踪3.1软件缺陷生命周期3.2软件缺陷处理技巧3.3软件缺陷跟踪系统3.4缺陷跟踪的方法和图表软件缺陷的描述软件缺陷指的是系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。如果在执行中遇到一个缺陷,可能引起系统的失效。那么准确有效的定义和描述软件缺陷,可以使软件缺陷得以快速修复,节约了软件测试项目的成本和资源,提高产品质量。软件缺陷是什么?软件缺陷的基本描述软件缺陷的描述是软件缺陷报告中测试人员对问题的陈述的一部分并且是软件缺陷报告的基础部分。同时,软件缺陷的描述也是测试人员就一个软件问题与开发小组交流的最初且最好的机会。一个好的描述,需要使用简单的、准确的、专业的语言来抓住缺陷的本质。以下是软件缺陷的有效描述规则:单一准确可以再现完整统一短小简练特定条件补充完善不做评价软件缺陷标识和类型软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。缺陷标识:是标记某个缺陷的唯一的表示,可以使用数字序号表示。缺陷类型:是根据缺陷的自然属性划分缺陷种类。见软件缺陷类型列表:缺陷类型描述功能影响了各种系统功能、逻辑的缺陷用户界面影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输出格式等方面的缺陷文档影响发布和维护,包括注释,用户手册,设计文档软件包由于软件配置库、变更管理或版本控制引起的错误性能不满足系统可测量的属性值,如执行时间,事务处理速率等。系统/模块接口与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。软件缺陷缺陷严重程度缺陷严重程度:是指因缺陷引起的故障对软件产品的影响程度,所谓“严重性”我指的是在测试条件下,一个错误在系统中的绝对影响。见软件缺陷严重等级列表:缺陷严重等级描述致命(Fatal)系统任何一个主要功能完全丧失、用户数据受到破坏、系统崩溃、悬挂、死机,或者危及人身安全严重(Critical)系统的主要功能部分丧失、数据不能保存,系统所提供的功能或服务受到明显的影响一般(Major)系统的部分功能没有完全实现,但不影响用户的正常使用,例如:提示信息不太准确;或用户界面差、操作时间长等一些问题。较小(Minor)使操作者不方便或遇到麻烦,但它不影响功能的操作和执行,如个别的不影响产品理解的错别字、文字排列不整齐等一些小问题。软件缺陷缺陷产生的可能性和优先级缺陷产生的可能性:指缺陷在产品中发生的可能性,通常可以用频率来表示。缺陷优先级:指缺陷必须被修复的紧急程度。“优先级”的衡量抓住了在严重性中没有考虑的重要程度因素。缺陷产生可能性描述总是(Always)总是产生这个软件缺陷,其产生的频率是100%通常(Often)按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80-90%有时(Occasionally)按照测试用例,有的时候产生这个软件缺陷,其产生的频率大概是30-50%很少(rarely)按照测试用例,很少产生这个软件缺陷,其产生的频率大概是1-5%缺陷优先级描述立即解决(P1级)缺陷导致系统几乎不能使用或测试不能继续,需立即修复高优先级(P2级)缺陷严重,影响测试,需要优先考虑正常排队(P3级)缺陷需要正常排队等待修复低优先级(P4级)缺陷可以在开发人员有时间的时候被纠正。软件缺陷缺陷状态缺陷状态:指缺陷通过一个跟踪修复过程的进展情况,也就是在软件生命周期中的状态基本定义,如软件缺陷状态列表所示:缺陷状态描述激活或打开(ActiveorOpen)问题还没有解决,存在源代码中,确认“提交的缺陷”,等待处理,如新报的缺陷。已修正或修复(FixedorResolved)已被开发人员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证关闭或非激活(ClosedorInactive)测试人员验证后,确认缺陷不存在之后的状态。重新打开(Reopen)测试人员验证后,还依然存在的缺陷,等待开发人员进一步修复推迟(Deferred)这个软件缺陷可以在下一个版本中解决保留(onhold)由于技术原因或第三者软件的缺陷,开发人员不能修复的缺陷不能重现(Cannotduplicate)开发不能复现这个软件缺陷,需要测试人员检查缺陷复现的步骤。需要更多信息(Needmoreinfor)开发能复现这个软件缺陷,但开发人员需要一些信息,例如:缺陷的日志文件,图片等。重复(Duplicate)这个软件缺陷已经被其他的软件测试人员发现。不是缺陷(Notabug)这个问题不是软件缺陷需要修改软件规格说明书(Specmodified)由于软件规格说明书对软件设计的要求,软件开发人员无法修复这个软件缺陷,必须要修改软件规格说明书。软件缺陷缺陷起源和来源缺陷起源:缺陷引起的故障或事件第一次被检测到的阶段,如软件缺陷起源列表所示。缺陷来源:指缺陷所在的地方,如文档、代码等,如软件缺陷来源列表所示。缺陷来源描述需求说明书需求说明书的错误、或不清楚引起的问题设计文档设计文档描述不准确、和需求说明书不一致的问题系统集成接口系统各模块参数不匹配、开发组之间缺乏协调引起的缺陷数据流(库)由于数据字典、数据库中的错误引起的缺陷程序代码纯粹在编码中的问题所引起的缺陷缺陷起源描述需求在需求阶段发现的缺陷构架在系统构架设计阶段发现的缺陷设计在程序设计阶段发现的缺陷编码在编码阶段发现的缺陷测试在测试阶段发现的缺陷用户在用户使用阶段发现的缺陷软件缺陷缺陷根源缺陷根源:指造成上述错误的根本因素,以寻求软件开发流程的改进、管理水平的提高,如软件缺陷根源列表所示。缺陷根源描述测试策略错误的测试范围,误解了测试目标,超越测试能力等过程,工具和方法无效的需求收集过程,过时的风险管理过程,不适用的项目管理方法,没有估算规程,无效的变更控制过程等团队/人项目团队职责交叉,缺乏培训,没有经验的项目团队,缺乏士气和动机不纯等缺乏组织和通讯缺乏用户参与,职责不明确,管理失败等硬件硬件配置不对、缺乏,或处理器缺陷导致算术精度丢失,内存溢出等软件软件设置不对、缺乏,或操作系统错误导致无法释放资源,工具软件的错误,编译器的错误,2000千年虫问题等。工作环境组织机构调整,预算改变,工作环境恶劣,如噪音过大。软件缺陷相关的信息软件缺陷相关的信息包括软件缺陷的图片、记录信息和如何再现和分离软件缺陷;对于某一个软件缺陷报告,测试人员应该给予相关的信息,例如捕捉到软件缺陷日志文件和图片,保证开发人员和其他的测试人员可以分离和重现它。软件缺陷的图片、记录信息记录软件缺陷的相关图片一些涉及用户界面(UserInterface)的软件缺陷可能很难用文字清楚地描述,因此软件测试人员通过附上图片比较直观地表示缺陷发生在产品界面什么位置、有什么问题等。使用Soft-ICE记录软件缺陷信息Soft-ICE是Compuware公司的产品NuMegaDriverStudio中一个代表性的工具,用于跟踪软件运行时的变量、内存等状态,而且可以捕捉系统崩溃时的状态。使用它可以记录产品发生缺陷的地方,同时生成日志文件。如何使用Soft-ICE当出现软件系统崩溃的缺陷时,测试人员需要在软件缺陷报告上附上日志文件,便于开发人员即时修复软件缺陷。当遭遇软件崩溃时候,如何使用Soft-ICE?在开始测试之前,已经安装了Soft-ICE并启动了“faultson”的命令。当软件发生崩溃现象时,可以使用下面命令去捕捉必要的信息:stackueip-80如果数据窗口是开启的状态,可以输入”wd”来关闭该窗口,然后再输入“ddesp-20”命令。stack、ddesp-20是为了标注跟踪信息。通过输入x,退出Soft-ICE的窗口;如果还是无法退出Soft-ICE,需要输入faultsoff,然后输入x。打开Soft-ICE应用程序,立即保存日志文件。一旦再次打开Soft-ICE,请输入faultson分离和再现软件缺陷为了有效地再现软件缺陷,除了按照软件缺陷的有效描述规则来描述软件缺陷,还要遵循软件缺陷分离和再现的方法和具有较高的技巧性,虽然有时少数几个缺陷很难再现、或者根本无法再现。以下就介绍如何分离和再现缺陷的一些常用方法和技巧。确保所有的步骤都被记录。特定条件和时间。压力和负荷、内存和数据溢出相关的边界条件。考虑资源依赖性包括内存、网络和硬件共享的相互作用等。不能忽视硬件。与软件不同,硬件不按预定方式工作。开发人员有时可以根据相对简单的错误信息就能找出问题所在。因为开发人员熟悉代码,因此看到症状、测试用例步骤和分离问题的过程时,可能得到查找软件缺陷的线索。一个软件缺陷的分离和再现问题有时需要小组的共同努力。如果软件测试人员尽最大努力分离软件缺陷,也无法表达准确的再现步骤,那么仍然需要记录和报告软件缺陷。分离和调试软件缺陷之间的区别讨论分离和调试软件缺陷之间的区别,是为了划清测试人员与开发人员的责任,增加界限的清晰度与测试资源的控制能力。面对一个软件缺陷时,开发人员或测试人员为了修复它,会提出一系列分步骤地、处理缺陷的疑问:再现软件缺陷现象所需的最少步骤有哪些?这些步骤成功再现的可能性多大?软件缺陷是否成立存在?换句话说,测试结果是否可能起源于测试因素或者测试人员自身的错误,还是影响顾客需求的、系统真正的故障?哪些外部因素产生软件缺陷?哪些内部因素,是代码、网络、还是环境引起的软件缺陷?怎样才能在不产生新的缺陷的条件下使这个软件缺陷得到修复?这种修复是否经过调试,单元是否经过测试?问题解决了吗?它是否通过了确认和回归测试,确定系统的其余部分仍工作正常?软件缺陷的处理和跟踪软件缺陷跟踪管理是测试工作的一个重要部分,测试的目的是为了尽早发现软件系统中的缺陷,而对软件缺陷进行跟踪管理的目的是确保每个被发现的缺陷都能够及时得到处理。软件测试过程简单说就是围绕缺陷进行的,对缺陷的跟踪管理,一般而言需要达到以下目标:确保每个被发现的缺陷都能够被解决,“解决”的意思不一定是被修正,也可能是其他处理方式(例如,延迟到下一个版本中修正或者由于技术原因不能被修正),总之,对每个被发现的BUG的处理方式必须能够在开发组织中达到一致;收集缺陷数据并根据缺陷趋势曲线识别测试处于测试过程中的哪个阶段;决定测试过程是否结束,通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式。收集缺陷数据并在其上进行数据分析,作为组织过程改进的财富。简单、优化的软件缺陷生命周期生命周期的概念是一个物种从诞生到消亡经历了不同的生命阶段,那么软件缺陷生命