


单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,200,6,年,5,月,1,日,中科院计算所培训中心,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件测试技术与测试实训教程,黎连业 王华 李龙 黎照,北京:机械工业出版社,2012.05,第,2,讲:,第,2,章 软件测试的质量要求,软件测试是软件工程的重要组成部分,测试工作的质量直接影响软件产品的生命力软件测试质量的重点是测试成熟度模型、质量要求和测试流程细则本章重点讨论以下内容:,软件测试成熟度模型,;,软件测试的质量,;,软件测试人员的职责,软件测试流程细则要求2,1,软件测试成熟度模型,2,1,1,软件测试成熟度模型,软件测试成熟度模型有三个这三个模型是:,TCMMTesting Capability Maturity Model,1996,年,,Testing Computer Software,会议上,Rodger,和,Susan Burgess,提出TSMTestability Support Model,1996,年,,David,Gelperin,和,Aldin,Hayashi,提出。
TMMTesting Maturity Model,1996,年,,IIIene,Burnsein,等提出1,TCMM,软件测试成熟度模型,TCMM,定义了,5,个级别,与,CMM,的级别设置完全一样第一级:初始级;,第二级:可重复级;,第三级:已定义级;,第四级:受管理级;,第五级:优化级2,TSM,软件测试成熟度模型,TSM,有三个级别分别是:,第一级:弱(,Weak,)可测性支持,很少测试问题被提及;,第二级:基本(,Basic,)可测性支持,基本的测试问题被提及;,第三级:强(,strong,)可测性支持,所有测试问题被提及TSM,定义了,6,个,KSA(Key,Support Area),,这,6,个,KSA,是:,测试友好的基础构架;,顾及测试的项目计划;,测试友好的产品信息;,顾及测试的软件设计;,测试件;,测试环境设计TSM,从测试组织的外部而非内部本身来考察测试的成熟性,这是他区别于另外两个测试模型的地方3,TMM,软件测试成熟度模型,TMM,(,Testing Maturity Model,)定义了,5,个级别第一级 初始级;,第二级 定义级;,第三级 集成级;,第四级 管理和测量级;,第五级 优化预防缺陷和质量控制级。
这三个模型是各有侧重的关于测试的成熟度模型而当前流行的是,TMM,2,1,2 TMM,软件测试成熟度模型简要介绍,1,TMM,模型框架,TMM,定义了五个成熟度等级,每个等级代表着一个成熟的测试过程TMM,模型框架如图,2-1,所示2,每个等级的成熟度目标,每个等级的成熟度目标如图,2-2,所示初始级:,测试是一个混乱无序的过程,几乎没有定义并且与调试没有区别软件开发过程中缺乏测试资源,工具以及训练有素的测试人员测试是代码完成后以随意方式进行的测试与调试相互交错以找出软件的缺陷测试的目标是表明软件奏效发行的软件产品没有质量保证,缺乏资源、工具和合适的工作人员定义级:,TMM,的定义级中,测试己具备基本的测试技术和方法,软件的测试与调试己经明确地被区分开制订测试与调试目标,启动测试计划过程,制度化基本的测试技术和方法,集成级:,软件测试的过程及质量对软件产品质量有直接影响由于测试往往是在时间紧,压力大的情况下所完成的一系列复杂的活动,因此应由训练有素的专业人员组成测试组测试组要完成与测试有关的多种活动,包括负责制订测试计划,实施测试执行,记录测试结果,制订与测试有关的标准和测试度量,建立铡试数据库,测试重用,测试跟踪以及测试评价等。
制订技术培训计划,软件生命周期测试,控制和监视测试过程,管理和测量级:,在管理和测量级,测试活动是完全被管理的;有策划、有指导、人员具备技能、有组织、可控制管理层、测试者们定义、收集、分析和使用测试相关的度量数据测试活动的定义正式扩展到整个生命周期中的审查活动,同行评审和审查作为基于实现的测试活动的补充,它们被认为是质量控制程序,用以移除软件产品的缺陷管理和测量级有,3,个要实现的成熟度目标,:,(1),建立组织范围内的评审程序,(2),建立测试过程的测量程序,(3),软件质量评价,优化预防缺陷和质量控制级:,测试首先要保证软件产品满足规格说明书、可靠,并对它的可靠性有一种确定的信心其次,测试要处理缺陷和预防缺陷,这点通过收集和分析缺陷数据来实现由于本级的测试活动可重复、已管理、已定义和己测量的,因此软件组织能够优化调整和持续改进测试过程测试过程的管理为持续改进产品质量和过程质量提供指导,并提供必要的基础设施优化,预防缺陷和质量控制级有,3,个要实现的成熟度目标,:,(,1,)应用过程数据预防缺陷这时的软件组织能够记录软件缺陷,分析缺陷模式,识别错误根源,制订防止缺陷再次发生的计划,提供跟踪这种括动的办法,并将这些活动贯穿于全组织的各个项目中。
2,)质量控制在本级,软件组织通过采用统计采样技术,测量组织的自信度,测量用户对组织的信赖度以及设定软件可靠性目标来推进测试过程3),优化测试过程在测试成熟度的最高级,己能够量化测试过程2,2,软件测试的质量,2.2.1,软件质量属性,软件质量是许多质量属性的综合体现,人们通过改善软件的各种质量属性而提高软件的质量软件的质量属性很多,软件工程教科书以及,CMM,和,ISO9001,都作了明确的介绍如正确性、精确性,健壮性、可靠性、容错性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等软件质量属性可分为两大类:“功能性”与“非功能性”1.,功能性质量因素,2.,非功能性质量因素,2.2.2,软件测试的质量要求,软件测试的质量要求要重点注意如下,9,大点内容1.,测试的产品要有产品描述,2.,功能,3.,可靠性,4.,易用性,5.,效率,6.,可维护性,7.,可移植性,8.,用户文档,9.,程序,2.2.3,软件测试的质量控制,软件测试的质量控制主要有制定测试计划、测试说明书、测试用例,(,测试脚本,),、测试数据、测试执行、提交阶段测试报告、缺陷报告、技术评审。
要想成功完成软件测试这项工作,必须首先建立测试计划测试包括划分每个测试阶段和测试重点,明确职责,指明软件质量控制计划中规定的每一个任务的负责单位或成员的责任设计测试用例,指导整个测试过程对测试的各阶段所需要的时间、人力及其它资源进行预估,测试范围能分解应尽量分解,针对每个测试任务仔细分析到位,尽量做到客观、准确、留有余地制定测试项目的输入、输出和质量标准,并和有关方面达成一致建立变化处理的流程规则,识别出在整个测试阶段中哪些是内在的、不可避免的变化因素,如何进行控制要重点检查,:,(,1,)产品包的完整性,;,(,2,)源代码与执行程序版本一致性,;,(,3,)使用文档与执行程序的一致性,;,(,4,)介质的正确性做好软件质量的控制,就要加强软件生命期各个阶段的软件质量保证,需要做好如下几方面的软件管理工作:,(,1,)在软件开发过程中,确保所开发软件的质量与质量有关的人员都要规定其职责和权限,使责任落实到人,保证产品质量真正得到控制2,)组织技术评审:在软件开发的每个阶段结束后,都要组织评审,对质量进行评价,可以及早地发现软件开发过程中的可能引起软件质量问题的潜在错误3,)加强软件测试:测试是质量保证的重要手段。
4,)遵循软件工程标准和工程规范,软件规范则成为软件技术评审的一项重要内容2,3,软件测试人员的职责,软件测试人员的职责主要有,:,软件测试人员的职责要求、软件测试人员应承担的责任、测试人员要编写测试需求、测试人员要编写测试用例、测试人员实施测试、测试人员对单元测试的目标、测试人员对集成测试的目标、测试人员对系统测试的目标最终目的是确保交给用户的软件的功能符合用户的需求,把尽可能多的问题在软件交给用户之前发现并改正2.3.1,软件测试人员的职责要求,软件测试人员的职责要求要重点注意如下,15,点内容,:,测试人员应清楚自己的工作职责,并执行其职责测试人员应遵守公司制定的相关政策、流程文件中所规定的要求,按照公司的要求来架设测试测试人员有责任提供好的建议,通过各种措施降低成本、简化流程、提高产品质量测试人员应对测试数据进行监控和分析,对于缺陷应查明原因并提出对应措施,确保软件完成它所承诺的或公布的功能认真填写原始测试记录,合理处理测试数据,并及时上报分析结果,对自己所做的测试工作质量负责;,测试人员要对测试结果分析,通过测试,掌握软件具有的能力、缺陷、局限等,对软件质量给出评价性的结论与意见。
整理测试文档,填写软件测试报告,编写测试总结,为软件开发成果提供总结性意见参与项目的需求分析工作,进行系统性的测试分析,首要职责是找错误,找出潜在的错误,尽量想到所有可能出现的情况,不应默认假定不会发现错误负责项目的规范验证、正确性、可用性、边界条件、性能、安全性、兼容性、软件配置;,在执行任何具体测试任务前,都要在项目组内对于责任和目标达成共识,以免带来后续工作的相互推诿程序员是最经常打交道的客户是程序员,为了便于程序员报告程序的错误,尽量提供良好的软件问题报告,以便程序员可以更快的修复软件错误在编写自动化测试脚本前,首先要确定哪些用例适合做自动化测试,因为自化测试不像人工测试,它不能那么智能,也没有思维能力编制项目相应的测试规范和测试用例,按照测试流程、计划以及对产品特性的把握,沟通确认测试的范围、重点,考虑逻辑、数据完整性等要求,详细规定测试的要求,策划、编写测试用例,根据测试反馈信息,对于没有考虑到的新问题,不断添加测试用例从整体的测试角度可以分为单元测试、集成测试、系统测试、确认测试测试人员应当彻底检查每个测试的执行结果测试人员要了解“用户”如何使用软件,并且确定“用户”使用的时候不会遇到重要的,Bug,。
确认软件达到某种具体标准,承诺完成测试的软件没有质量问题2.3.2,软件测试人员对发布软件产品应承担的责任,经过测试人员测试过的软件产品,经过客户使用后,又发现了问题,原则说软件测试人员应承担的责任,为什么,?,应该承认所有的测试都不可能时彻底的但是,问题不是这么简单,首先,确认发现问题的原因如果发现的问题不是,系统需求说明书,、,系统概要设计说明书,、,系统详细设计说明书,中所规定的范围要求,测试人员不应承担的责任,;,如果是规定的范围要求,测试人员应承担的责任如果是由于用户误操作而造成的问题,由于误操作,用户在录入数据时不成功,造成了用户录入的数据丢失,这属于在数据库设计上的数据安全保护问题,与整体的系统框架设计有关系,在进行测试用例设计时没有考虑到、测试人员的疏忽或过错导致该问题的出现,评估人员负,50%,的责任,开发人员负,15%,的责任,测试人员应承担,35%,的责任如果是由于测试遗漏而造成的问题,写测试计划的人要负,70%,责任,测试人员要负,30%,的责任如果是发现了,Bug,,却不上报,Bug,,导致,Bug,最终在客户那里发现,测试人员要负全部责任软件整个测试过程是规范的,有测试计划,测试用例设计(,Checklist,);测试计划、测试用例经由,PM,(产品经理)和,RD,(开发人员)认同,要说责任,整个测试团队都有责任。
测试人员要进行通过不断的总结和提高保证将来的工作中能做的更好2.3.3,测试人员要编写测试需求,测试需求必须是可观测、可测评的行为在每个测试用例与测试需求之间不存在一对一的关系,测。