版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章单元测试第1页[本章关键点]单元测试定义;单元测试同集成测试和系统测试区分;单元测试环境组成;单元测试分析方法;单元测试用例设计方法;单元测试过程;单元测试举例。第2页[本章目标]掌握单元测试概念;了解单元测试误区;了解单元测试与集成测试和系统测试区分;掌握单元测试策略;掌握单元测试分析方法;掌握单元测试用例设计方法。第3页
3.1单元测试概述通常而言,单元测试是在软件开发过程中要进行最低级别测试活动,或者说是针对软件设计最小单位——程序模块,进行正确性检验测试工作。其目标在于发觉每个程序模块内部可能存在差错。在单元测试活动中,软件独立单元将在与程序其它部分相隔离情况下进行测试,主要工作分为两个步骤:人工静态检验和动态执行跟踪。单元测试分工大致以下:普通由开发组在普通由开发组在开发组组长监督下进行,确保使第4页用适当测试技术,依据单元测试计划和测试说明文档中制订要求,执行充分测试;由编写该单元开发组中组员设计所需要测试用例,测试该单元并修改缺点。3.1.1单元测试误区
1、单元测试是一个浪费时间工作2、单元测试只能证实代码做了什么3、我是个很棒程序员,我是不是能够不进行单元测试?4、集成测试能捕捉到全部Bug5、单元测试成本效率不高
第5页其实,在经过了单元测试之后,系统集成过程将会大大地简化。3.1.2单元测试与集成测试区分单元测试与集成测试主要区分在于测试对象不一样。单元测试对象是实现详细功效单元,普通对应详细设计中所描述设计单元。集成测试是针对概要设计所包含模块以及模块组合进行测试。单元测试所使用主要测试方法是基于代码白盒测试。而集成测试所使用主要测试方法是基于功效黑盒测试。
第6页因为集成测试要在全部要集成模块都经过了单元测试之后才能进行,也就是说在测试时间上,集成测试要晚于单元测试,所以单元测试好坏直接影响着集成测试。单元测试工作内容包含模块内程序逻辑、功效、参数传递、变量引用、犯错处理、需求和设计中有详细要求等方面测试。集成测试工作内容主要是验证各个接口、接口之间数据传递关系、模块组合后能否到达预期效果。即使单元测试和集成测试有一些区分,不过二者之间也有着千丝万缕联络。当前集成测试和单元测试界限趋向含糊。第7页3.1.3单元测试与系统测试区分单元测试与系统测试区分不但仅在于测试对象和测试层次不一样,最主要区分是测试性质不一样。在单元测试过程中,单元测试执行早于系统测试,测试是软件单元详细实现、内部逻辑结构以及数据流向等。系统测试属于后期测试,主要是依据需求规格说明书进行,是从用户角度来进行功效测试和性能测试等等,证实系统是否满足用户需求。单元测试中发觉错误轻易进行定位,而且多个单元测试能够并行进行;而系统测试发觉错误比较难定位。第8页3.2单元测试环境
因为一个模块或一个方法(Method)并不是一个独立程序,在考虑测试它时要同时考虑它和外界联络,所以要用到一些辅助模块,来模拟与所测模块相联络其它模块。普通把这些辅助模块分为两种:1、驱动模块(driver):相当于所测模块主程序。2、桩模块(stub):用于代替所测模块调用子模块。那么,所测模块和与它相关驱动模块及桩模块共同组成了一个“测试环境”,如图3-2所表示。第9页图3-2单元测试环境第10页3.3单元测试策略
单元测试包括到测试技术通常有:针对被测单元需求功效测试、用于代码评审和代码走读静态测试、白盒测试、状态转换测试和非功效测试。为了提升单元测试质量,只了解这些单元测试技术还远远不够,还要选择适当测试策略。在选择测试策略时,主要考虑以下3种方式:自顶向下(TopDownUnitTesting)单元测试策略、自底向上单元测试策略(BottomupUnitTesting)和孤立单元测试策略。第11页3.3.1自顶向下单元测试策略一)步骤:
1.从最顶层开始,把顶层调用单元做成桩模块。
2.对第二层测试,使用上面已测试单元做驱动模块。
3.依次类推,直到全部单元测试结束。二)优点:能够在集成测试之前为系统提供早期集成路径。三)缺点:单元测试被桩模块控制,伴随单元测试不停进行,测试过程也会变得越来越复杂,测试难度以及开发和维护成本都不停增加;第12页要求低层次结构覆盖率也难以得到确保;因为需求变更或其它原因而必须更改任何一个单元时,就必须重新测试该单元下层调用全部单元;低层单元测试依赖顶层测试,无法进行并行测试,使测试进度受到不一样程度影响,延长测试周期。四)总结:从上述分析中,不难看出该测试策略成本要高于孤立单元测试成本,所以从测试成本方面来考虑,并不是最正确单元测试策略。
3.3.2自底向上单元测试一)步骤:1、先对模块调用图上最底层模块开始测试,模拟调用该模块模块为驱动模块。第13页2、其次,对上一层模块进行单元测试,用已经被测试过模块做桩模块。3、依次类推,直到全部单元测试结束。二)优点:不需要单独设计桩模块。三)缺点:伴随单元测试不停进行,测试过程会变得越来越复杂,测试周期延长,测试和维护成本增加;伴随各个基本单元逐步加入,系统会变得异常庞大,所以测试人员不轻易控制;越靠近顶层模块测试其结构覆盖率就越难以确保;另外,顶层测试易受底层模块变更影响,任何一个模块修改之后,直接或间接调用该模块全部单元都要重新测试。第14页因为只有在底层单元测试完成之后才能够进行顶层单元测试,所以并行性不好。另外,自底向上单元测试也不能和详细设计、编码同时进行。四)总结:相对其它测试策略而言,该测试策略比较合理,尤其是需要考虑对象或复用时。它属于面向功效测试,而非面向结构测试。对那些以高覆盖率为目标或者软件开发时间担心软件项目来说,这种测试方法不适用。3.3.3孤立测试一)步骤:无需考虑每个模块与其它模块之间关系,分别为每个模块单独设计桩模块和驱动模块,逐一完成全部单元模块测试。第15页二)优点:该方法简单、轻易操作,所以所需测试时间短,能够到达高覆盖率。三)缺点:不能为集成测试提供早期集成路径。依赖结构设计信息,需要设计多个桩模块和驱动模块,增加了额外测试成本。四)总结:该方法是比较理想单元测试方法。如辅助适当集成测试策略,有利于缩短项目标开发时间。3.3.4综合测试在单元测试中,为了有效地降低开发桩模块工作量,能够考虑综合自底向上测试策略和孤立测试策略。
第16页3.4单元测试分析普通能够从以下几个方面进行分析和测试,即:1、判断得到结果是否正确?因为,对于测试而言,首要任务就是察看一下所期望结果是否正确,即对结果进行验证。2、判断是否满足全部边界条件?边界条件是指软件计划操作界限所在边缘条件。边界条件测试是单元测试中最终也是最主要一项任务。在使用边界值测试方法时,不妨结合实际项目参考以下测试技巧:输入了完全伪造或者和要求不一致数据。1)输入一个格式错误数据。第17页2)提供一个空值或者不完整值。
3)与意料之中值相差很远值。4)假如一个列表中不允许有重复数值存在,就能够给它传入一组存在重复数值列表;假如某个字段值要求唯一,那么能够输入两个或多个相同数值来进行测试。5)假如一个列表中不允许有重复数值存在,就能够给它传入一组存在重复数值列表;假如某个字段值要求唯一,那么能够输入两个或多个相同数值来进行测试。6)假如要求按照一定次序来存放一些数据,那么能够输入一些次序打乱数据来做测试。
第18页7)对于一些做了安全限制部分,尽可能经过各种路径尝试能否绕过安全限制测试。8)假如功效启用有一定次序限制,就用和期望不一致次序来进行测试。3、分析能否使用反向关联检验?在实际程序中,有一些方法能够使用反向逻辑关系来验证它们。4、分析是否能使用其它伎俩来交叉检验一下结果?普通而言,对某个值进行计算会有一个以上算法,但我们会因考虑到运行效率或其它方面原因而选择其中一个。5、分析是否能够强制一些错误发生?
第19页在实际使用过程当中,总会有意想不到各种各样情况和错误发生。6、分析模块接口数据在接口处犯错就好像丢掉了进入大门钥匙,无法进行下一步工作,只有在数据能正确流入、流出模块前提下,其它测试才有意义。7、分析局部数据结构局部数据结构往往是错误根源,对其检验主要是为了确保暂时存放在模块内数据在程序执行过程中完整、正确,所以应仔细设计测试用例。8、分析独立路径第20页在模块中应对每一条独立执行路径进行测试,单元测试基本任务是确保模块中每条语句最少执行一次。9、分析犯错处理是否正确一个好设计应能预见各种犯错条件,并进行适当犯错处理,即预设各种犯错处理通路。
3.5单元测试用例设计单元测试用例设计既能够使用白盒测试也能够使用黑盒测试,但以白盒测试为主。白盒测试进入前提条件是测试人员已经对被测试对象有了一定了解,基本上明确了被测试软件逻辑结构。
第21页黑盒测试是要首先了解软件产品具备功效和性能等需求,再依据需求设计一批测试用例以验证程序内部活动是否符合设计要求活动。测试人员在实际工作中最少应该设计能够覆盖以下需求基于功效单元测试用例:<1>测试程序单元功效是否实现;<2>测试程序单元性能是否满足要求(可选);<3>是否有可选其它测试特征,如边界、余量、安全性、可靠性、强度测试、人机交互界面测试等。不论是白盒测试还是黑盒测试,每个测试用例都应该包含下面4个关键元素:
第22页(1)被测单元模块初始状态申明,即测试用例开始状态(仅适合用于被测单元维持了调用中间状态情况);(2)被测单元输入,包含由被测单元读入任何外部数据值;(3)该测试用例实际测试代码,用被测单元功效和测试用例设计中使用分析来说明,如:单元中哪一个决议条件被测试;(4)测试用例期望输出结果(在测试进行之前测试说明中定义)。一、测试用例设计步骤以下描述进行测试用例设计6步通用过程。第23页步骤1:首先使被测单元运行;这个阶段适合技术有:①模块设计说明导出测试②对等区间划分步骤2:正面测试(PositiveTesting)这个阶段适合技术:①设计说明导出测试②对等区间划分③状态转换测试步骤3:负面测试(NegativeTesting)适合技术有:
①错误猜测第24页②边界值分析③内部边界值测试④状态转换测试步骤4:模块设计需求中其它测试特征用例设计适合技术:设计说明导出测试步骤5:覆盖率测试用例设计适合技术:①分支测试②条件测试③数据定义-使用测试④状态转换测试步骤6:测试执行第25页步骤7:完善代码覆盖适合技术:①分支测试②条件测试③设计定义――试验测试④状态转换测试二、面向对象应用程序单元测试用例设计类测试普通也采取传统两种测试方式:功效性测试和结构性测试,即黑盒测试和白盒测试。1、功效性测试功效性测试包含两个层次:类规格说明和方法规格说明。第26页
2、结构性测试结构性测试对类中方法进行测试,它把类作为一个单元来进行测试。测试分为两层:第一层考虑类中各独立方法代码;第二层考虑方法之间相互作用,每个方法测试要求能针对其全部输入情况。
(1)方法单独测试:(2)方法综合测试:
3、基于对象—状态转移图面向对象软件测试面向对象设计方法通常采取状态转移图建立对象动态行为模型。状态转移图用于刻画对象第27页响应各种事件时状态发生转移情况,结点表示对象某个可能状态,结点之间有向边通惯用“事件/动作”标出。如图3-3示例中,表示当对象处于状态A时,若接收到事件e则执行对应操作a且转移到状态B。所以,对象状态随各种外来事件发生怎样改变,是考查对象行为一个主要方面。图3-3对象-状态转换图第28页下面给出基于状态测试主要步骤:①依据设计文档,或者经过分析对象数据组员取值情况空间,得到被测试类状态转移图;②给被测试类加入用于设置和检验对象状态新方法,导出对象逻辑状态;③对于状态转移图中每个状态,确定该状态是哪些方法正当起始状态,即在该状态时,对象允许执行哪些操作;④在每个状态,从类中方法调用关系图最下层开始,逐一测试类中方法;
第29页
⑤测试每个方法时,依据对象当前状态确定出对方法执行路径有特殊影响参数值,将各种可能组合作为参数进行测试。4、类数据流测试数据流测试是一个白盒测试方法,它利用程序数据流之间关系来指导测试选择。①数据流分析当数据流测试用于单个过程单元测试时,定义-引用对可利用传统迭代数据流分析方法来计算,这种方法利用一个控制流图(controlflowgraph)来表示程序,其中节点表示程序语句,边表示不一样语句控制流,且每一个控制流图都加上了一个入口和一个出口。第30页②类及类测试类是个独立程序单位,它应该有一个类名并包含属性说明和服务说明两个主要部分,对象是类一个实例。不失普通性,我们这里结构一个类模型。我们对类进行三级测试,定义以下:
A.方法内部测试:测试单个方法,这级测试相当于单元测试;
B.方法间测试:在类中与其它方法一起测试一个直接或间接调用公开方法,这级测试相当于集成测试;第31页
C.类内部测试:测试公开方法在各种调用次序时相互作用关系,因为类调用能够激发一系列不同次序方法,我们能够用类内部测试来确定类相互作用关系次序,但因为公开方法调用顺序是无限,我们只能测试其中一个子集。③数据流测试为了支持现有类内部测试(Intra-classtesting)技术,我们需要一个基于代码测试技术来识别需要测试类部件,这种技术就是数据流测试,它考虑全部类变量及程序点说明定义-引用对(def-usepairs)。④计算类数据流信息第32页为了支持类数据流测试,我们必须计算类各种定义-引用对。为了计算类三种定义-引用对,我们能够结构一个类控制流图(classcontrolflowgraph—CCFG),其算法以下:⑴为类结构类调用图,作为类控制流图初值;⑵把框架(frame)加入到类调用图中;⑶依据对应控制流图替换类调用图中每一个调用节点,详细实现方法:对于类C中每一个方法M,在类调用图中用方法M控制流图替换方法M调用结点,并更新对应边;第33页⑷用调用节点和返回节点替换调用点,详细实现方法:对于类调用图中每一个表示类C中调用方法M调用点S,用一个调用节点和返回节点代替调用点S;⑸把单个控制流图连接起来,详细实现方法:对于类控制流图中每一个方法M,加上一条从框架调用节点到输入节点边和一条从输出节点到框架返回节点边,其中输入节点和输出节点都在方法M控制流图中;⑹返回完整类控制流图。
第34页3.6单元测试过程图3-7从宏观角度概括了单元测试工作过程图。一、单元测试进入和退出准则如表3-1和表3-2所表示:表3-1进入准则要素判断准则详细设计说明书单元测试用例经过审查取得同意进入配置库第35页
要素判断准则源代码文件源代码文件清单源代码文件取得同意源代码文件进入配置库源代码区测试用例源代码经过同级评审软件Bug清单单元测试汇报提交测试责任人提交软件产品配置管理表3-2退出准则第36页二、单元测试过程图3-7单元测试工作过程(1)准备阶段(2)编制阶段(3)代码审查阶段(4)单元测试阶段(5)评审、提交阶段第37页
3.7单元测试举例一、单元测试计划1.介绍这份文档目标是详细描述对两票系统能够实现在二次系统图上进行图形开票模块功效验证测试过程。2.本测试总目标:是否实现了需求文档中定义全部功效。3.完整性需求在测试该模块是否实现了需求文档中定义全部功效之前,应该做以下两项工作:第38页
①测试数据初始化是否无误;②测试二次图开票GUI界面是否与系统维护模块显示一致。4.单元测试终止标准①硬件资源不足或故障造成软件无法运行②软件运行后无法正确显示(如:因数据初始化有误造成GUI界面同系统维护模块显示不一致或不正确等);③全部功效测试均已经完成5.资源需求①软件资源操作系统:windows第39页web服务器:Tomcat5.0数据库服务器:SQLServer浏览器:MicrosoftIE6.0测试工具:Junit②硬件资源同开发用pc机配置相同即可。③测试进度第40页任务开始日期结束日期配置并调试测试环境10/0110/03GUI界面测试10/0410/06全部功效测试10/0710/10表3-3二次系统图图形开票模块第41页6.准备测试特征以下特征将被测试,以确保该模块能满足需求规格说明书中指定需求:需求2.2.1用户界面需求2.2.2弹出菜单需求2.2.3图形开票7.不准备测试特征此次测试将不考虑是否能够同一次系统图图形开票模块集成。8.测试方法该单元测试方法包含功效测试、GUI测试。
第42页9.经过/失败标准10.测试结束后须提交产物包含以下几个文档:<1>本测试计划<2>测试规格说明文档<3>测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026东风德纳车桥有限公司招聘笔试模拟试题及答案解析
- 2026福建漳州正兴医院招聘25人笔试参考题库及答案解析
- 2026年枣庄市高校毕业生“三支一扶”计划招募补充(62人)考试备考试题及答案解析
- 2026山东商业职业技术学院招聘人员18人笔试参考题库及答案解析
- 2026四川成都成华区府青路社区卫生服务中心社会招聘2人考试模拟试题及答案解析
- 急腹症的诊断与鉴别诊断总结2026
- 2026届浙江省镇江市重点中学中考英语最后冲刺模拟试卷含答案
- 护理技术操作中的健康教育技巧
- 护理查房:患者出院准备与指导
- 2026年心理学基础知识考试题目
- 2026年教师资格(心理健康教育学科知识与教学能力)考试题及答案
- 《矿山设备自动化控制手册》
- 2026届百师联盟高三下学期考前适应性训练(一) 数学试题+答案
- GB/T 12615.4-2004封闭型平圆头抽芯铆钉51级
- 凯迪拉克汽车-车主讲堂-夏季养护
- QMS-GC03.014-2014a品质刚性管理办法
- 《中国工业和信息化可持续发展报告2022》-24正式版
- 政务信息写作技巧课件
- CNG加气站知识培训课件
- 钻孔灌注桩施工安全控制培训教材课件
- 2021年中国戏曲学院辅导员招聘笔试试题及答案解析
评论
0/150
提交评论