软件缺陷测试和测试评估.ppt
《软件缺陷测试和测试评估.ppt》由会员分享,可在线阅读,更多相关《软件缺陷测试和测试评估.ppt(76页珍藏版)》请在三一办公上搜索。
1、软件测试与测试技术讲座由安博测试空间技术中心http:/,第16讲:软件缺陷测试和测试评估,在程序中存在的软件缺陷如文档缺陷、代码缺陷、测试缺陷、过程缺陷,软件缺陷导致系统或部件不能实现其功能,引起系统的失效。对软件缺陷测试和测试评估是不可缺少的、相当重要的。在本讲中您能了解如下主要知识点:软件缺陷的概述;软件缺陷的生命周期;软件缺陷的跟踪管理;软件测试的评估。,161 软件缺陷的概述,1611 软件缺陷的定义 缺陷(bug)是指程序中存在的错误如语法错误、拼写错误或者是一个不正确的程序语句,缺陷可能出现在设计中,甚至在需求、规格说明或其他的文档中。软件缺陷导致系统或部件不能实现其功能,引起系
2、统的失效。缺陷定义为:软件没有达到产品说明书表明的功能;程序中存在语法错误;程序中存在拼写错误;程序中存在不正确的程序语句;软件出现了产品说明书中不一致的表现;软件功能超出产品说明书的范围;软件没有达到用户期望的目标;测试员或用户认为软件的易用性差。,按照定义,将缺陷分为文档缺陷、代码缺陷、测试缺陷、过程缺陷。文档缺陷 文档缺陷是指对文档的静态检查过程中发现的缺陷,通过测试需求分析、文档审查对被分析或被审查的文档发现的缺陷;代码缺陷 代码缺陷是指对代码进行同行评审、审计或代码走查过程中发现的缺陷;测试缺陷测试缺陷是指由测试执行活动发现的被测对象(被测对象一般是指可运行的代码、系统,不包括静态测
3、试发现的问题)的缺陷,测试活动主要包括内部测试、连接测试、系统集成测试、用户验收测试,测试活动中发现的缺陷为测试缺陷;过程缺陷 过程缺陷是指通过过程审计、过程分析、管理评审、质量评估、质量审核等活动发现的关于过程的缺陷和问题。过程缺陷的发现者一般是质量经理、测试经理、管理人员。,1612软件缺陷的特征 软件缺陷的特征主要有如下7点内容:单一准确每个报告只针对一个软件缺陷。在一个报告中报告多个软件缺陷的弊端是常常会导致缺陷部分被注意和修复,不能得到彻底的修正。可以再现(要求软件缺陷具有精确的步骤)提供缺陷的精确操作步骤,容易看懂再现这个缺陷。完整统一提供完整、前后统一的软件缺陷的步骤和信息如:图
4、片信息,Log文件等。短小简练通过使用关键词,使软件缺陷的标题的描述简练,准确解释产生缺陷的现象。如“主页”、“导航栏”、“分辨率”等关键词。特定条件软件功能在通常情况下没有问题,而是在某种特定条件下会存在缺陷,所以软件缺陷描述不要忽视特定条件如特定的操作系统、浏览器或某种设置等。补充完整测试人员发现bug 要保证它被正确的报告,并且得到应有的重视,继续监视其修复的全过程。不做评价在软件缺陷描述不要带有个人观点,对开发人员进行评价。软件缺陷报告是针对产品、针对问题本身,将事实或现象客观地描述出来就可以,不需要任何评价或议论。,软件缺陷的类型 软件缺陷的类型分为:功能类、性能类、系统/模块接口类
5、、用户界面类、数据处理类、流程类、提示信息类 软件包类、建议类、常识类、文档。软件缺陷类型请参见清华大学出版社软件测试与测试技术(2008.11)第1版第16章表16-1。,1614 BUG 状态 缺陷状态是指缺陷通过一个跟踪修复过程的进展情况。BUG 状态分为:激活或打开(Active or Open):问题还没有解决,存在源代码中,确认“提交的缺陷”,等待处理,如新报的缺陷。已提交:测试员发现 BUG 后提交到 BUG 管理系统中的状态(初始状态)。已修改(Fixed or Resolved):已被程序员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证提交到 BUG 管理
6、系统中的状态。不修改(保留):程序员或项目经理根据需求分析、概要设计、详细设计说明书等上的要求经过考虑后决定对 BUG 不进行修改(由于技术原因或第三者软件的缺陷,开发人员不能修复的缺陷),其 BUG 的状态为不修改。延迟:根据目前项目进程或计划等情况,暂时延期的状态,缺陷可以在下一个版本中解决。待讨论:需要进行讨论后才能决定是否需要修改的 BUG 的状态。已验证:已经解决的并经过测试员复测的 BUG 的状态。关闭:完全解决了,只供以后备查的状态 重新打开:测试人员验证后,还依然存在的缺陷,等待开发人员进一步修复,重新打开以前关闭的 bug 状态(在 bug 工具中,可以自己定制适合项目的状态
7、项目,比如废除,拒绝等)。,1615 BUG 的等级划分与优先级 1BUG 的等级划分 BUG 的等级划分为4级:严重:死机、数据丢失、主要功能完全丧失、用户数据受到破坏、系统崩溃等错误。修改优先级为最高,该级别需要程序员立即修改。较高:统的主要功能部分丧失、数据不能保存,导致严重的问题或致命的错误。修改优先级为较高,该级别需要程序员尽快修改。一般:系统的部分功能没有完全实现,但不影响用户的正常使用,如提示信息不太准确或用户界面差、操作时间长等一些问题。修改优先级为中,该级别需要程序员修改。轻微:微小的问题,对功能几乎没有影响,产品及属性仍可使用,如有个错别字、操作者不方便。修改优先级为低,该
8、级别需要程序员修改或不修改。,2BUG 的优先级 BUG 的优先级一般与 BUG 等级挂钩分为4级:1级(严重):立即解决。缺陷导致系统几乎不能使用或测试不能继续,需立即修复。2级(较高):缺陷严重,影响测试,需要优先考虑。3级(一般):正常排队缺陷需要正常排队等待修复。4级(轻微):缺陷可以在开发人员有时间的时候被纠正。,1616 软件缺陷的缺陷标识种类和属性1缺陷标识 缺陷标识是指是标记某个缺陷的唯一的表示,可以使用数字序号表示,如表16-2所示。缺陷标识是按照问题的复杂度来排列的,类型10到40是比较简单的编码缺陷,类型50到100是比较复杂的设计缺陷。,2 软件缺陷的种类 软件缺陷的种
9、类有如下15点内容:(1)功能不正常;(2)软件在使用上不方便;(3)软件的结构未做良好规划;(4)功能不充分;(5)与软件操作者的互动不良;(6)使用性能不佳;(7)未做好错误处理;(8)边界错误;(9)计算错误;(10)使用一段时间所产生的错误;(11)控制流程的错误;(12)在大数据量压力之下所产生的错误;(13)在不同硬件环境下产生的错误;(14)版本控制不良所产生的错误;(15)软件文档的错误。,3 软件缺陷的属性 软件缺陷的属性主要有如下10点内容:(1)缺陷标识;(2)缺陷描述与缺陷注释;(3)缺陷类型;(4)缺陷严重程度;(5)缺陷产生可能性;(6)缺陷的优先级;(7)缺陷状态
10、;(8)软件缺陷的起源;(9)软件缺陷的来源;(10)缺陷根源。,1617 缺陷的起源来源和根源 1缺陷的起源 缺陷起源是指缺陷引起的故障或事件第一次被检测到的阶段,给软件带来缺陷的原因有很多,需求、构架、设计、编码、测试、用户这里列举几点:需求:参与人员的过度自信,在需求阶段产生的错误;构架:人员之间的沟通交流不够,交流上有误解或者根本不进行交流,在系统构架设计阶段产生的错误;设计:工期短,任务重,时间压力大,在程序设计阶段产生的错误;编码:在编码阶段程序设计本身有错误产生的错误;测试:在测试阶段发现的缺陷;用户:在用户使用阶段发现的错误。,2缺陷的来源 缺陷的来源是指缺陷所在的地方如需求说
11、明书、设计文档、系统集成接口、数据流(库)、程序代码等。需求说明书:需求说明书的错误或不清楚引起的问题;设计文档:设计文档描述不准确。和需求说明书不一致的问题;系统集成接口:系统个模块参数不匹配、开发组之间缺乏协调引起的缺陷;数据流(库):由于数据字典、数据库中的错误引起的缺陷;程序代码:纯粹在编码中的问题所引起的缺陷。,3 缺陷的根源 缺陷的根源是指造成软件错误的根本因素如测试策略、过程工具和方法、团队/人、缺乏组织和通讯、硬件、软件、工作环境等。测试策略:错误的测试范围,误解测试目标,超越测试能力等;过程工具和方法:无效的需求收集过程,果实的风险管理过程,不使用的项目管理方法,没有估算规程
12、,无效的变更控制过程等;团队/人:项目团队职责交叉,缺乏培训。没有经验的项目团队,缺乏士气和动机不纯等;缺乏组织和通讯:缺乏用户参与,职责不明确、管理失败等;硬件:硬件配置不对、缺乏、或处理器缺陷导致算术精度丢失,内存溢出等;软件:软件设置不对、缺乏,或操作系统错误导致无法释放资源,工具软件的错误,编译器的错误等;工作环境:组织机构调整,预算改变,工作环境恶劣。,162软件缺陷的生命周期,1621 软件缺陷的生命周期 软件缺陷的生命周期是指一个软件缺陷被发现、报告到这个缺陷被修改、验证直至最后关闭的完整过程。软件缺陷的生命周期分为简单的软件缺陷生命周期和复杂的软件缺陷生命周期。1 简单的软件缺
13、陷生命周期 简单的软件缺陷生命周期 发现打开:测试人员找到软件缺陷并将软件缺陷提交给开发人员;打开修复:开发人员再现、修改缺陷,然后提交测试人员去验证;修复关闭:测试人员验证修改过的软件,关闭已不存在的缺陷。发现打开修复关闭。这是一种理想的状态,在实际的工作中是很难有这样的顺利的,需要考虑的各种情况都还是非常多的。,2 复杂的软件缺陷生命周期 复杂的软件缺陷生命周期 打开一个软件缺陷:对软件缺陷进行bug审查,是程序员代码问题还是设计问题?是立即修改还是可以延期修改?审查决定软件缺陷是否应该修改;审查可能认定软件缺陷应该在将来的同一时间考虑修改,但是在该版本软件中不修改。一个软件缺陷看是否清楚
14、可重现,如果不能重现,就是缺少信息,需要返回到打开状态;如果能够重现,就进行修正,修正后关闭,进行回归测试。缺陷生命周期过程是测试员、程序员、管理者一起参与、协同测试工作的过程。缺陷状态不仅表示出缺陷被修改、终结的进程,同时还标明了测试员、程序员、管理者的职责。,1622 软件缺陷生命状态的定义 每一个软件缺陷都有6个生命状态:打开(Open)、缺陷修改(Working)、缺陷验证(Verify)、缺陷删除(Cancel)、缺陷关闭(Close)、缺陷延期(Defer)。它们的基本定义是:Open态-缺陷初试状态,测试员报告一个缺陷,缺陷生命周期开始;Working态-缺陷修改状态,程序员接收
15、缺陷,正在修改中;Verify态-缺陷验证状态,程序员修改完毕,等待测试员验证;Close态-缺陷关闭状态,测试员确认缺陷被改正,将缺陷关闭;Cancel态-缺陷删除状态,测试员确认不是缺陷,将缺陷置为删除状态(不做物理删除);Defer态-缺陷延期状态,管理者确认缺陷需要延期修改或追踪,将缺陷置为延期状态;上述打开态、缺陷修改态、缺陷验证态,称为缺陷的活动态;缺陷关闭态、缺陷删除态、缺陷延期态,称为缺陷的终结态。软件缺陷的生命周期示意图如图16-1所示。,图16-1中:典型的缺陷生命历程 典型的缺陷生命历程有三种过程:打开态缺陷修改态缺陷验证态打开态/缺陷关闭态/缺陷删除态;打开态缺陷关闭态
16、/缺陷删除态;打开态缺陷延期态。,2缺陷生命状态的控制与转换(1)当测试员报告一个缺陷,程序员接受打开(Open)态的缺陷,缺陷生命周期开始,为打开态;打开态缺陷修改态缺陷验证态打开态/缺陷关闭态/缺陷删除态;程序员接受打开态的缺陷,修改中可将其置为缺陷修改态、修改完毕可置为缺陷验证态;测试员验证缺陷验证态的缺陷,确认修改结果正确,可将打开态置为缺陷关闭态;确认不是缺陷,可将打开态置为缺陷删除态;认修改结果不正确,可以将缺陷验证态置为打开态,要求程序员重新修改;打开态缺陷关闭态/缺陷删除态。(2)当测试员发现自己误报或重报了缺陷,可直接将打开态置为缺陷删除态;当测试员发现一个缺陷由于其它缺陷的
17、修改而随之消失,可直接将打开态缺陷置为缺陷关闭态;打开态缺陷延期态。(3)管理者确认缺陷需延期修改或追踪,可将打开态缺陷置为缺陷延期态;此外,终结态必要时可以重新打开:在适当的时候,管理者可将缺陷延期态改为打开态,要求程序员修改;在复查缺陷处理结果时,发现缺陷关闭态或缺陷删除态的处理有误,测试员可以将缺陷关闭或缺陷删除态重新置为打开态,要求程序员重新修改;一般在测试初期,活动态的缺陷数会急剧上升,随着程序员、测试员的处理逐渐转为终结态。当所有软件缺陷的状态都转变为终结态,且在一段时间内没有被打开,也没有新的缺陷发生,即意味着测试可以结束或告一段落。,16.3 软件缺陷的跟踪管理,1631 软件
18、缺陷测试报告 软件中不可能没有缺陷,发现很多的缺陷对于测试工作来说,是件很正常的事。如果,测试中发现缺陷,需要报告。1报告软件缺陷的原则(1)尽快报告软件缺陷(2)有效地描述软件缺陷 有效的软件缺陷描述要求如下:简单与短小;明确指明错误类型;单一;使用IT业界惯用的表达术语和表达方法。(3)在报告软件缺陷时不做任何评价,2缺陷跟踪系统报告的信息 任何一个缺陷跟踪系统的核心都是“软件缺陷报告”,缺陷跟踪系统报告的详细信息请参见清华大学出版社软件测试与测试技术(2008.11)第1版第16章表16-5所示。,3跟踪软件缺陷手工报告记录 显然,在软件测试工作中,每个测试用例的结果都必须进行记录。如果
19、使用软件缺陷跟踪系统,那么测试工具将自动记录软件缺陷的相关信息。如果测试是采用手工记录和跟踪软件缺陷,那么有关软件缺陷的信息可以直接记录在相应的文档中。文档如表16-6所示。,4 IEEE软件缺陷报告模板 ANS/IEEE8291998标准定义了一个称为软件缺陷报告的文档,用于报告“在测试期间发生的任何异常事件”。模板标准如表16-7所示。,1632 缺陷类别 缺陷类别划分为5类:A 类、B 类、C类、D 类、E 类。1A 类 A类是由程序执行引起的死机、非法退出、死循环。数据库发生死锁;数据库设计未达到范式的要求或需求规格说明的水平;数据功能实现错误;与数据库连接错误;数据通讯错误。2B 类
20、 B类是由程序语法引起的错误。因错误操作迫使程序中断。数据库的表、业务规则、缺省值未加完整性。3C 类 C类是由操作界面引起的错误。打印内容、格式错误;简单的输入限制未放在前台进行控制;删除操作未给出提示;数据库表中有过多的空字。4D类 D类是由界面不规范引起的错误。辅助说明描述不清楚;输入输出不规范;长操作未给用户提示;提示窗口文字未采用行业术语;可输入区域和只读区域没有明显的区分标志。5E类 E类是由遗漏部分功能引起的错误 实现功能与需求不相吻合。,1633缺陷的分离和重现 软件缺陷的分离和再现是考验测试人员专业技能,测试人员要想有效报告软件缺陷,就要对软件缺陷以明显、通用和再现的形式进行
21、描述。1缺陷的分离 缺陷分离的方法主要有:确保所有的测试步骤都被记录(记录每一个测试步骤、每一件工作);注意时间和运行条件上的因素(查找时间依赖和竞争条件的问题(slow软盘、quick硬盘、时间发生次序);注意软件的边界条件、内存容量和数据溢出的问题;注意事件发生次序导致的软件缺陷;考虑资源依赖性和内存、网络、硬件共享的相互作用;注意系统的压力条件;不能忽视硬件。与软件不同,硬件不按预定方式工作。,2缺陷的重现 缺陷的重现要采取繁杂的步骤才能再现,或者根本无法再现。开发人员有时可以根据相对简单的错误信息就能找出问题所在。因为开发人员熟悉代码,因此看到症状、测试用例步骤和分离问题的过程时,可能
22、得到查找软件缺陷的线索。一个软件缺陷的再现问题有时需要小组的共同努力。如果软件测试人员尽最大努力分离软件缺陷,也无法表达准确的再现步骤,那么仍然需要记录和报告软件缺陷。缺陷重现的方法同于缺陷分离的方法。,1634软件缺陷跟踪系统 软件缺陷跟踪系统(Bug Tracking System)是用于记录、跟踪、并归类处理软件开发过程出现的 Bug 和硬件系统中存在的缺陷(defect)。集中管理软件测试过程中所发现缺陷的数据库程序,可以通过添加、修改、排序、查寻、存储操作来管理软件缺陷。目的是:保持进度、保证质量,提高整个机构的生产效率。在测试工作中应用软件缺陷管理系统具有以下优点:保持高效率的测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 缺陷 测试 评估
链接地址:https://www.31ppt.com/p-5636435.html