




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章软件测试过程与策略,教师:白文江单位:太原大学计算机工程系邮箱:baiwen1979,TheProcessandPoliciesofSoftwareTesting,2,内容导航,1,软件测试过程与策略,2,3,TheProcessandPoliciesofSoftwareTesting,4,5,软件测试的复杂性与经济性分析,软件测试的流程,静态测试与动态测试,黑盒测试与白盒测试,小结与习题,3,复杂性1,1,软件测试的复杂性与经济性分析,完全测试也叫彻底测试或穷举测试,即让被测程序在一切可能的输入情况下全部执行一遍。但会引起以下问题:,输入量太大,通常有无穷多个;,输出结果太多,通常也有无穷多个;,软件执行路径太多,通常亦有无穷多个;,说明书存在主观性。,完全测试试图证明程序中不存在错误,但由于测试工作量太大,实践上行不通,这注定一切实际测试都是不彻底的。因此,软件测试只能证明错误的存在,但无法证明错误的不存在。,4,复杂性2,1,软件测试的复杂性与经济性分析,因为不完全测试或非穷举测试无法证明软件100%可靠,所以软件测试是有风险的。,完全测试的不可行性和不完全测试的风险性之间矛盾的平衡点就是最优测试。,O,数量,软件缺陷,最优测试量,测试成本,测试量,5,经济性,1,软件测试的复杂性与经济性分析,根据被测对象在整个软件开发项目中的重要地位和一旦发生故障会造成的损失情况来设计和选择相应的测试用例。,在保证能够尽可能多地发现软件缺陷的前提下,尽量少用测试用例。即找到最优测试点,掌握好测试用例的数量。避免不充分和过度测试。,软件面向的目标用户,可能出现的用户数量,潜在缺陷造成的影响,开发机构的业务能力,6,充分性准则,1,软件测试的复杂性与经济性分析,任何软件都存在有限的充分测试集合。,向一个充分的测试集合中增加测试数据后,该测试集合仍然是充分的。即软件测试的单调性。,对软件所有成分都进行了充分测试,并不表示整个软件的测试是充分的。即软件测试的非复合性。,对软件系统整体的充分测试,并不表示软件系统的各个成分的充分测试。即软件测试的非分解性。,软件测试的充分性与软件的需求和实现有关。,软件测试的数量与软件的复杂度成正比。即软件测试的复杂度。,测试次数的增加会降低检测出软件缺陷的几率。即软件测试的回报递减率。,7,误区,1,软件测试的复杂性与经济性分析,8,内容导航,1,软件测试过程与策略,2,3,TheProcessandPoliciesofSoftwareTesting,4,5,软件测试的复杂性与经济性分析,软件测试的流程,静态测试与动态测试,黑盒测试与白盒测试,小结与习题,9,软件开发的V模型,2,软件测试的流程,需求分析,概要设计,详细设计,编码,单元测试,集成测试,确认测试,系统测试,验收测试,10,过程,2,软件测试的流程,单元测试,单元测试,单元测试,集成测试,确认测试,系统测试,验收测试,被测模块2,被测模块1,被测模块n,已集成软件,已确认软件,可交付软件,设计信息,软件需求,系统其他元素,用户预期要求,接口,11,2,软件测试的流程,单元测试1,定义单元测试(UnitTesting)是对软件基本组成单元进行的测试。其测试对象是软件设计的最小单位模块或组件。通常由程序员自己来完成。,确保各单元模块被正确地编码或实现。除了保证代码的功能性,还有保证代码结构的可靠性和健全性。单元测试最好能自动完成。,局部数据结构,异常处理,边界条件,12,2,软件测试的流程,单元测试2,被测模块,测试用例,驱动模块(Driver),桩模块(Stub),桩模块(Stub),桩模块(Stub),测试结果,成功失败,13,2,软件测试的流程,单元测试3,测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试用例的设计及其测试代码的编写,然后再编写相关的代码来满足这些测试用例。之后循环添加其他功能,直到完成全部功能的开发。,明确当前要实现的功能(记录TODO列表),TDD的过程如下:,快速完成针对此功能的测试用例的编写,根据测试用例编写测试代码(编译不通过),编写对应的功能代码,测试通过,对代码进行重构,并不断测试,直到测试通过。,循环上述过程,直到完成所有功能的开发。,14,2,软件测试的流程,集成测试1,定义集成测试(IntegrationTesting)是指根据实际情况对程序模块采用适当的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性校验的测试工作。是对程序整体结构的测试。,对于传统软件,对于OO系统,15,2,软件测试的流程,集成测试2,(No-IncrementalIntegration),即先分别测试每个模块,再把所有模块按设计要求组合成所要实现的程序,并进行测试。,16,2,软件测试的流程,集成测试3,增量式集成(IncrementalIntegration)测试,即把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完毕,再把下一个要测模块结合进来进行测试。,自顶向下增量式测试,自底向上增量式测试,混合增量测试,17,2,软件测试的流程,集成测试4,一次性集成测试vs.增量式集成测试,增量式集成方式需要实现的模块较多,工作量大,耗时多;一次性集成则工作量较小。增量式集成方式发现问题的时间比一次性集成方式早。增量式集成方式比一次性集成方式更容易找出问题所在,因为出现的问题往往和最后加入的模块有关。增量式集成测试更为彻底。一次性集成方式可支持多个模块并行测试。,组织与实施时,需要考虑的因素,采用何种系统组装方式来进行组装测试组装测试过程中连接各模块的顺序模块代码编制和测试进度是否与组装测试的顺序一致测试过程中是否需要专门的硬件设备,18,2,软件测试的流程,集成测试5,成功地执行了测试计划中规定的所有集成测试,修正了所发现的错误,测试结果通过了专门小组的评审,需要提交的文档:,集成测试计划,集成测试规格说明,集成测试分析报告,因为不管采用什么开发模式,具体的开发工作总是从一个个软件单元做起,软件单元只有经过集成测试才能形成一个有机的整体。而且,某些软件模块虽然能够单独地正常工作,但并不能保证彼此连接或组装起来也能正常工作。程序在某些局部反映不出来的问题,可能在全局上就会暴露出来,影响整体。,19,确认测试1,2,软件测试的流程,定义即检验所开发的软件是否能够按照用户提出的要求运行,以确认其是否合格。因此,也称合格性测试。客户要求通常是指软件规格说明书中确定的软件功能和技术指标,或专门为测试所规定的确认准则。,确认测试阶段要做的工作:,20,确认测试2,2,软件测试的流程,经过检验的软件功能、性能及其他要求均已满足需求规格说明书的规定,因而可以被接受,视为合格软件。,经过检验发现与需求说明书有相当的偏离,得到一个各项缺陷的清单。,经过确认测试,应该为已开发的软件做出以下两个方面的结论性评价:,对于上述第二种情况,很难在交付期之前把发现的问题纠正过来。这需要开发部门和客户进行协商,找出解决问题的办法。,21,确认测试3,2,软件测试的流程,测试结果与预期的结果相符。说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。,测试结果与预期的结果不符。说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。,通过与用户协商,解决所发现的缺陷和错误。确认测试应交付的文档有:确认测试分析报告、最终用户手册和操作手册、项目开发总结报告。,软件配置审查的目的是保证软件配置的所有成分都齐全,各方面的质量都符合要求,具备维护阶段所必需的细节资料。除了合同中规定的内容和要求,在确认测试的过程中,还要严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。,22,系统测试1,2,软件测试的流程,定义即将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。,制定测试计划,设计测试用例,执行系统测试,缺陷管理与改进,审批,审批,迭代,23,系统测试2,2,软件测试的流程,确保系统测试的活动是按计划进行的;,验证软件产品是否与系统需求用例不相符合或与之矛盾;,建立完善的系统测试缺陷记录跟踪库;,确保软件系统测试活动及其结果及时通知相关小组和个人。,指定专门的测试工程师负责贯彻和执行系统测试活动;,测试组向各事业部经理/项目经理报告系统测试的执行情况;,系统测试活动遵循文档化的标准和过程;,向外部用户提供系统测试验收通过的项目;,建立相应项目的缺陷库,用于系统测试阶段项目不同生命周期的缺陷记录和缺陷状态跟踪;,定期对系统测试活动及结果进行评估,向各事业部经理/项目办总监/项目经理汇报项目的产品质量信息及数据。,24,系统测试3,2,软件测试的流程,用户层,面向最终使用者(操作者)的测试。即站在操作者角度上,测试系统对用户支持的情况,用户界面的规范性、友好性、可操作性,以及数据的安全性。,应用层,针对产品工程应用或行业应用的测试。即站在系统应用的角度,模拟实际应用环境,对系统的兼容性、可靠性、性能等进行的测试。,25,系统测试4,2,软件测试的流程,功能层,针对产品具体功能实现所进行的测试。,子系统层,针对产品内部结构性能的测试。关注子系统内部的性能、模块间接口的测试。,协议层,针对系统支持的协议、指标的测试。,26,系统测试5,2,软件测试的流程,恢复测试,也叫容错测试。即通过各种手段,让软件系统强制性出错,使其不能正常工作,从而检验系统的恢复能力。,安全测试,即通过各种手段突破防线、攻击系统,以检查系统对于外界非法入侵的防范能力。,强度测试,也叫压力或负载测试。即通过模拟实际情况下软硬件环境和用户使用过程的系统负荷,长时间或超负荷运行系统,测试系统的可靠性、稳定性等,性能测试,即测试软件在运行时的性能表现,如运行速度、资源占用或响应时间等。,容量测试,即在系统正常运行的范围内测定系统能够处理的数据容量,承受超额数据容量的能力。,正确性测试,检测软件的各项功能是否符合产品规格说明的要求。正确性关系着软件的质量。主要有:枚举法和边界值法。,27,系统测试6,2,软件测试的流程,可靠性测试,即从验证的角度出发、检验系统的可靠性是否达到预期的目标,并给出系统可能的可靠性增长情况。需要从用户的角度,模拟用户实际使用系统的情况,设计出系统的可操作视图。,兼容性测试,检测各软件之间能否正常地交互、共享信息,能否正确地和其他软件合作完成数据处理,以保障软件能够按照客户期望的标准进行交互,多个软件共同完成指定的任务。,Web网站测试,28,验收测试1,2,软件测试的流程,定义也叫认可测试,是向用户表明系统能够按照预期要求工作所进行的测试。是产品发布之前进行的最后一步测试。,明确验收项目,规定验收测试要通过的标准,确定测试方法,决定验收测试的组织机构和可利用的资源,选定测试结果分析方法;,指定验收测试计划并进行评审,设计验收测试所用的测试用例,审查验收测试的准备工作,执行验收测试,分析测试结果,做出验收结论,给出验收结果,验收测试计划中,包含的以下几个方面的内容:,功能测试,逆向测试,非常规测试,文档检查,强度检查,恢复测试,可维护性评价,用户操作测试,用户友好性检查,安全测试,29,验收测试2,2,软件测试的流程,软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确,人机界面和其他方面(如可移植性、兼容性、错误恢复能力和可维护性)是否令用户满意。,正式验收测试优点:要测试的功能和特性明确;测试细节已知;可自动执行;支持回归测试;可评测和监测测试过程;可接受性标准已知。缺点:需要大量的资源和计划;相当于再次实施系统测试;可能无法发现软件中由于主观原因造成的缺陷。,非正式验收或Alpha测试优点:要测试的功能、特性和接受性标准已知;可评测和监测测试过程;可发现主观缺陷缺点:无法控制所使用的测试用例;资源不好控制。,Beta测试:由最终用户实施,可发现更多主观缺陷。更加随意。,30,验收测试3,2,软件测试的流程,验收测试的项目洽谈,验收测试合同,提交测试样品及相关资料,软件需求分析,未达到测试状态,项目相关知识培训,达到测试状态整改所提交材料,编制验收测试计划和项目验收准则,测试设计,测试方案评审,测试环境搭建,实施测试,编制验收测试报告并组织评审,提交验收测试报告,验收测试4,2,软件测试的流程,软件配置审核。需要审核软件开发商提供的以下相关软件配置内容:,可执行程序的测试。具体测试内容包括:,安装(升级),启动与关闭,功能测试,性能测试,压力测试,配置测试,平台测试,安全性测试,恢复测试,可靠性测试,32,内容导航,1,软件测试过程与策略,2,3,TheProcessandPoliciesofSoftwareTesting,4,5,软件测试的复杂性与经济性分析,软件测试的流程,静态测试与动态测试,黑盒测试与白盒测试,小结与习题,静态测试1,3,静态测试与动态测试,用计算机测试源程序时,计算机并不真正运行被测试的程序,只是通过扫描程序正文,对程序的数据流和控制流等信息进行分析,找出系统的缺陷,得出测试报告。因此,静态测试也称分析测试。,软件内部结构过于复杂、混乱,代码编写无规范,隐藏着不易被察觉的错误。,科学、细致的静态分析可使系统设计更加符合模块化、结构化和面向对象的要求,代码更加规范,从而避免软件中大部分的错误,同时简化日后的维护工作。,静态测试2,3,静态测试与动态测试,检查算法的逻辑正确性,确定算法是否实现了所要求的功能。,检查模块接口的正确性,确定形参的个数、数据类型、顺序是否正确,确定返回值类型及返回值的正确性。,检查输入参数是否有合法性检查。,检查接口调用操作是否正确,是否对可能发生的异常进行了错误处理。,检查表达式、语句是否正确和有二义性。,检查常量或全局变量使用是否正确。,检查标识符的使用是否规范、一致。,检查程序风格的一致性、规范性。,检查代码是否可以优化,算法效率是否最高。,检查代码注释是否完善,是否正确地反映了代码的功能,并查找错误的注释。,静态测试3,3,静态测试与动态测试,可以发现如下的程序缺陷:,找出如下问题的根源:,提供程序缺陷的如下间接信息:,错用了局部变量和全局变量,不匹配的参数,未定义的变量,不适当的循环嵌套或分支嵌套,死循环,错误的递归,遗漏的标号和代码,未使用过的变量,不会执行到的代码,从未引用过的对象,潜在的死循环,标识符的使用方式,过程的调用层次,所用变量和常量的交叉引用,是否违背编码规范,为进一步差错做准备,选择测试用例,进行符号测试。,动态测试,3,静态测试与动态测试,动态测试是通过源程序运行时所体现出来的特征,来进行执行跟踪、时间分析以及测试覆盖等方面的测试。在测试过程中,测试用例被输入到被测程序中,并对其输入与输出的对应关系进行分析,以达到检测的目的。,对已选取值确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区电力设施规划与管理
- 工业废弃地到绿色公园的改造案例
- 工业机器人技术与应用发展研究
- 工业机器人技术及其自动化应用
- 工业机器人技术的选型与应用案例
- 工业物联网驱动产业升级的关键技术
- 工业自动化系统设计与优化
- 工业污染防治的技术创新与实施效果评价
- 工业物联网IIoT技术及应用前景
- 工业环保与清洁生产实践
- 《oracle性能优化》课件
- 小学生手工剪纸课件
- 化工设备机械基础习题及参考答案
- 《课件旅游法培训》课件
- 高中生物(部编版)选择性必修3知识清单(问答版)
- 山东师范大学《高级英语(二)》2021-2022学年第一学期期末试卷
- 2024年熔化焊接与热切割理论考试1000题(附答案)
- 洁净室施工培训
- 2024年10月自考14540药理学本试题及答案含评分参考
- 医疗设备验收方案及标准
- 手机成瘾课件教学课件
评论
0/150
提交评论