您好,欢迎访问三七文档
《软件测试技术及实践》詹慧静陈燕段相勇第5章缺陷报告和测试评估了解软件缺陷的基本知识。了解软件缺陷的生命周期。熟练掌握报告软件缺陷。了解重现软件缺陷含义及常用的分析技术。了解软件缺陷跟踪管理。了解软件缺陷的评估。了解测试评审。本章学习目标对于软件缺陷,需要学习以下内容:•软件缺陷的定义与描述。•软件缺陷的种类。•软件缺陷的属性。5.1软件缺陷5.1.1软件缺陷的定义与描述1.软件缺陷的定义软件缺陷是指软件开发过程的各个阶段中存在的不完美甚至存在错误的地方,这些不完美和错误造成了软件缺陷,如编码过程中出现的语法、拼写错误或者存在不正确的程序语句等。简单地说,软件缺陷就是指在软件(包括数据、程序、文档)之中存在的那些不希望或不能接受的、会导致软件产生质量问题的偏差。在行业定义中,软件缺陷通常又被称为defect或bug,是指软件或程序中存在的某种破坏正常运行能力的问题和错误,其存在会导致软件产品在某种程度上不能满足用户的需要。从软件内部看,缺陷是软件在开发或维护过程中存在的问题或错误。从软件外部看,缺陷是系统所需要实现的某种功能的失效或违背。5.1.1软件缺陷的定义与描述软件缺陷是影响软件质量的关键因素之一,发现并排除软件缺陷是软件生存周期中的一项重要工作。每一个开发软件的组织都必须妥善处理软件中存在的缺陷,它不仅关系到软件的质量,更关系到软件运用在工业生产中是否会导致安全隐患。按照一般的定义,只要符合下面规则中的一个,就可叫做软件缺陷:(1)软件未达到软件需求说明书中规定的功能。(2)软件超出软件规格说明书中指明的范围。(3)程序中存在语法错误。(4)程序没有达到用户的期望。(5)程序中存在拼写错误。(6)软件运行出现错误。(7)运行缓慢,用户体验差,最终用户认为软件使用效果不好。(8)软件语言描述过于技术化,非专业人员无法理解。5.1.1软件缺陷的定义与描述2.软件缺陷的描述软件缺陷的描述是报告软件缺陷的基本部分,那么,当发现软件缺陷后,应当如何描述软件缺陷呢?一个好的软件缺陷描述,需要使用简单、准确和专业的语言来呈现缺陷的本质。在描述软件缺陷时,不能信息含糊不清,从而误导开发人员。准确描述软件缺陷是非常重要的,这是因为:(1)清晰准确的软件缺陷描述可以提高与开发人员的沟通效率。(2)提高软件缺陷修复的速度,使每一个小组能够有效地工作。(3)提高开发人员对测试人员的信任度,并得到开发人员对软件缺陷的有效响应。(4)加强开发人员、测试人员和管理人员的协同工作。5.1.1软件缺陷的定义与描述2.软件缺陷的描述适用于有效描述软件缺陷的规则主要有以下几个:(1)单一和准确。每个缺陷报告只针对一个软件缺陷。若在一个报告中报告多个软件缺陷,可能会导致其中部分缺陷被忽略,而不能得到修正。(2)可以再现缺陷。提供重现缺陷的精确操作步骤,使开发人员容易看懂,只有再现了缺陷,才能正确地修复缺陷。(3)描述要完整。提供完整的软件缺陷的步骤和信息,例如图片信息、报错截图、日志文件等。(4)短小简练。通过使用关键词,既可以使软件缺陷的标题短小简练,又能准确解释产生缺陷的现象。(5)描述特定条件。许多软件功能要在某种特定条件下才会产生缺陷,所以软件缺陷描述不能忽视对这些特定条件(如特定的操作系统、浏览器或某些设置等)的描述,从而帮助开发人员发现产生软件缺陷的线索。(6)补充完善。从发现缺陷那一刻起,测试人员的责任就是保证该缺陷及时得到正确的报告,并且受到应有的重视,继续监视其修复的全过程。(7)描述但不做评价。在软件缺陷描述中不要带有个人观点对开发人员进行评价。软件缺陷报告是针对问题本身,只需将缺陷事实或现象客观地描述出来,而不能进行评价或议论。5.1.2软件缺陷的种类1.从开发者角度划分从开发者角度将软件缺陷分为需求缺陷、设计缺陷、文档缺陷、代码缺陷、测试缺陷、过程缺陷、计算错误和边界错误。(1)需求缺陷包括需求有误、需求逻辑错误、需求不完备、需求文档描述问题、需求更改。(2)设计缺陷包括设计不合理、设计文档描述出现问题、设计变更带来的问题。(3)文档缺陷指在文档的静态检查过程中发现的缺陷,例如通过测试需求分析及文档审查发现的文档缺陷。(4)代码缺陷指对代码进行同行评审、审计或代码检查过程中发现的缺陷。(5)测试缺陷指在测试执行活动中发现的被测对象(一般是指可运行的代码或软件系统)的缺陷,测试缺陷不包括静态测试中发现的问题。(6)过程缺陷指通过过程审计、过程分析、管理评审、质量评估、质量审核等活动发现的关于开发过程的缺陷和问题。过程缺陷的发现者一般是质量经理、测试经理及管理人员等。(7)计算错误指代码中出现的计算错误,例如使用了错误的运算公式、累加器未进行初始化等。(8)边界错误指的是输入边界和输出边界或输入等价类边界的错误,这是最容易发生的一类错误。5.1.2软件缺陷的种类1.从开发者角度划分从开发者角度例如,程序本身无法处理超越边界所导致的错误,由于开发人员在声明变量或使用边界范围时不小心引起的错误等。下面是一个典型的缓冲区溢出可能导致攻击的错误:#includestdio.h;#includestdlib.h;voidwhy_here(void)//这个函数没有任何地方调用过{printf(whyuhere!n\\n);printf(youaretrappedhere\\n);system(pause);_exit(0);}intmain(intargc,char*argv\[\]){intbuff\[1\];buff\[3\]=0x004113c0;//buff\[3\]=0x0041111d;buff\[3\]=why_here;system(pause);return0;}5.1.2软件缺陷的种类1.从开发者角度划分从开发者角度执行结果如下:从图中可以看出,虽然在代码中并没有调用why_here函数,但why_here函数还是被执行了,这是因为main函数里面赋值时发生溢出,数组实际地址变成0x0041111d,就会跳转到why_here执行。只需要查看调试过程的汇编结果和程序执行过程中的监视窗口,不难发现其buff溢出,如果这段代码的是恶意代码,那么将会对系统造成严重的损害。5.1.2软件缺陷的种类2.从使用者角度划分从使用者角度,可以将软件缺陷分为功能未满足用户需求、使用不方便、交互性不好、使用性能不佳、未做好错误处理、控制流程错误、对硬件兼容性差及文档错误。1)功能不能满足用户需求:功能不能满足用户需求包括功能不正常、所提供的功能不完善或其它方面的功能问题5.1.2软件缺陷的种类2.从使用者角度划分(1)功能不正常:简单地说,就是软件应该提供的功能,在使用上并不符合产品设计规格说明书中规定的要求,或是运行结果达不到预期设计,或是根本无法使用,这类错误常常会发生在测试过程的初期和中期。例如,在用户接口上所提供的选项及动作,使用者操作后没有反应。(2)所提供的功能不完善:与功能不正常不同,软件功能不完善指的是软件提供的功能能运行,甚至软件的功能运行结果也符合设计规格的要求,但对于使用者来说却认为该功能是不完整的,是没有完全满足他们需求的。系统测试人员在测试结果的判断上,必须从使用者的角度进行思考,即从用户体验出发,来判断提供的功能是不是真正满足使用者的需求。(3)其它功能方面的问题:包括是不是有重复的功能、多余的功能等。5.1.2软件缺陷的种类2.从使用者角度划分2)软件在使用上不方便:如果一个软件,使用者不知如何使用或难以使用,就一定是在软件产品的设计上存在问题。一个好用的软件,会尽量做到让使用者容易上手,导航清晰,易于操作,使用方便。3)与操作者交互不良:一个好的软件必须与操作者之间可以实现正常交互。在操作者使用软件的过程中,软件必须很好地响应操作者。例如在浏览网页时,如果操作者在某一网页填写信息,但是输入的信息不足或有误。当点击“确定”按钮后,网页此时提示操作者输入信息有误,却并未指出错误的哪里,操作者只好回到上一页重新填写,或直接放弃离开。产生这个问题的原因是在软件与操作者互动方面未做完整的设计。4)使用性能不能满足用户的需求:被测软件功能正常,但性能不能满足用户需求,如事务处理速率、并发量、数据量、压缩率、响应时间等不能满足用户的使用要求。此类缺陷通常是由于开发人员采用了错误的解决方案,或使用了不恰当的算法导致的。如大数据量并发压力测试对于分布式软件系统而言是必须进行的,因为分布式软件系统对并发量、稳定性的要求远比其它软件要高。5.1.2软件缺陷的种类2.从使用者角度划分5)未做好错误处理:软件除了避免出错之外,还要做好错误处理。许多软件之所以会产生错误,就是因为程序本身对于错误和异常处理的缺失。例如被测软件读取即插即用移动设备时,移动设备插上时程序正常读取,但刚好所读取的盘已被移出时。当程序读取这个盘时未做好处理,程序发现问题报错,此时操作系统为保护系统自身只能中断程序执行。由此可见一个好的软件系统必须能对各种错误及异常情况进行处理。6)控制流程错误:软件控制流程的好坏考验开发人员对软件设计是否严谨,软件各状态间转变是否合理,要依据流程控制。例如导出数据表格功能,当从某个表单导出数据时,选择好要导出的数据点击导出后,软件就将数据导出了,可是用户不知道导出的文件在何处,用户希望自己定义导出的目录。而软件未向用户提供可以更改导出目录的选择,这就是软件流程控制不完整的错误问题。5.1.2软件缺陷的种类2.从使用者角度划分7)对不同硬件兼容性差:软件安装在某些硬件环境下不能正常工作。例如,在开发程序时使用的是Intel的处理器,程序打包生成后放在AMD处理器下运行会报错。8)软件文档错误:影响发布和维护的文档包括注释、用户手册、设计文档等。软件文档错误除了软件所附带的使用手册、说明文档及其它相关的软件文档内容错误之外,还包括软件使用接口上的错误文字和错误用语、产品需求设计、设计说明书等的错误。错误的软件文档除了降低产品质量外,还会误导用户。5.1.3软件缺陷的属性为了便于跟踪软件缺陷,避免遗漏严重的软件缺陷,需要定义软件缺陷的属性,为开发人员和测试人员提供修复缺陷的参考。软件缺陷的主要属性有缺陷标识、缺陷类型、缺陷严重程度、缺陷产生的可能性、缺陷的优先级、缺陷状态、缺陷起源、缺陷来源和缺陷根源等。1.缺陷标识缺陷标识是对某个缺陷进行标识的唯一标识符,通常用数字序号表示,方便对缺陷进行索引等管理操作。2.缺陷类型所谓缺陷类型是指根据缺陷的自然属性进行划分得到的不同缺陷种类。常见的软件缺陷类型如下表所示:5.1.3软件缺陷的属性缺陷类型描述功能缺陷能够影响各种系统功能、逻辑的缺陷接口缺陷与其他模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷验证缺陷提示的错误信息或不合适的数据验证等缺陷软件包缺陷因为软件配置库、软件变更管理或软件版本控制而引发的错误文档缺陷文档(包括注释、用户手册、设计文档等)的缺陷影响了软件的发布和维护算法缺陷算法错误用户界面缺陷包括对用户界面、人机交互特性(如屏幕格式、结果输出格式、用户输入灵活性等)产生影响的缺陷性能缺陷软件的性能(如执行时间、事务处理速率等)不满足系统可测量的属性值准则缺陷不符合各种标准(如编码标准、设计符号等)的要求5.1.3软件缺陷的属性3.缺陷严重程度缺陷严重程度是指因为软件缺陷而引发的故障对软件产品的影响程度,其判断应该依据软件最终用户的观点。通常可将缺陷严重程度分为致命(Fatal)、严重(Critical)、一般(Major)、较小(Minor)几个级别,如下表所示。程度级别描述致命系统的某个主要功能完全丧失,用户数据受到破坏,系统崩溃、悬挂、死机或者危机人身安全严重系统的主要功能部分丧失,数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响一般系统的次要功能没有完全实现,但不影响用户的正常使用。例如:提示信息不太准确或用户界面差、操作时间长等一些问题较小给操作者带来不方便或遇到麻烦,但它不影响功能的操作和执行,如
本文标题:软件测试技术第5章
链接地址:https://www.777doc.com/doc-7925925 .html