软件测试技术第3章

上传人:zhu****ng 文档编号:253335410 上传时间:2024-12-11 格式:PPT 页数:48 大小:287KB
收藏 版权申诉 举报 下载
软件测试技术第3章_第1页
第1页 / 共48页
软件测试技术第3章_第2页
第2页 / 共48页
软件测试技术第3章_第3页
第3页 / 共48页
资源描述:

《软件测试技术第3章》由会员分享,可在线阅读,更多相关《软件测试技术第3章(48页珍藏版)》请在装配图网上搜索。

1、 ,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章 单元测试,由安博测试空间技术中心http:/ Down Unit Testing,)的单元测试策略、自底向上的单元测试策略(,Bottom up Unit Testing,)和孤立的单元测试策略。,自顶向下的单元测试策略,一)步骤:,1.,从最顶层开始,把顶层调用的单元做成桩模块。,2.,对第二层测试,使用上面已测试的单元做驱动模块。,3.,依次类推,直到全部单元测试结束。,二)优点:可以在集成测试之前为系统提供早期的集成途径。,三)缺点:单元测试被桩模块控制,随着单元测试的不断进行,测试过

2、程也会变得越来越复杂,测试难度以及开发和维护的成本都不断增加;,要求的低层次的结构覆盖率也难以得到保证;由于需求变更或其他原因而必须更改任何一个单元时,就必须重新测试该单元下层调用的所有单元;低层单元测试依赖顶层测试,无法进行并行测试,使测试进度受到不同程度的影响,延长测试周期。,四)总结:从上述分析中,不难看出该测试策略的成本要高于孤立的单元测试成本,因此从测试成本方面来考虑,并不是最佳的单元测试策略。,自底向上的单元测试,一)步骤:,1、先对模块调用图上的最底层模块开始测试,模拟调用该模块的模块为驱动模块。,2、其次,对上一层模块进行单元测试,用已经被测试过的模块做桩模块,。,3、依次类推

3、,直到全部单元测试结束。,二)优点:不需要单独设计桩模块。,三)缺点:随着单元测试的不断进行,测试过程会变得越来越复杂,测试周期延长,测试和维护的成本增加;随着各个基本单元逐步加入,系统会变得异常庞大,因此测试人员不容易控制;越接近顶层的模块的测试其结构覆盖率就越难以保证;,另外,顶层测试易受底层模块变更的影响,任何一个模块修改之后,直接或间接调用该模块的所有单元都要重新测试。,由于只有在底层单元测试完毕之后才能够进行顶层单元的测试,所以并行性不好。另外,自底向上的单元测试也不能和详细设计、编码同步进行。,四)总结:相对其它测试策略而言,该测试策略比较合理,尤其是需要考虑对象或复用时。它属于面

4、向功能的测试,而非面向结构的测试。对那些以高覆盖率为目标或者软件开发时间紧张的软件项目来说,这种测试方法不适用。,孤立测试,一)步骤:无需考虑每个模块与其他模块之间的关系,分别为每个模块单独设计桩模块和驱动模块,逐一完成所有单元模块的测试。,二)优点:该方法简单、容易操作,因此所需测试时间短,能够达到高覆盖率。,三)缺点:不能为集成测试提供早期的集成途径。依赖结构设计信息,需要设计多个桩模块和驱动模块,增加了额外的测试成本。,四)总结:该方法是比较理想的单元测试方法。如辅助适当的集成测试策略,有利于缩短项目的开发时间。,综合测试,在单元测试中,为了有效地减少开发桩模块的工作量,可以考虑综合自底

5、向上测试策略和孤立测试策略。,3.4,单元测试分析,一般可以从如下几个方面进行分析和测试,即:,1、,判断得到的结果是否正确?,因为,对于测试而言,首要的任务就是察看一下所期望的结果是否正确,即对结果进行验证。,2、,判断是否满足所有的边界条件?,边界条件是指软件计划的操作界限所在的边缘条件。边界条件测试是单元测试中最后也是最重要的一项任务。在使用边界值测试的方法时,不妨结合实际项目参考以下测试技巧:输入了完全伪造或者和要求不一致的数据。,1)输入一个格式错误的数据。,2)提供一个空值或者不完整的值。,3)与意料之中的值相差很远的值。,4)假如一个列表中不允许有重复的数值存在,就可以给它传入一

6、组存在重复数值的列表;如果某个字段的值要求唯一,那么可以输入两个或多个相同的数值来进行测试。,5)假如一个列表中不允许有重复的数值存在,就可以给它传入一组存在重复数值的列表;如果某个字段的值 要求唯一,那么可以输入两个或多个相同的数值来进行测试。,6)如果要求按照一定的顺序来存储一些数据,那么可以输入一些顺序打乱的数据来做测试。,7)对于一些做了安全限制的部分,尽量通过各种途径尝试能否绕过安全限制的测试。,8)如果功能的启用有一定的顺序限制,就用和期望不一致的顺序来进行测试。,3、分析能否使用反向关联检查?,在实际程序中,有一些方法可以使用反向的逻辑关系来验证它们。,4、,分析是否能使用其他手

7、段来交叉检查一下结果?,一般而言,对某个值进行计算会有一种以上的算法,但我们会因考虑到运行效率或其他方面的原因而选择其中的一种。,5、分析是否可以强制一些错误发生?,在实际使用过程当中,总会有意想不到各种各样的情况和错误发生。,6、,分析模块接口,数据在接口处出错就好像丢掉了进入大门的钥匙,无法进行下一步的工作,只有在数据能正确流入、流出模块的前提下,其他测试才有意义。,7、,分析局部数据结构,局部数据结构往往是错误的根源,对其检查主要是为了保证临时存储在模块内的数据在程序执行过程中完整、正确,因此应仔细设计测试用例。,8、,分析独立路径,在模块中应对每一条独立执行路径进行测试,单元测试的基本

8、任务是保证模块中每条语句至少执行一次。,9、,分析出错处理是否正确,一个好的设计应能预见各种出错条件,并进行适当的出错处理,即预设各种出错处理通路。,3.5,单元测试用例设计,单元测试用例的设计既可以使用白盒测试也可以使用黑盒测试,但以白盒测试为主。,白盒测试进入的前提条件是测试人员已经对被测试对象有了一定的了解,基本上明确了被测试软件的逻辑结构。,黑盒测试是要首先了解软件产品具备的功能和性能等需求,再根据需求设计一批测试用例以验证程序内部活动是否符合设计要求的活动。,测试人员在实际工作中至少应该设计能够覆盖如下需求的基于功能的单元测试用例:,测试程序单元的功能是否实现;,测试程序单元性能是否

9、满足要求(可选);,是否有可选的其它测试特性,如边界、余量、安全性、可靠性、强度测试、人机交互界面测试等。,无论是白盒测试还是黑盒测试,每个测试用例都应该包含下面,4,个关键元素:,(1),被测单元模块初始状态声明,即测试用例的开始状态(仅适用于被测单元维持了调用中间状态的情况,),;,(2)被测单元的输入,包含由被测单元读入的任何外部数据值;,(3)该测试用例实际测试的代码,用被测单元的功能和测试用例设计中使用的分析来说明,如:单元中哪一个决策条件被测试;,(4),测试用例的期望输出结果(在测试进行之前的测试说明中定义)。,一、测试用例设计步骤,以下描述进行测试用例设计的,6,步通用过程。,

10、步骤,1,:首先使被测单元运行;,这个阶段适合的技术有:,模块设计说明导出的测试,对等区间划分,步骤,2,:正面测试,(Positive Testing),这个阶段适合的技术:,设计说明导出的测试,对等区间划分,状态转换测试,步骤,3,:负面测试,(Negative Testing),适合的技术有:,错误猜测,边界值分析,内部边界值测试,状态转换测试,步骤,4:,模块设计需求中其它测试特性用例设计,适合的技术:设计说明导出的测试,步骤,5,:覆盖率测试用例设计,适合的技术:,分支测试,条件测试,数据定义使用测试,状态转换测试,步骤,6,:测试执行,步骤,7,:完善代码覆盖,适合的技术:,分支测

11、试,条件测试,设计定义,试验测试,状态转换测试,二、面向对象应用程序的单元测试用例设计,类测试一般也采用传统的两种测试方式:功能性测试和结构性测试,即黑盒测试和白盒测试。,1,、功能性测试,功能性测试包括两个层次:,类的规格说明和方法的规格说明。,2,、结构性测试,结构性测试对类中的方法进行测试,它把类作为一个单元来进行测试。测试分为两层:第一层考虑类中各独立方法的代码;第二层考虑方法之间的相互作用,每个方法的测试要求能针对其所有的输入情况。,(1),方法的单独测试:,(2),方法的综合测试,:,3,、基于对象,状态转移图的面向对象软件测试,面向对象设计方法通常采用状态转移图建立对象的动态行为

12、模型。状态转移图用于刻画对象,响应各种事件时状态发生转移的情况,结点表示对象的某个可能状态,结点之间的有向边通常用“事件动作”标出。,如图,3-3,的示例中,表示当对象处于状态,A,时,若接收到事件,e,则执行相应的操作,a,且转移到状态,B,。因此,对象的状态随各种外来事件发生怎样的变化,是考察对象行为的一个重要方面。,图,3-3,对象,-,状态转换图,下面给出基于状态测试的主要步骤:,依据设计文档,或者通过分析对象数据成员的取值情况空间,得到被测试类的状态转移图;,给被测试的类加入用于设置和检查对象状态的新方法,导出对象的逻辑状态;,对于状态转移图中的每个状态,确定该状态是哪些方法的合法起

13、始状态,即在该状态时,对象允许执行哪些操作;,在每个状态,从类中方法的调用关系图最下层开始,逐一测试类中的方法;,测试每个方法时,根据对象当前状态确定出对方法的执行路径有特殊影响的参数值,将各种可能组合作为参数进行测试。,4,、类的数据流测试,数据流测试是一种白盒测试方法,它利用程序的数据流之间的关系来指导测试的选择。,数据流分析,当数据流测试用于单个过程的单元测试时,定义,-,引用对可利用传统的迭代的数据流分析方法来计算,这种方法利用一个控制流图,(control flow graph),来表示程序,其中的节点表示程序语句,边表示不同语句的控制流,且每一个控制流图都加上了一个入口和一个出口。

14、,类及类测试,类是个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分,对象是类的一个实例。不失一般性,我们这里构造一个类的模型。,我们对类进行三级测试,定义如下:,A.,方法内部测试:测试单个方法,这级测试相当,于单元测试;,B.,方法间测试:在类中与其它方法一起测试一个,直接或间接调用的公开方法,这级测试相当于,集成测试;,C.,类内部测试:测试公开方法在各种调用顺序时的,相互作用关系,由于类的调用能够激发一系列不,同顺序的方法,我们可以用类内部测试来确定类,的相互作用关系顺序,但由于公开方法的调用顺,序是无限的,我们只能测试其中一个子集。,数据流测试,为了支持现有的类内

15、部测试(,Intra-class testing,)技术,我们需要一个基于代码的测试技术来识别需要测试的类的部件,这种技术就是数据流测试,它考虑所有的类变量及程序点说明的定义,-,引用对(,def,use pairs,)。,计算类的数据流信息,为了支持类的数据流测试,我们必须计算类的各种定义-引用对。,为了计算类的三种定义-引用对,我们可以构造一个类控制流图(class control flow graphCCFG),其算法如下:,为类构造类调用图,作为类控制流图的初值;,把框架(frame)加入到类调用图中;,根据相应的控制流图替换类调用图中的每一,个调用节点,具体实现方法:对于类C 中的每

16、一,个方法M,在类调用图中用方法M 的控制流图,替代方法M 的调用结点,并更新相应的边;,用调用节点和返回节点替换调用点,具体实现方法:对于类调用图中的每一个表示类C 中调用方法M 的调用点S,用一个调用节点和返回节点代替调用点S;,把单个的控制流图连接起来,具体实现方法:对于类控制流图中的每一个方法M,加上一条从框架调用节点到输入节点的边和一条从输出节点到框架返回节点的边,其中输入节点和输出节点都在方法M 的控制流图中;,返回完整的类控制流图。,3.6单元测试过程,图3-7从宏观的角度概括了单元测试的工作过程图。,一、单元测试进入和退出准则,如表3-1和表3-2所示:,表,3-1,进入准则,表,3-2,退出准则,二、单元测试过程,图,3-7,单元测试工作过程,(,1,)准备阶段,(,2,)编制阶段,(,3,)代码审查阶段,(,4,)单元测试阶段,(,5,)评审、提交阶段,3.7,单元测试举例,一、单元测试计划,1.,简介,这份文档的目标是详细描述对两票系统的可以实现在二次系统图上进行图形开票模块的功能验证的测试过程。,2.,本测试的总目标:,是否实现了需求文档中定义的所有功能。,3.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  sobing.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!