收藏 分销(赏)

第六章-缺陷报告与测试评估.pptx

上传人:a199****6536 文档编号:10267213 上传时间:2025-05-08 格式:PPTX 页数:109 大小:662KB
下载 相关 举报
第六章-缺陷报告与测试评估.pptx_第1页
第1页 / 共109页
第六章-缺陷报告与测试评估.pptx_第2页
第2页 / 共109页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,第,#,页,/,共,109,页,软件测试技术,第六章 缺陷报告与测试评估,第六章 缺陷报告与测试评估,软件缺陷的主要属性,软件缺陷报告,软件缺陷的生命周期与处理流程,软件测试的评估,测试总结报告,6.1,.,软件,缺陷的主要属性,为了正确、全面地描述软件缺陷首先需要了解缺陷的一些主要属性,这些属性为缺陷修复和缺陷统计分析提供了重要依据。软件缺陷包括以下一些主要属性:,(1)缺陷标识(Identifier),唯一标识一个软件缺陷的符号,通常用数字编号表示。当使用缺陷管理系统时,由软件自动生成;,(2)缺陷类型(Type),表6-1 软件缺陷的类型,缺陷类型,描述,功能,对软件使用产生重要影响,需要正式变更设计文档。例如功能缺失、功能错误、功能超出需求和设计范围、重要算法错误等,界面,影响人机交互的正确性和有效性,如软件界面显示、操作、易用性等方面的问题,性能,不满足性能需求指标,如响应时间慢、事务处理率低、不能支持规定的并发用户数等,接口,软件单元接口之间存在调用方式、参数类型、参数数量等不匹配、相互冲突等问题,逻辑,分支、循环、程序执行路径等程序逻辑错误,需要修改代码,计算,错误的公式、计算精度、运算符优先级等造成的计算错误,数据,数据类型、变量初始化、变量引用、输入与输出数据等方面的错误,附表:,缺陷类型,描述,文档,影响软件发布和维护的、包括注释在内的文档缺陷,配置,软件配置变更或版本控制引起的错误,标准,不符合编码标准、软件标准、行业标准等,兼容,操作系统、浏览器、显示分辨率等方面的兼容性问题,安全,影响软件系统安全性的缺陷,其它,上述问题中不包含的其它问题,(3)缺陷严重程度(Severity),表6-2 软件缺陷的严重程度,缺陷严重等级,描述,致命(Fatal),缺陷会导致系统的某些主要功能完全丧失,系统无法正常执行基本功能,用户数据遭到破坏,系统出现崩溃、悬挂和死机现象,甚至危及人身安全,严重(Cirtical),系统的主要功能部分丧失,次要功能完全丧失,用户数据不能正常保存,缺陷严重影响用户对软件系统的正常使用。包括可能造成系统崩溃等灾难性后果的缺陷、数据库错误等,重要(Major),产生错误的运行结果,导致系统不稳定,对系统功能和性能产生重要影响。例如,系统操作响应时间不满足要求,某些功能需求未实现、业务流程不正确、系统出现某些意外故障等,较小(Minor),缺陷会使用户使用软件不方便或遇到麻烦,但不影响用户的正常使用,也不影响系统的稳定性。主要指用户界面方面的一些问题,例如提示信息不准确、错别字、界面不一致等,(4)缺陷优先级(Priority):缺陷的优先级是从开发人员和测试人员的角度出发,以合理安排工作时间和提高工作效率为目标进行设置的;,表6-3 软件缺陷的优先级,缺陷优先级,描述,立即解决(Resolve Immediately),缺陷的存在导致系统几乎无法运行和使用,或者是造成测试无法继续进行,例如无法通过冒烟测试,必须立即予以修复,高优先级(High Priority),缺陷严重,影响测试的正常进行,需要优先在规定的时间内(如24小时内)完成修改,正常排队(Normal Queue),缺陷需要修复,但可以正常排队等待修复,低优先级(Not Urgent),缺陷可以在开发人员有时间的时候进行修复,如果开发和测试时间紧迫,可以在下一软件版本中进行修正,(5)缺陷出现的可能性(Possibility):缺陷出现的可能性是指某一缺陷发生的频率;,表,6-4 软件缺陷出现的可能性(缺陷频率),缺陷出现的可能性,描述,总是(Always),软件缺陷的出现频率是100%,每次测试时都会重现,通常(Often),测试用例执行时通常会产生,出现频率大概是80%90%,有时(Occasionally),测试时有时会产生这一软件缺陷,缺陷的出现概率是30%50%,很少(Rarely),测试时很少产生这一软件缺陷,缺陷的出现概率是1%5%,(6)缺陷状态(Status):缺陷状态用于描述跟踪和修复缺陷的进展情况,也反映了缺陷在其生命周期中的不同变化。,表6-5 软件缺陷的状态,缺陷状态,描述,提交(Submitted),已提交入库的缺陷,激活或打开(Active or Open),缺陷提交得到确认但还未解决,缺陷等待处理,拒绝(Rejected),开发人员认为不是缺陷或重复提交的缺陷,不需要修复,已修正或修复(Fixed or Resolved),缺陷已经被开发人员修复,但是还没有经过测试人员的验证,验证(Verify),缺陷验证通过,关闭或非激活(Closed or Inactive),测试人员验证后认为缺陷已经成功修复,缺陷状态,描述,重新打开,(,Reopen),测试人员验证后认为缺陷仍然存在,等待开发人员进一步修复,推迟(Deferred),缺陷推迟到下一个软件版本中修复,保留(On hold),由于技术原因或第三方软件的缺陷,开发人员暂时无法修复,不能重现(Cannot duplicate),开发人员无法重现缺陷,需要测试人员补充说明重现步骤,附表:,(7)缺陷起源(Origin),缺陷,起源是指测试时第一次发现缺陷的阶段,例如以下一些典型阶段:需求、总体设计、详细设计、编码、单元测试、集成测试、系统测试、验收测试、产品试运行、产品发布后用户使用阶段。发现缺陷的阶段越早,越有利于降低改正缺陷的费用。,(8)缺陷来源(Source),缺陷来源是指软件缺陷发生的地方。在软件生命周期某一阶段发现的缺陷可能来源于前期阶段出现的,错误。,图6-1 软件缺陷产生的,阶段,(9)缺陷根源(Root Cause),缺陷,根源是指造成软件缺陷的根本因素,主要是开发过程、工具、方法等软件工程技术与管理因素以及测试策略等因素,通过缺陷根源分析可以改进软件过程管理水平。,6.2,软件缺陷报告,6.2.1 缺陷报告中的信息,在实际工作中,经常会出现由于软件缺陷描述不清而无法重现缺陷、无法合理安排修复工作、后期无法对缺陷进行统计分析等情况。,一份完整的缺陷报告包括以下一些信息:,(1)缺陷跟踪信息;,缺陷ID:唯一标识一个软件缺陷,便于跟踪与查询;,标题:缺陷的概括性文字描述;,所属项目:缺陷属于哪个软件项目;,版本跟踪:缺陷属于软件项目的哪一个版本,是新缺陷还是回归缺陷;,所属模块:缺陷位于哪个功能模块。,(2)缺陷详细信息,测试步骤,期望结果,实际结果,测试环境,(3)缺陷附件信息;,(4)缺陷属性信息,类型:功能、用户界面、性能、文档等类型;,严重程度:可以分为致命、严重、重要和较小;,优先级:可以分为立即解决、高优先级、正常排队和低优先级;,出现频率:按统计结果标明缺陷发生的可能性1%100%;,缺陷起源、来源和根源信息。,(5)缺陷处理信息,提交人员,提交时间,分配的修复人员,修复期限,修复时间,缺陷验证人员,验证意见,验证时间,6.2.,2,缺陷报告模板,一份软件缺陷报告可以包含非常丰富的缺陷描述信息。在实际工作中,一般根据软件项目特点对上述缺陷描述信息进行裁剪,制定合适的缺陷报告模板。,填写模板信息时,需要遵守以下“5C”原则:,Correct,:对每个组成部分的描述准确不会引起误解。,Clear,:对每个组成部分的描述清晰,易于理解。,Concise,:描述信息只包含必不可少的内容。,Complete,:包含重现缺陷的完整步骤和其它辅助信息。,Consistent,:按照一致的格式书写全部缺陷报告,。,下表是一个较为通用的软件缺陷报告模板,可以在实际工作中修改为更为适合特定工作要求的模板。,表6-6 软件缺陷报告模板,缺陷记录,缺陷ID,标题(概述),软件名称,模块名,版本号,严重程度,优先级,状态,缺陷类型,发现阶段,缺陷来源,缺陷频率,可能性说明,测试人员,分配修复人员,日期,附表:,缺陷记录,测试环境,测试输入,预期结果,异常结果,缺陷重现步骤,附件,缺陷处理信息,缺陷验证信息,修复人,验证人,修复时间,验证时间,备注,验证结论,6.2.3 缺陷报告的注意事项,测试人员在编写缺陷报告之前,首先需要清楚缺陷报告的主要读者以及他们最希望从缺陷报告中获得哪些信息。因此,测试人员在编写缺陷报告时需要注意以下一些事项:,(1)保证能够重现缺陷;,因此,,测试人员在编写缺陷报告时需要注意以下一些事项:,(1)保证能够重现缺陷:如果测试人员发现不能保证重现一个缺陷,那么就需要给开发人员提供尽可能多的有效信息。如果无法重现或者没有验证是否可以重现时,一定要在缺陷报告中进行说明;,(2)一个报告只针对一个缺陷:虽然有时多个缺陷的起因是一样的,但是在真正修复缺陷之前并不能保证知道导致某个缺陷的原因。因此即使单独报告缺陷显得有些繁琐,但也比延误或遗漏缺陷要好。,(3)描述准确、清晰:缺陷标题必须简短,而且要求描述和传达出准确的信息;,(4)重视附件信息,附件信息应当是缺陷重现步骤的补充信息,是对测试步骤的进一步描述;,(5)使用中性语言:使用中性语言是指客观地描述缺陷问题。用带有感情色彩的语句报告缺陷除了造成研发团队的沟通障碍和协作困难外,对修改缺陷没有任何好处。,6.2.4 分离和再现软件缺陷,为了保证再现软件缺陷,除了需要按照已经介绍过的描述规则来描述软件缺陷之外,还要遵循软件缺陷分离和再现的方法。,分离和再现软件缺陷,是充分体现测试人员测试才能的地方,需要在测试工作中不断总结经验,才能准确地找出缩小问题范围的具体步骤和方法。,下面列举一些常用的分离和再现软件缺陷的方法和技巧:,(1)确保所有的步骤都被记录;,(2)注意特定时间和运行条件因素;,(3)注意边界条件、内存容量和数据溢出问题;,(4)注意事件发生次序导致的软件缺陷;,(5)考虑软件与其计算环境的相互作用;,(6)不能忽视硬件。,6.3,软件,缺陷的生命周期与处理流程,软件缺陷的生命周期是指一个软件缺陷,从发现到最终被确认修复的完整过程,。在这一过程中,软件缺陷会经历不同的状态。一个典型的软件缺陷生命周期经历了如下状态改变,:,提交打开:测试人员提交发现的软件缺陷,开发人员确认后准备修复。,打开修复:开发人员修复缺陷后通知测试人员进行修复结果验证。,验证重新打开:测试人员执行回归测试,验证测试结果后认为缺陷没有完全被修复,再次打开缺陷等待开发人员重新进一步修复。,验证关闭:测试人员执行回归测试,确认缺陷已经得到修复,然后将缺陷状态设为最后的关闭状态,为了合理安排缺陷修复工作,避免遗漏任何一个缺陷,需要规划软件缺陷的处理流程,一般根据实际情况进行灵活设置。上述典型软件缺陷生命周期的处理流程如图6-2所示。,图6-2 缺陷典型处理流程,实际工作中,缺陷处理流程不可能像典型处理流程这样简单,会面临各种特殊的情况,造成软件缺陷的生命周期更为复杂。需要考虑如下一些实际情况,:,开发人员认为测试人员提交的软件缺陷不是真正的,缺陷或者是微不足道,;,缺陷被不同测试人员重复提交,;,测试人员验证缺陷的修复结果后,认为缺陷仍然存在或者没有达到预期的修复效果,因而重新将缺陷设置为打开状态,;,缺陷优先级比较低,项目研发周期有限,产品发布在即,缺陷可以推迟到下一版本中进行处理,;,软件产品即将更新换代,而修复某一缺陷的风险过大,可能会造成更多的问题,经项目管理人员同意后可以不必修复,;,被推迟修复的软件缺陷被证实很严重,需要立即予以修复,软件缺陷的状态被设置为重新打开。,由上述情况可见,缺陷的处理过程实际上是比较复杂的,会出现对缺陷修复与否和修复结果是否满足要求的不同意见。因此,需要事先规定好对缺陷状态的设置权限。一旦发现缺陷,就需要明确后期相关人员的工作职责,跟踪软件缺陷的生命周期,直到缺陷最终得到正确处理。,图6-3 软件缺陷处理流程,图6-3是一个考虑上述特殊情况后的缺陷处理流程,可以在实际工作中予以参考。从以上说明可以理解,一个软件缺陷除了,常见的提交、打开、修复和关闭状态外,还包括拒绝、验证、审查、推迟、保留、重新打开等附加状态。,对于,缺陷数量只在几十个范围内的,小型软件项目,用Excel制作的缺陷报告模板,就可以应对。但是对于,大型软件项目,,要追踪和管理成百上千个状态不断变化的软件缺陷,必须,使用合适的缺陷管理工具,。,缺陷管理工具属于测试管理类工具,相比其它测试类工具,学习和使用都较为简单。常用的有QC、禅道、Mantis、JIRA、TestLink、Bugzilla等。使用这些缺陷管理工具的优势体现在以下一些方面,:,强大的检索功能和安全的审核机制,。由于具有后台数据库支持,缺陷检索、增加、修改、保存都很方便,并且能够对附件进行有效管理。通过权限设置,将缺陷操作权限与缺陷状态相对应,保证修改、删除等缺陷操作的安全性。,支持项目组成员间的协同工作。通过友好的网络用户界面以及Email等丰富多样的配置设定,支持项目组各类成员及时了解缺陷状态的变化情况,进而根据对应状态合理地安排自己的工作,提高发现缺陷和改正缺陷的效率。,提高缺陷报告的质量。保证缺陷报告的完整性和一致性,正确和完整地填写缺陷报告的各项内容,保证不同测试人员提交的测试报告格式统一。,6.4,软件测试,的评估,在软件测试执行过程中,需要阶段性地总结和分析测试结果,确保测试过程的有效性。在软件验收和发布之前,测试管理人员需要对整个测试过程和结果做出系统性的评价,评估测试的完成度是否达到了测试计划规定的目标、软件的质量是否满足了用户需求和设计要求,最终决定能否将软件交付用户验收或者最终发布。,6.4.1,测试,评估的目的和方法,软件测试的评估主要有以下目的:,对测试的进展情况进行量化分析,确定测试和缺,陷修复工作的当前状态、效率和完成度,判断测,试工作可以结束的时间,;,最后完成测试报告或软件质量分析报告提供量化分析数据,例如给出测试覆盖率和缺陷清除率等。,分析软件研发各阶段的不足之处,找出测试和开发工作中的薄弱环节,为过程监督、质量控制和过程改进提供定量化依据。,从以上内容可以看出,测试评估强调定量化分析,是以定量化的分析结果科学地评价测试工作和软件质量,为软件过程管理提供依据。测试评估主要包括以下两种方法,:,覆盖率评估,:,评估测试的覆盖率,对测试完成程度进行评测。最常见的覆盖率评估分为需求覆盖率评估和代码覆盖率评估。,质量评估,:,测试过程中产生的软件缺陷报告提供了最佳的软件质量评估数据,通过缺陷分析可以对软件的可靠性、稳定性等进行详细分析,对软件的性能进行多方面的评测,获得反映软件质量特征的多种指标数据,在此基础上确定软件质量与需求的相符程度。,6.4.2,覆盖率,评估,覆盖率是一种常见的,反映测试充分性和完成度的定量化指标,。测试活动已验证过的软件区域越多,软件质量得到保障的可能性越大,测试工作也越接近完成。因此,通过测试覆盖率可以,间接地反映测试工作的质量和当前软件代码的质量,。测试覆盖又分为,需求覆盖,和,代码覆盖,两个方面。,1、需求覆盖率,对需求的全面覆盖是软件测试的基本要求,需求覆盖率是测试到的功能和非功能需求占整个需求总数的百分比。,由于测试计划和测试用例设计时已经考虑了对需求的覆盖,因此一般可以通过已计划的、已实施的或成功完成的测试用例的执行率来衡量需求覆盖率,有时也可以通过测试需求的覆盖率来衡量。,测试评估中,通常使用以下三种公式来计算需求的测试覆盖率:,计划的测试覆盖率=Tp/Rft,(1),已执行的测试覆盖率=Tx/Rft,(2),成功执行的测试覆盖率=Ts/Rft,(3),上述三个公式中,,Rft是测试需求的总数,Tp是用测试过程或测试用例表示的计划测试需求数,Tx是用测试过程或测试用例表示的已执行的测试需求数,Ts是用完全成功、没有缺陷或意外结果的测试过程或测试用例表示的已执行测试需求数,。通过上述三种需求覆盖率指标可以评估剩余测试的工作量,确定测试工作的完成时间。,2、代码覆盖率,代码覆盖率是指所测试的源代码数量占代码总数的百分比。代码覆盖率反映了测试用例对被测软件代码的覆盖程度,也是衡量测试工作进展情况的重要定量化指标。,很明显,代码覆盖率与单元测试密切相关,,是单元测试用例是否充分,的重要衡量指标。任何未经测试的程序代码都可能存在潜在缺陷,因此在实际测试前就应当根据程序规格说明、具体代码、规定的代码覆盖率要求设计出合理数量的测试用例。,与手工分析需求覆盖率不同,一般需要借助相应的工具来统计代码覆盖率。下面列举一些常用编程语言的代码覆盖率分析工具,:,C/C+,:,CUnit、CPPUnit、Google GTest、gcc+gcov+lcov等,。,J,ava:,Clover、EMMA、JaCoCo、Jtest、Maven Cobertura 插件等,。,JavaScript:,JSCoverage,。,Python:,PyUnit+Coverage.py,。,PHP:,PHPUnit+XDebug,。,Ruby:,RCov,。,代码覆盖率在实际应用中存在着一些误区,主要反映在以下两个方面:,(1)片面追求高代码覆盖率,:对于代码覆盖率的提升应当基于风险分析的方法,应当首先保证对关键模块代码的测试覆盖,并确保彻底修复了所发现的软件缺陷。只有通过风险分析,才能确定每一次提升代码覆盖率的实际,价值;,(2)认为100%的代码覆盖率就能够保证软件质量:实际上,即使测试了所有的软件代码,仍然不能保证软件完全满足了用户需求和软件设计要求,也不能代表测试覆盖率很高。,实际上,,即使测试了所有的软件代码,仍然不能保证软件完全满足了用户需求和软件设计要求,也不能代表测试覆盖率很高。综合以上说明,可以进一步理解代码覆盖率的实际意义:,量测试工作的完成度,为确定何时可以结束测试提供依据。,确定没有被测试覆盖到的代码,从而检验前期测试设计是否充分,是否存在测试盲点。,检测出程序中的错误和无用代码,促使程序设计和开发人员理清代码逻辑关系,提升代码质量。,作为检验软件质量的辅助指标。代码覆盖率高并不能说明软件质量高,但是代码覆盖率低,软件质量也不可能得到有效保障。,6.4.3,质量,评估,件缺陷反映了软件与需求的偏差,因此测试工作中一般通过分析软件缺陷来评估软件的质量。缺陷分析是软件质量评估的一种重要手段,缺陷分析指标可以看做是度量软件质量的重要指标。,软件,缺陷分析和评估有很多种方法,从简单的缺陷数量统计到复杂的基于数学模型的分析。常用的缺陷分析方法主要包括缺陷趋势分析、缺陷分布分析、缺陷注入-发现矩阵分析,下面分别对上述3种方法进行详细介绍,:,1、缺陷趋势分析,缺陷趋势分析是根据缺陷数量随时间变化的情况,分析和监控开发与测试的进展状况与质量,预测未来软件研发工作情况。,(1)缺陷发现率与测试里程碑;单位时间内发现的缺陷数量称为缺陷发现率,图6-4反映了一般情况下缺陷发现率与测试成本之间的关系。,图6-4 缺陷发现率与测试,成本,实际,工作中,缺陷发现率的变化情况并不会像图6-4中的那样理想,不同测试阶段的缺陷发现能力不同,程序开发和缺陷修复的效率变化情况也会对缺陷发现率产生直接影响。重要的是通过缺陷趋势分析及时掌握软件的当前状态,合理制定测试下一阶段的计划。,图,6-5是微软基于缺陷趋势图的里程碑定义,从缺陷趋势图可以找出“Bug收敛点”,第一次出现新增缺陷数量为零的时间点被定义为“零Bug反弹点”。,(2)缺陷趋势与缺陷处理质量,缺陷趋势分析还可以延伸到对测试质量和缺陷修复质量的分析。通过分析和对比新增缺陷、已修复缺陷和已关闭缺陷的变化趋势,可以了解测试的效率和开发人员修复缺陷的效率,找出测试延期的原因,发现测试瓶颈,为了获得稳定、规律性的趋势曲线,一般采用缺陷累积数量进行缺陷处理质量分析,图6-6是一个新增、已修复和已关闭缺陷的趋势变化对比图,趋势曲线斜率的大小反映了缺陷的处理效率。,为了获得稳定、规律性的趋势曲线,一般采用缺陷累积数量进行缺陷处理质量分析,图6-6是一个新增、已修复和已关闭缺陷的趋势变化对比图,趋势曲线斜率的大小反映了缺陷的处理效率。,实际测试工作中,通过绘制、分析和对比上述趋势曲线,可以获得以下一些非常有价值的有关开发和测试质量的信息,:,缺陷越早被发现,对软件质量的影响越小,修复的成本也越低,;,缺陷打开与关闭的时间差决定了软件项目的进度,这一时间差当然越小越好,;,如果新增缺陷曲线已趋于平缓,但缺陷修复和关闭曲线一直在新增曲线下面,说明缺陷处理效率过低,缺陷处理瓶颈在开发人员那边。,;,当新开始一个测试阶段时,如果发现新增缺陷曲线出现一个突起,说明有较多的缺陷在之前的测试阶段未被发现,遗留到了本阶段,或者说明之前的缺陷修复引入了新的缺陷,需要尽快处理上述缺陷,稳定软件质量。,实际趋势曲线不可能都是平滑的,当发现任何与理想曲线存在显著差异的地方,都意味着测试与开发工作出现了某种问题,例如测试策略错误或者是人力资源不足等,需要尽快分析问题产生的原因。同时,分析结果为今后工作中进行质量改进提供了非常有价值的经验数据。,2、缺陷分布分析,缺陷分布分析是将缺陷数量作为一个或多个缺陷属性的函数来显示,分析不同类型的缺陷对软件质量的影响情况,寻找测试工作的薄弱环节。,对缺陷进行分类统计分析,常用的缺陷属性有以下4种:,状态,:新提交的、打开的、已修复的、已关闭的当前缺陷状态。,优先级,:反映了修复缺陷的优先顺序。,严重性,:表示缺陷对软件产品和用户使用影响的恶劣程度。,来源,:导致缺陷的原因及其来源位置。,最为,简单的缺陷分布分析是统计已发现的缺陷在软件主要模块中的分布情况,如图6-7(a)所示。分析的结果可以直观和清晰地表明哪些模块中的缺陷较多,根据缺陷二八定律需要在后续工作中重点测试这些模块,。,图6-7 主要功能模块缺陷分布,图,需要注意的是,单纯的缺陷数量并不能决定模块的质量,应当采用缺陷密度来更为准确地评估模块代码的质量,如图6-7(b)所示。缺陷密度是用平均估算法来度量代码的质量,一般通过下面的公式进行计算,代码行通常以千行为单位。,(4),图,6-8是一个缺陷优先级分布图,一般要求立即解决和高优先级的缺陷数量不应过多,否则意味着缺陷会频繁阻塞测试工作的正常进行,严重影响测试效率。,图6-8 软件缺陷优先级分布,图,对于缺陷严重性,可以采用加权的方法分析缺陷对软件质量的影响,如表6-7所示。,表6-7 软件缺陷严重等级权值与缺陷影响,缺陷严重等级,权值,缺陷数量,严重性加权数量,致命(Fatal),4,N1,4N1,严重(Cirtical),3,N2,3N2,重要(Major),2,N3,2N3,较小(Minor),1,N4,N4,进一步,可以给出更为直观的严重性加权后的模块缺陷分布图,如图6-9所示。,图6-9 严重性加权后的模块缺陷分布图,更为,深入的,可以分析缺陷的来源,也就是统计分析不同类型缺陷的数量,找出造成软件缺陷的最主要原因。这一类型的缺陷分布分析有助于使测试人员将测试注意力集中到那些最容易产生缺陷的软件区域,也能够使开发人员在今后工作中更有针对性地提高代码质量。,如,图6-10所示,缺陷主要来源于需求说明、系统设计和数据库,直观提示这些软件部分需要更为深入和细致的测试。,图6-10 软件缺陷来源分布图,3、缺陷注入-发现矩阵分析,软件缺陷有“,注入阶段,”和“,发现阶段,”两个阶段。注入阶段即缺陷的来源(Source)阶段,是指在软件开发的哪个具体阶段造成了这个软件缺陷;而发现阶段是缺陷的起源(Origin)阶段,是指在开发和测试过程中第一次发现该缺陷的阶段。,根据缺陷报告中缺陷来源和起源属性,可以构造如表,6-8,所示的“缺陷注入,-,发现矩阵”。表中的数字代表了在某一发现阶段所找到并清除的由特定注入阶段造成的软件缺陷数量。,表,6-8 缺陷注入-发现矩阵,发现阶段,注入阶段,需求阶段,设计阶段,编码与单元测试,集成测试,系统测试,验收测试,产品发布后,发现总计,本阶段缺陷清除率,需求,12,14,4,5,2,0,0,37,32%,设计,20,16,6,1,2,1,46,43%,编码,105,29,16,9,8,167,63%,注入总计,12,34,125,40,19,11,9,250,(1)软件缺陷清除率,通过“缺陷注入-发现矩阵”,可以计算得到以下两种测试评估度量指标。,阶段缺陷清除率=(本阶段发现的缺陷数/本阶段注入的缺陷数)*100%,(5),阶段缺陷泄漏率=(下游发现的本阶段的缺陷数/本阶段注入的缺陷数)*100%,(6),阶段,缺陷清除率反映的是某一软件研发阶段的缺陷清除能力,是缺陷密度度量的扩展,可以评估需求评审、设计评审、代码审查和测试的质量。,缺陷,发现阶段和注入阶段可以根据软件项目特点进行划分,根本目的是评估出软件开发各个环节的质量,找出薄弱环节,从而有针对性地进行过程改进。,设F为描述软件规模的功能点数,D1为软件开发过程中所发现的所有缺陷数,D2为软件发布以后发现的缺陷数,D=D1+D2为发现的缺陷总数。可以通过以下几种度量方式来评估软件的质量:,软件质量(每个功能点的缺陷数)=D2/F,(7),软件缺陷注入率=D/F*100%,(8),整体软件缺陷清除率=D1/D*100%,(9),例如,某个软件有100个功能点,开发过程中发现了20个软件缺陷,软件发布后又发现了3个缺陷,那么F=100,D1=20,D2=3,D=23。由上述公式计算可得:,软件质量,(每个功能点的缺陷,数)=D,2/F=3/100=0.03,软件缺陷注入率,=D/F=23/100=23%,整体软件缺陷清除率,=D1/D=20/23=86.96%,整体软件缺陷清除率一般需要达到85%以上,著名软件公司主流产品的整体软件缺陷清除率可以达到98%。,(2)缺陷潜伏期,一个软件缺陷被发现的时间越晚,其带来的损害性就越大,修复的成本也会越高。缺陷潜伏期是一种特殊类型的缺陷分布度量,也称为阶段潜伏期,,为了体现缺陷潜伏期的长短和缺陷的损害程度,首先需要给“缺陷注入-发现矩阵”中的元素赋予合适的权值,如表6-9所示。,表,6-9 缺陷潜伏期的权值,发现阶段,注入阶段,需求阶段,设计阶段,编码与单元测试,集成测试,系统测试,验收测试,产品发布后,需求,0,1,2,3,4,5,6,设计,0,1,2,3,4,5,编码,0,1,2,3,4,如,表6-8所示的“缺陷注入-发现矩阵”已经明确表示了缺陷注入时间、发现时间及其数量,通过加权计算可以得到如表6-10所示的软件缺陷损耗值,矩阵中的元素是经过缺陷潜伏期加权后的已发现缺陷的数量。,表6-10 软件缺陷的损耗值,发现阶段,注入阶段,需求阶段,设计阶段,编码与单元测试,集成测试,系统测试,验收测试,产品发布后,损耗总计,阶段缺陷损耗,需求,0,14,8,15,8,0,0,45,1.22,设计,0,16,12,3,8,5,44,0.96,编码,0,29,32,27,32,120,0.72,表,6-10中显示了一种度量指标“缺陷损耗”。缺陷损耗综合了缺陷潜伏期和缺陷分布因素,用来度量缺陷发现过程的有效性和修复缺陷所耗费的成本,其计算公式如下:,(,10,),例如,,表6-10中由需求分析缺陷造成的缺陷损耗为45/37=1.22,45是加权求和后的损耗总计数值,37是表6-8中总共发现的需求分析缺陷数量。这样计算产生的实际上是阶段缺陷损耗,同样的原理可以计算整体软件的缺陷损耗。,缺陷,损耗的数值越低,说明缺陷的发现和修复过程越有效。当把发现和注入阶段相同时的缺陷权值设为0时,理想缺陷损耗的数值是0,也就是把各阶段注入的缺陷全部在该阶段发现并修复了。通过积累和分析项目长期缺陷损耗的历史数值,可以度量测试有效性的改进趋势,。,6.4.4,性能,评估,通过,性能测试可以获得与软件性能表现相关的各方面数据,性能评估就是基于这些数据分析、显示和报告软件的性能特征。性能评估通常与性能测试的执行过程结合进行,用于显示性能测试的进度和状态,也可以在性能测试完成后对测试结果进行统计分析。,主要的性能评估包括以下内容:,(1)动态监测:在测试过程中实时获取和显示被测软件的性能表现、状态、用例执行进度等信息;,(2)响应时间或吞吐量:用曲线图等显示响应时间或吞吐量随系统负载变化的情况,评估被测软件对象在不同条件下的性能表现。除了显示软件的实际性能之外,还可以统计分析数据的平均值和标准差,对性能指标的稳定性作出评估。,(3)百分比报告:百分比报告用于计算和显示各种百分比值;,(,4,)追踪和配置文件报告:通过这些信息可以更为准确地定位性能瓶颈或性能异常等情况下的缺陷位置,分析和总结缺陷产生的具体原因;,(,5,)比较报告:是一种最常用的评估软件性能的形式。通过比较不同性能测试的运行结果,评估性能改进措施是否有效以及性能提升的程度,分析不同性能测试结果数据集之间的差异或趋势。,6.5,测试,总结报告,在,完成测试评估的基础上就可以着手编写测试总结报告。测试总结报告是为了总结和评价测试活动的结果,分析和讨论软件的风险和质量状态,发现测试工作仍然存在的不足之处,对测试计划的完成情况进行最终说明。,在,IEEE标准829-2008和国家标准GB/T 9386-2008中都给出了测试总结报告的编写标准,两者实质要求类似,都要求给出实际测试与测试计划的差异、综合评估、测试结果汇总、测试项总体评价、结论和建议等。,这里,以IEEE标准为例进行说明。IEEE标准如表6-11所示,分为阶段测试报告和主测试报告两种,Level代表了单元、集成、系统和验收测试中的一种,。,阶段测试报告纲要,主测试报告纲要,Level Test Report Outline,1.Introduction,1.1,.Document identifier,1.2,.Scope,1.3,.References,2.Details,2.1,.Overview of test results,2.2,.Detailed test results,2.3,.Rationale for decisions,2.4,.Conclusions and,recommendations,3.General,3.1,.Glossary,3.2,.Document change,procedures,and history,Master Test Report Outline,1.Introduction,1.1,.Document identifier,1.2,.Scope,1.3,.References,2.Details of the Master Test Report,2.1,.Overview of all aggregate test results,2.2,.Rationale for decisions,2.3,.Conclusions and recommendations,3.General,3.1,.Glossary,3.2,.Document change procedures,and,history,表6-11 IEEE 829-2008测试报告,纲要,两,类报告在介绍(Introduction)和常规(General)部分都包含如下信息。,文档标识符(Document identifier);,范围(Scope);,引用文件(References);,词汇表(Glossary);,文档变更过程和历史记录(Document change procedures and history)。,阶段,测试报告细节内容(Details)如下:,(1)测试结果综述(Overview of test results),(2)测试结果详细说明(Detailed test results),(3)决策理由(Rationale for decisions),(4)结论与建议(Conclusions and recommendations),主测试报告细节内容(Details of MTR)如下:,(1)测试总体结果综述;,测试活动总结;,测试任务结果总结;,缺陷及其处理情况总结;,评估软件质量;,总结已完成的所有测试评估度量指标;,(2)决策理由:给出软件测试通过、失败或有条件通过(Conditional-Pass)的结论及其原因;,(3)结论与建议:对软件产品进行全面评估,可以包括对失败风险的估计。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服