软件测试技术第5章ppt课件.pptx
《软件测试技术第5章ppt课件.pptx》由会员分享,可在线阅读,更多相关《软件测试技术第5章ppt课件.pptx(108页珍藏版)》请在三一办公上搜索。
1、软件测试技术及实践,詹慧静 陈燕 段相勇,第5章 缺陷报告和测试评估,了解软件缺陷的基本知识。 了解软件缺陷的生命周期。 熟练掌握报告软件缺陷。 了解重现软件缺陷含义及常用的分析技术。 了解软件缺陷跟踪管理。 了解软件缺陷的评估。 了解测试评审。,本章学习目标,对于软件缺陷,需要学习以下内容:,软件缺陷的定义与描述。软件缺陷的种类。软件缺陷的属性。,5.1软件缺陷,5.1.1软件缺陷的定义与描述,1.软件缺陷的定义软件缺陷是指软件开发过程的各个阶段中存在的不完美甚至存在错误的地方,这些不完美和错误造成了软件缺陷,如编码过程中出现的语法、拼写错误或者存在不正确的程序语句等。简单地说,软件缺陷就是
2、指在软件(包括数据、程序、文档)之中存在的那些不希望或不能接受的、会导致软件产生质量问题的偏差。在行业定义中,软件缺陷通常又被称为defect或bug,是指软件或程序中存在的某种破坏正常运行能力的问题和错误,其存在会导致软件产品在某种程度上不能满足用户的需要。从软件内部看,缺陷是软件在开发或维护过程中存在的问题或错误。从软件外部看,缺陷是系统所需要实现的某种功能的失效或违背。,5.1.1软件缺陷的定义与描述,软件缺陷是影响软件质量的关键因素之一,发现并排除软件缺陷是软件生存周期中的一项重要工作。每一个开发软件的组织都必须妥善处理软件中存在的缺陷,它不仅关系到软件的质量,更关系到软件运用在工业生
3、产中是否会导致安全隐患。按照一般的定义,只要符合下面规则中的一个,就可叫做软件缺陷: (1) 软件未达到软件需求说明书中规定的功能。(2) 软件超出软件规格说明书中指明的范围。(3) 程序中存在语法错误。(4) 程序没有达到用户的期望。(5) 程序中存在拼写错误。(6) 软件运行出现错误。 (7) 运行缓慢,用户体验差,最终用户认为软件使用效果不好。(8) 软件语言描述过于技术化,非专业人员无法理解。,5.1.1软件缺陷的定义与描述,2.软件缺陷的描述软件缺陷的描述是报告软件缺陷的基本部分,那么,当发现软件缺陷后,应当如何描述软件缺陷呢?一个好的软件缺陷描述,需要使用简单、准确和专业的语言来呈
4、现缺陷的本质。在描述软件缺陷时,不能信息含糊不清,从而误导开发人员。准确描述软件缺陷是非常重要的,这是因为:(1) 清晰准确的软件缺陷描述可以提高与开发人员的沟通效率。 (2) 提高软件缺陷修复的速度,使每一个小组能够有效地工作。 (3) 提高开发人员对测试人员的信任度,并得到开发人员对软件缺陷的有效响应。 (4) 加强开发人员、测试人员和管理人员的协同工作。,5.1.1软件缺陷的定义与描述,2.软件缺陷的描述适用于有效描述软件缺陷的规则主要有以下几个: (1) 单一和准确。每个缺陷报告只针对一个软件缺陷。若在一个报告中报告多个软件缺陷,可能会导致其中部分缺陷被忽略,而不能得到修正。 (2)
5、可以再现缺陷。提供重现缺陷的精确操作步骤,使开发人员容易看懂,只有再现了缺陷,才能正确地修复缺陷。 (3) 描述要完整。 提供完整的软件缺陷的步骤和信息,例如图片信息、报错截图、日志文件等。 (4) 短小简练。通过使用关键词,既可以使软件缺陷的标题短小简练,又能准确解释产生缺陷的现象。 (5) 描述特定条件。许多软件功能要在某种特定条件下才会产生缺陷,所以软件缺陷描述不能忽视对这些特定条件(如特定的操作系统、浏览器或某些设置等)的描述,从而帮助开发人员发现产生软件缺陷的线索。 (6) 补充完善。从发现缺陷那一刻起,测试人员的责任就是保证该缺陷及时得到正确的报告,并且受到应有的重视,继续监视其修
6、复的全过程。(7) 描述但不做评价。在软件缺陷描述中不要带有个人观点对开发人员进行评价。软件缺陷报告是针对问题本身,只需将缺陷事实或现象客观地描述出来,而不能进行评价或议论。,5.1.2软件缺陷的种类,1.从开发者角度划分从开发者角度将软件缺陷分为需求缺陷、设计缺陷、文档缺陷、代码缺陷、测试缺陷、过程缺陷、计算错误和边界错误。(1) 需求缺陷包括需求有误、需求逻辑错误、需求不完备、需求文档描述问题、需求更改。(2) 设计缺陷包括设计不合理、设计文档描述出现问题、设计变更带来的问题。(3) 文档缺陷指在文档的静态检查过程中发现的缺陷,例如通过测试需求分析及文档审查发现的文档缺陷。(4) 代码缺陷
7、指对代码进行同行评审、审计或代码检查过程中发现的缺陷。(5) 测试缺陷指在测试执行活动中发现的被测对象(一般是指可运行的代码或软件系统)的缺陷,测试缺陷不包括静态测试中发现的问题。(6) 过程缺陷指通过过程审计、过程分析、管理评审、质量评估、质量审核等活动发现的关于开发过程的缺陷和问题。过程缺陷的发现者一般是质量经理、测试经理及管理人员等。(7) 计算错误指代码中出现的计算错误,例如使用了错误的运算公式、累加器未进行初始化等。(8) 边界错误指的是输入边界和输出边界或输入等价类边界的错误,这是最容易发生的一类错误。,5.1.2软件缺陷的种类,1.从开发者角度划分从开发者角度例如,程序本身无法处
8、理超越边界所导致的错误,由于开发人员在声明变量或使用边界范围时不小心引起的错误等。下面是一个典型的缓冲区溢出可能导致攻击的错误: #include;#include;void why_here(void)/这个函数没有任何地方调用过printf(why u here !nn);printf(you are trapped heren);system(pause);_exit(0);int main(intargc,char * argv)int buff1;buff3=0 x004113c0; /buff3=0 x0041111d; buff3=why_here;system(pause);r
9、eturn 0;,5.1.2软件缺陷的种类,1.从开发者角度划分从开发者角度执行结果如下: 从图中可以看出,虽然在代码中并没有调用why_here函数,但why_here函数还是被执行了,这是因为main函数里面赋值时发生溢出,数组实际地址变成0 x0041111d,就会跳转到why_here执行。只需要查看调试过程的汇编结果和程序执行过程中的监视窗口,不难发现其buff溢出,如果这段代码的是恶意代码,那么将会对系统造成严重的损害。,5.1.2软件缺陷的种类,2.从使用者角度划分从使用者角度,可以将软件缺陷分为功能未满足用户需求、使用不方便、交互性不好、使用性能不佳、未做好错误处理、控制流程错
10、误、对硬件兼容性差及文档错误。1)功能不能满足用户需求:功能不能满足用户需求包括功能不正常、所提供的功能不完善或其它方面的功能问题,5.1.2软件缺陷的种类,2.从使用者角度划分(1)功能不正常:简单地说,就是软件应该提供的功能,在使用上并不符合产品设计规格说明书中规定的要求,或是运行结果达不到预期设计,或是根本无法使用,这类错误常常会发生在测试过程的初期和中期。例如,在用户接口上所提供的选项及动作,使用者操作后没有反应。(2)所提供的功能不完善:与功能不正常不同,软件功能不完善指的是软件提供的功能能运行,甚至软件的功能运行结果也符合设计规格的要求,但对于使用者来说却认为该功能是不完整的,是没
11、有完全满足他们需求的。系统测试人员在测试结果的判断上,必须从使用者的角度进行思考,即从用户体验出发,来判断提供的功能是不是真正满足使用者的需求。(3)其它功能方面的问题:包括是不是有重复的功能、多余的功能等。,5.1.2软件缺陷的种类,2.从使用者角度划分2)软件在使用上不方便:如果一个软件,使用者不知如何使用或难以使用,就一定是在软件产品的设计上存在问题。一个好用的软件,会尽量做到让使用者容易上手,导航清晰,易于操作,使用方便。3)与操作者交互不良:一个好的软件必须与操作者之间可以实现正常交互。在操作者使用软件的过程中,软件必须很好地响应操作者。例如在浏览网页时,如果操作者在某一网页填写信息
12、,但是输入的信息不足或有误。当点击“确定”按钮后,网页此时提示操作者输入信息有误,却并未指出错误的哪里,操作者只好回到上一页重新填写,或直接放弃离开。产生这个问题的原因是在软件与操作者互动方面未做完整的设计。4)使用性能不能满足用户的需求:被测软件功能正常,但性能不能满足用户需求,如事务处理速率、并发量、数据量、压缩率、响应时间等不能满足用户的使用要求。此类缺陷通常是由于开发人员采用了错误的解决方案,或使用了不恰当的算法导致的。如大数据量并发压力测试对于分布式软件系统而言是必须进行的,因为分布式软件系统对并发量、稳定性的要求远比其它软件要高。,5.1.2软件缺陷的种类,2.从使用者角度划分5)
13、未做好错误处理:软件除了避免出错之外,还要做好错误处理。许多软件之所以会产生错误,就是因为程序本身对于错误和异常处理的缺失。例如被测软件读取即插即用移动设备时,移动设备插上时程序正常读取,但刚好所读取的盘已被移出时。当程序读取这个盘时未做好处理,程序发现问题报错,此时操作系统为保护系统自身只能中断程序执行。由此可见一个好的软件系统必须能对各种错误及异常情况进行处理。6)控制流程错误:软件控制流程的好坏考验开发人员对软件设计是否严谨,软件各状态间转变是否合理,要依据流程控制。例如导出数据表格功能,当从某个表单导出数据时,选择好要导出的数据点击导出后,软件就将数据导出了,可是用户不知道导出的文件在
14、何处,用户希望自己定义导出的目录。而软件未向用户提供可以更改导出目录的选择,这就是软件流程控制不完整的错误问题。,5.1.2软件缺陷的种类,2.从使用者角度划分7)对不同硬件兼容性差:软件安装在某些硬件环境下不能正常工作。例如,在开发程序时使用的是Intel的处理器,程序打包生成后放在AMD处理器下运行会报错。8)软件文档错误:影响发布和维护的文档包括注释、用户手册、设计文档等。软件文档错误除了软件所附带的使用手册、说明文档及其它相关的软件文档内容错误之外,还包括软件使用接口上的错误文字和错误用语、产品需求设计、设计说明书等的错误。错误的软件文档除了降低产品质量外,还会误导用户。,5.1.3软
15、件缺陷的属性,为了便于跟踪软件缺陷,避免遗漏严重的软件缺陷,需要定义软件缺陷的属性,为开发人员和测试人员提供修复缺陷的参考。软件缺陷的主要属性有缺陷标识、缺陷类型、缺陷严重程度、缺陷产生的可能性、缺陷的优先级、缺陷状态、缺陷起源、缺陷来源和缺陷根源等。1. 缺陷标识缺陷标识是对某个缺陷进行标识的唯一标识符,通常用数字序号表示,方便对缺陷进行索引等管理操作。2. 缺陷类型所谓缺陷类型是指根据缺陷的自然属性进行划分得到的不同缺陷种类。常见的软件缺陷类型如下表所示:,5.1.3软件缺陷的属性,5.1.3软件缺陷的属性,3. 缺陷严重程度缺陷严重程度是指因为软件缺陷而引发的故障对软件产品的影响程度,其
16、判断应该依据软件最终用户的观点。通常可将缺陷严重程度分为致命(Fatal)、严重(Critical)、一般(Major)、较小(Minor)几个级别,如下表所示。,5.1.3软件缺陷的属性,4. 缺陷产生可能性缺陷产生可能性是指某个缺陷发生的概率,通常将其划分为总是、通常、有时、很少几种可能性,如下表所示。,5.1.3软件缺陷的属性,5. 缺陷的优先级缺陷的优先级是指某个缺陷必须被修复的紧急程度,通常可划分为立即解决、高优先级、正常排队、低优先级几个级别,高优先级的缺陷应该优先修复。缺陷的优先级如下表所示。,5.1.3软件缺陷的属性,6. 缺陷状态缺陷的状态是指描述缺陷通过一个跟踪修复过程的进
17、展情况,在这一过程中,缺陷可被描述为激活或打开、已修正或修复、关闭或非激活、重新打开、推迟、保留、不能重现、需要更多信息等状态,如下表所示。,5.1.3软件缺陷的属性,7. 软件缺陷的起源缺陷起源是指缺陷引起的故障或事件第一次被检测到的阶段,可分为:1)需求阶段发现的软件缺陷。2)在概要设计和详细设计阶段发现的软件缺陷。3)在编码阶段发现的软件缺陷。4)在测试阶段发现的软件测试缺陷。5)在用户使用阶段发现的软件缺陷。各个阶段发现的软件缺陷所占比例通常为:1)需求阶段发现的软件缺陷占54%。2)设计阶段发现的软件缺陷占25%。3)编码阶段发现的软件缺陷占15%。4)其它占6%。,5.1.3软件缺
18、陷的属性,8. 软件缺陷的来源缺陷来源是指引发某个软件缺陷的位置,通常软件缺陷来源于需求说明书、设计文档、系统集成接口、数据流(库)、程序代码等,如表5-6所示。表5-6 缺陷来源,5.1.3软件缺陷的属性,9.缺陷根源缺陷的根源是指产生缺陷的根本因素,包括测试策略、过程、工具和方法、团队(人员)、硬件、软件和工作环境等,如表5-7所示。表5-7 缺陷根源,对于软件缺陷的生命周期,需要学习如下内容:,软件缺陷生命周期的定义软件缺陷生命周期的几个阶段软件缺陷生命周期管理工具,5.2软件缺陷的生命周期,1. 软件缺陷生命周期的定义,在软件开发过程中,缺陷拥有自身的生命周期,缺陷在其生命周期中会处于
19、不同的状态,确定的生命周期保证了过程的标准化。软件缺陷的生命周期是指从软件缺陷被发现、报告、缺陷被修复、验证直至确保不会再出现之后关闭的整个过程。,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段,根据IEEEStd10441993中的描述,软件缺陷生命周期主要由四个阶段组成:识别阶段(Recognition)、调查阶段(Investigation)、改正阶段(Action)和总结阶段(Disposition)。无论是缺陷生命周期的哪个阶段,都包括了记录(Recording)、分类(Classifying)和确定影响(IdentifyingImpact)三个活动。缺陷生命周期的四个阶
20、段依次进行,但是缺陷可能会在这几个阶段中进行多次迭代,如图5-2所示。,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段,图5-2缺陷生命周期的四个阶段,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段缺陷生命周期的各个阶段及其中的各项活动描述如下:,图5-2缺陷生命周期的四个阶段,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段缺陷生命周期的各个阶段及其中的各项活动描述如下:,1)识别阶段缺陷的识别是整个缺陷生命周期的第一个阶段,它可能发生在软件开发生命周期的任何一个阶段。缺陷的识别可以由参与项目的任何相关人员来完成,如系统人员、开发人员、测试人员、支持人员、用
21、户等,都可能进行缺陷的识别。在缺陷识别阶段的主要活动有:(1)记录:在缺陷识别阶段,需要记录缺陷的相关信息,包括发现缺陷时的支持数据信息和环境配置信息,如被测系统的硬件信息、软件信息、数据库信息和平台信息等。 (2)分类:在缺陷识别阶段,需要对缺陷相关的一些重要属性进行分类,主要包括发现缺陷时执行的项目活动、引起缺陷的原因、缺陷是否可以重现、缺陷发现时的系统状态、缺陷发生时的征兆等。 (3)确定影响:根据缺陷发现者的经验和预期,判断缺陷可能会造成的影响,如缺陷的严重程度、优先级以及缺陷对成本、进度、风险、可靠性、质量的影响等。,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段缺陷生命
22、周期的各个阶段及其中的各项活动描述如下:,2)调查阶段经过缺陷识别后,需要对每个可能的缺陷进行调查,以发现可能存在的其他问题并寻找相关的解决方案。在缺陷调查阶段的主要活动包括:在缺陷识别阶段的主要活动有:(1)记录:在缺陷调查阶段,需要记录相关的数据和信息,并对缺陷识别阶段记录的信息进行更新。缺陷调查阶段记录的信息包括缺陷调查者的信息、缺陷调查的计划开始时间、计划结束时间、实际开始时间、实际结束时间、调查工作量等。(2)分类:在缺陷调查阶段,需要对缺陷进行分类的属性包括缺陷引起的实际原因、缺陷的来源、缺陷的具体类型等。此外,对缺陷识别阶段中的分类信息,要进行检查和更新。(3)确定影响:根据缺陷
23、调查阶段的分析结果,对缺陷识别阶段的影响进行分析和更新。,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段缺陷生命周期的各个阶段及其中的各项活动描述如下:,3)改正阶段根据缺陷调查阶段中得到的结果和信息,就可以采取相应的改正措施解决缺陷问题:(1)进行缺陷修复。需要进行相关的回归测试和再测试,避免由于缺陷的修复而影响原有的功能。(2)针对开发过程和测试过程的改进建议,以避免在将来的项目中重复出现相似的缺陷。在缺陷改正阶段的主要活动包括:(1)记录:在缺陷改正阶段,需要记录改正缺陷的相关支持数据信息,包括需要修改的条目、需要修改的模块、修改的描述、修改的负责人、计划修改开始的时间、计划
24、修改完成的时间等。(2)分类:当合适的修改计划或者活动确定以后,需要对下面的信息进行分类:缺陷修复的优先级(例如:是马上修改、延期修改还是不修改)、缺陷的解决方法、缺陷修复的改正措施等。(3)确定影响:对在缺陷识别阶段、缺陷调查阶段中得到的影响分析进行合适的检查,并在需要的时候进行更新。,5.2软件缺陷的生命周期,2. 软件缺陷生命周期的四个阶段缺陷生命周期的各个阶段及其中的各项活动描述如下:,4)总结阶段总结阶段是缺陷生命周期中的最后一个阶段,这一阶段的主要活动包括:(1)记录:在缺陷总结阶段,需要对一些支持数据信息进行记录,例如:缺陷关闭时间、文档更新完成时间等。(2)分类:针对缺陷进行确
25、认测试和相关的回归测试以后,就可以将缺陷的状态进行分类,例如:关闭状态、延迟状态或者合并到其他项目中去等。(3)确定影响:对在缺陷识别阶段、缺陷调查阶段和缺陷改正阶段中得到的影响分析进行合适的检查,并在需要的时候进行更新。,5.2软件缺陷的生命周期,2.缺陷在生命周期中的状态,缺陷在其生命周期的不同阶段会处于不同的状态,最理想的一种状态是软件缺陷被打开、解决和关闭。但这种状态在实际工作中是很难做到的,因此,软件缺陷在其生命周期中的状态要复杂得多,如图5-3所示:,5.2软件缺陷的生命周期,2.缺陷在生命周期中的状态,图5-3缺陷在生命周期中的状态,5.2软件缺陷的生命周期,2.缺陷在生命周期中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术 ppt 课件
链接地址:https://www.31ppt.com/p-1913390.html