




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测试空间与设计空间,1,测试空间与测试驱动接口设计,中国科学技术大学TTCN实验室,2/44,介绍,测试空间的概念引用参考书:周伟明,软件测试实践,电子工业出版社,2008.5这是一种探索,将从一个新的视角观察测试用例的设计准则。,3/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,4/44,可变数据与可测数据,软件内的数据分为两种,一种是固定不变的数据,另一种是由于软件外部原因引起软件内发生变化的数据,这种可以变化的数据叫可变数据。可变数据的取值叫做可测数据。已经被选取用作实际测试的可测数据叫做测试数据。,5/44,可变数据的分类1,程序运行过程中从界面输入的数据,它会引起程序内部数据发生变化,属于在程序运行中发生变化的数据。,6/44,可变数据的分类2,配置文件中的设置,它会引起程序内初始配置数据的变化,属于程序运行前发生变化的数据。,7/44,问题1,程序在运行过程中动态读取配置文件里的数据,这时配置文件中的数据是可变数据吗?配置文件中的数据是在程序运行中变化的数据吗?,8/44,问题2,windows系统上的大小字体显示设置,它会影响图形界面的效果,也属于可变数据的范围。,9/44,问题3,GUI界面,验证它是否美观,验证的对象是可变数据吗?,10/44,软件测试的重点,软件测试时需要验证的固定数据一般都比较简单,在产品规格中基本都可以找到,一般都在产品规格里就得到正式。可变数据是软件测试的重点。,11/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,12/44,测试空间、设计空间和异常空间,单个可变数据的所有取值集合叫做单个可变数据的测试空间;单个可变数据的所有合法取值叫做单个数据的设计空间;单个可变数据的所有非法取值叫做单个可变数据的异常空间。,13/44,测试空间、设计空间和异常空间,一个产品所有可测数据经过组合关系构成的测试空间总集叫做产品的测试空间;一个产品所有可测数据经过组合关系构成的测试空间总集叫做产品的设计空间;一个产品所有可测数据经过组合关系构成的测试空间总集叫做产品的异常空间。,14/44,测试空间,设计空间,异常空间,测试空间,+,=,15/44,例,一个程序只有3个可变数据a、b、和c,都是32位无符号整型数,并且都可以在整数范围i额内内任意取值,数据b和c有组合关系,数据a是独立的。数据a的取值集合=0,1,232-1数据b和c的取值组合=(0,0),(0,1),(0,232-1),(1,0),(1,1),(1,232-1),(232-1,0),(232,1),(232-1,232-1)整个软件的测试空间=?整个软件的设计空间=?整个软件的设计空间=?,16/44,如果a的合法取值为0100,b的合法取值为0和1,c的合法取值为02,合法数据集合为0,1,100,(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)设计空间有107个元素测试空间232+264个元素异常空间(232+264)-107个元素,17/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,18/44,可测试性,软件必须是可以进行测试的,即不会受到测试环境或任何原因所限导致无法测试;软件测试的代价尽可能小。软件的测试空间要尽可能小;测试空间中的可测数据的构造难度要尽可能小。,19/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,20/44,可变数据的访问方式,访问方式:读、写执行,21/44,可变数据的变化形式,随时间变化例如用户从界面输入的数据,22/44,随空间而变化,软件在不同的空间运行而导致的数据变化。例如程序需要读取硬件装置,随不同机器的硬件配置不同,这种变化是由空间的不同造成的。像网卡地址。,23/44,数量和取值的变化,可变数据在数量和取值上的变化有修改、增加、减少三种形式。修改是指同一可变数据的取值的修改。如界面输入的数据,如果每次输入的值都不同,表明取值发生了变化,属于以修改形式变化的数据。增加是指多个同类型数据在数量上的增加,如命令行程序中执行的命令,下一版本可能增加新的命令等。减少是指多个同类型数据在数量上的减少。如有些数据在程序运行中或者下一版本中存在可能被删除的可能。,24/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,25/44,可变数据的表现形式,用户从界面输入(不限于图形界面)文件中的数据消息、信号网络通信的数据I/O硬件设备中的数据程序内部的函数参数、变量程序执行代码系统中的一些全局数据数据库中的数据动态加载模块系统资源.,26/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,27/44,可变数据的分层,根据可变数据在程序处理中的不同抽象、可变数据可以分为3层:外部输入层、接入层、实现层。,28/44,外部输入层,外部输入层的输入数据形式多种多样,包括用户见面输入和一些隐性输入:如文件输入、网络通信输入、外部消息输入和系统全局数据输入。外部输入层的数据有事会随时间变化而变化(比如网络通信输入),需要计算一段时间内输入的信息,并将其作为测试空间的可变数据来创建测试空间。一切有可能被用户修改的数据都要被当做外部输入层的可变数据。,29/44,系统测试与外部输入层,系统测试主要就是依据外部输入层的测试空间来进行的。在系统测试中一般需要考虑各个可变数据间的组合关系,因此实际使用的外部输入层的可变数据构成的测试空间在理论上是完备的测试空间。,30/44,接口层,接口层的可变数据一般都是由外部输入层的可变数据转变而来。如接口参数、各种隐性可变数据(如内部消息和信号)、全局的数据结构以及全局变量等都属于接口层的可变数据。集成测试主要在接口层的测试空间进行。,31/44,内部实现层,模块内部的各个功能单元的可变数据。一般由接口层的可变数据转换而来,包括函数参数、函数实体(通常用函数指针表示)、模块内部的数据结构、变量、函数内部变量等。单元测试主要是测试内部实现层的测试空间。,32/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,33/44,测试空间的安全性准则,测试空间属于软件基础性构成。测试空间必须尽量小且容易构造;在测试空间和设计空间之间建立最严格的转换规则;在外部输入层进行设计空间转换规则校验;测试空间各层异常空间的交集要尽可能小;设计空间必须在满足需求情况下尽量小;各层的测试空间都必须大于设计空间;测试空间高覆盖率原则异常空间内的处理要尽量简单。,34/44,大纲,可变数据与可测数据测试空间与设计空间可测试性可变数据的访问方式与变化形式可变数据的表现形式可变数据的分层测试空间的安全性准则测试驱动接口设计,35/44,接口调用原则,接口稳定性低的模块调用接口稳定性高的模块。接口覆盖定理:一个模块必须通过另一个模块的稳定接口去操作(使用)它的可变数据。,36/44,测试驱动设计的步骤,找出可变数据,根据测试数据构造出测试空间。将测试空间抽象成编程语言的基本数据类型或由基本数据类型组合成的数据结构类型。如果需要给外部模块提供输出结果,那么还需要分析测试空间中对应输出结果集合,将结果集合也抽象成编程语言的基本数据类型或由基本数据类型组合成的数据结构类型。分析其他模块对本模块的需求,根据需求分解出各个操作,合并共性的操作,得出操作集合。分析各个操作涉及的可变数据,设计出对应接口来处理抽象的数据类型,将抽象的数据类型作为接口的输入和输出参数。检查是否有遗漏未被接口覆盖的可变数据,如果有,表明接口有遗漏,需要重新分析需求中涉及的操作。,37/44,文件二进制读写操作的接口设计,intFileRead(HANDLEhFile,intnPos,void*pBuf,intnReadlen);HANDLEFileOpen(char*pszFileName);intFileWrite(HANDLEhFile,intnPos,void*pData,intnDatalen);voidFileClose(HANDLEhFile);,38/44,命令行程序接口设计,命令模式中,命令的管理和具体命令的实现存在执行依赖关系,但是命令模式中,并没有让命令管理模块去调用具体的命令实现模块,而是让具体的命令实现模块去调用命令管理模块将自己注册进去,实现了接口依赖关系的倒置。,39/44,为什么命令模式中要进行接口依赖关系的倒置呢?这其实是由接口关系稳定原理决定的,命令管理模块是一个有着非常稳定接口的模块,而具体的命令实现模块,由于命令可以任意增加,存在着许多不稳定因素,按照接口关系稳定原理,让接口不稳定的模块调用接口稳定的模块,所以命令模式是符合接口关系稳定原理的。其实其他类似命令模式这种有接口依赖关系倒置的地方都是按照接口关系稳定原理来设计的。,40/44,unix命令行程序需求分析,许多命令如ls、cd、mkdir、ps等供用户使用,有些命令属于内部命令,有些属于外部命令。在命令行程序中,外部输入的可变数据是用户在命令行中输入的命令和参数字符串,它的测试空间是用户输入的各种可能的字符串集合。因此可以用一个字符串指针来表示用户输入的可变数据。,41/44,unix命令行程序需求分析,由于各种命令在未来的操作系统中可能发生变化,因此这些命令的程序执行代码对命令行程序来说也是可变数据。例如ls、cd等内部命令,将来可能会增加或修改内部命令,这些内部命令的函数实体是可变的,所构成的测试空间为一系列函数实体的集合,对于这些可变数据,可以将其抽象成一个可以查找的数据结构,数据结构的每个节点里包含一个指向函数实体的函数指针和命令名字。,42/44,unix命令行程序设计,需要提供操作用户输入字符串的接口:intExecute(char*pszCmdLine);需要提供不同命令函数实体可变数据的接口:typedefint(*RUNCMD)(char*pszCmdLine);intRegCmd(char*pszCmdName,RUNCMDRunCmdFunc);,43/44,命令模式的理解,一、使用接口-实现类的方式。通常命令模式的接口中只有一个方法。实现类的方法有不同的功能,覆盖接口中的方法。在面向对象编程中,大量使用ifelse,或者switchcase这样的条件选择语句是“最差实践”。通常这类代码,意味着有重构的余地。命令模式就是干掉条件选择语句的利器。1,首先提供一个接口:publicinterfaceCommandpublicvoidexecute();,44/44,2,然后提供这个接口的实现类。每一个实现类的方法就是ifelse的一个代码块中的代码。这样,调用方直接把一个具体类的实例传进来即可。如:Publicvoidtest(Commandpara)Para.execute();即可,不需要再判断出现了哪种情况,应该执行哪一段代码。一切的问题都由调用方处理。如果不使用命令模式,那么如果情况逐步增多,如,从原来的2种,增加到20种,那么方法中的判断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版旅游产业三方借款协议范本
- 2025年高速公路冲孔桩加固工程劳务合同
- 2025年度文化娱乐合伙人合同范本标准
- 2025年专用发电机组买卖及电力工程设计合同
- 2025年度范文定制化服务与版权保护介绍费合同
- 2025版通信器材智能电网设备供应合同
- 2025版石油化工产品营销代理及推广服务合同范本
- 2025年度房地产开发商短期借款合同范本
- 2025大理石石材进出口代理协议范本
- 2025年度网络安全防护软件升级变更协议书
- 2025版电子购销合同模板
- 护理中医小讲课课件
- 2025年中煤电力有限公司招聘笔试参考题库含答案解析
- 动词教学课件
- 盐雾测试报告
- 外科学教案-腹外疝
- 寺院电路改造方案(3篇)
- 监理公司财务管理制度
- NBT 11551-2024 煤矿巷道TBM法施工及验收标准
- 生产环境条件管理制度
- 试用期员工绩效考核表新版本
评论
0/150
提交评论