(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf_第1页
(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf_第2页
(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf_第3页
(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf_第4页
(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)分布式系统软件接口测试平台设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分布式系统软件接l i 测试平台的设计与实现 摘要 近几年,随着分布式处理技术的迅猛发展,关于分布式系统软件测试技术的 研究引起了业界人士的广泛关注,由于分布式程序运行在多台机器运行的网络 中,需要处理分布式单元之间的通信和同步以及不同平台结构的差异,因此传统 的面向过程软件的测试方法不太适合于分布式系统软件测试。本论文针对分布式 系统软件测试的特点,设计开发了一个分布式系统软件接口测试平台。论文的工 作主要包括以下几点: 对软件测试技术的发展过程做了一个较全面的研究,对分布式系统软件 测试的特点及测试方法做了一些尝试性探索。 在设计与开发接口测试平台的过程中,对相关的目前一些较新的软件技 术,如:x m l 技术、中间件技术以及微软公司开发的面向电子商务的业 务整合工具b i z t a l k 等做了一定的学习与研究。 设计并实现了一个分布式系统软件接口测试平台原型系统,在接口测试 平台原型系统开发过程中,笔者本人参与了接口测试平台的总体设计工 作,同时主要负责完成了中间件适配器模块以及流程控制器模块的概要 设计工作。 本论文的意义在于,在目前分布式软件测试技术研究尚不太成熟的情况下, 该测试平台对于解决分布式系统软件接口测试问题具有一定的实际意义,同时其 中的中间件适配器模块除了可用于接口测试平台外,对于不同中间件系统间的互 连有一定的实用价值。 关键词:软件接口测试,分布式系统,中间件,x m l 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 a b s t r a c t i nt h er e c e n ty e a r s ,w i t ht h er a p i dd e v e l o p m e n to ft h ed i s t r i b u t e dp r o c e s s i n g t e c h n o l o g i e s ,t h er e s e a r c h e s o ft h et e s t i n g t e c h n o l o g y f o rt h ed i s t r i b u t e d s y s t e m s o f t w a r e sh a v ea t t r a c t e dw i d ec o n c e r n sf r o mt h er e l a t e df i e l d sm a di n d u s t r i e s f o rt h e d i s t r i b u t e dp r o g r a m sr u no nt h en e t w o r k sw h i c ha r ec o m p o s e do fm a n yc o m p u t e r s , t h e yh a v et om a n a g e t h ec o m m u n i c a t i o na n ds y n c h r o n i z a t i o nb e t w e e nt h ed i s t r i b u t e d u n i t sa n dh a n d l ew i t ht h ep r o b l e m sb r o u g h tb yt h ed i f f e r e n c e sa m o n gt h ev a r i a b l e p l a t f o r m s ,t h e r e f o r et h et r a d i t i o n a lp r o c e d u r e o r i e n t e dt e s t i n gm e t h o d s d on o ta p p l yt o t h es o f t w a r e sr u n n i n go nt h ed i s t r i b u t e ds y s t e m s a c c o r d i n gt ot h ef e a t u r e so ft h e t e s t i n gm e t h o d sf o rt h ed i s t r i b u t e ds y s t e ms o f i w a r e s ,t h i se s s a yw i l ii n t r o d u c e a n i n t e r f a c et e s t i n gp l a t f o r n lf o rt h e t e s t i n g o ft h ed i s t r i b u t e ds y s t e ms o f t w a r e t h e f o l l o w i n g sa r c w h a tt h ew r i t e rh a v ew o r k e do nf o rt h i st h e s i s : m a d ea g e n e r a ls t u d y o nt h ed e v e l o p m e n to ft h es o f t w a r et e s t i n gt e c h n o l o g y , a n d p r a c t i c e dat e m p t i n g r e s e a r c ho nt h ef e a t u r e sa n dm e t h o d sf o rt h et e s t i n g o f t h ed i s t r i b u t e ds y s t e ms o t t w a r e s ont h ew a yo f d e v e l o p i n gt h ei n t e r f a c et e s t i n gp l a t f o r m ,p o r t i o n a l l ys t u d i e d s o m er e l a t e dn e w t e c h n o l o g i e s ,s u c ha sx m l ,m i d w a r ea n dt h eb i z t a l k ,t h e t o o ld e v e l o p e d b y t h em i c r o s o f tf o re n t e r p r i s ea p p l i c a t i o n si n t e g r a t i o ni nt h e e c o m m e r c e d e v e l o p e dap r o t o t y p es y s t e m o ft h ei n t e r f a c e t e s t i n gp l a t f o r m f o rt h e s o f t w a r et e s t i n go nt h ed i s t r i b u t e ds y s t e m i nt h ep r o c e s so f d e v e l o p i n gt h e i n t e r f a c et e s t i n gp l a t f o r m ,im y s e l fh a v et a k e n p a r ti nt h eg e n e r a la n a l y s i so f t h ew h o l e s y s t e m ,a n dm a i n l y f i n i s h e dt h ed e s i g n i n go ft h em i d w a r e a d a p t o r m o d u l ea n dt h ew o r k f l o wc o n t r o l l e rm o d u l e t h em e a n i n go ft h i s e s s a yi s t h a tt h e t e s t i n gp l a t f o r m c a nm a k ep r a c t i c a l c o n t r i b u t i o nt ot h es o l u t i o nf o rt h ep r o b l e mo fi n t e r f a c et e s t i n go ft h ed i s t r i b u t e d s y s t e ms o f t w a r e i nt h es i t u a t i o nt o d a yt h a tt h er e s e a r c h e sf o rt h et e s t i n gt e c h n o l o g yo f t h ed i s t r i b u t e ds y s t e ms o f t w a r ea r en o tm a t t i r ee n o u g h a n dt h em i d w a r ea d a p t o r m o d u l ei nt h i ss y s t e m ,c a nn o to n l yw o r ki nt h ei n t e r f a c et e s t i n gp l a t f o r m ,b u ta d d p r a c t i c a lv a l u e t oc o n n e c t i o nb e t w e e nd i f f e r e n tm i d w a r e s y s t e m s k e y w o r d s :s o f t w a r e i n t e r f a c et e s t ,d i s t r i b u t e ds y s t e m ,m i d w a r e ,x m l 北京邮电大学硕士论文i i 分布式系统软件接口测试f - 台的设计与实现 1 1 论文背景 第一章绪论 随着计算机科学技术的不断发展,计算机软件系统体系结构也在不断演进, 当今,许多大型软件系统都开始采用基于中间件的三层软件体系结构,在这种体 系结构中,用户界面层负责处理用户的输入和向用户的输出,而业务规则、数据 访问、合法性校验等工作放到了中间层进行处理,底层是数据层。三层体系结构 在提高系统的稳定性、安全性、易维护性等方面有很大优势。 目前某电信运营商正在建设的综合营帐系统就是一个基于中间件的三层结 构的软件系统,整个系统由客户资料管理、营业、帐务、信用管理和缴费等子系 统组成,可以提供营业处理、计费处理、帐务处理、客户资料管理、结算处理、 与代理商及代收费机构的联网、业务统计分析、查询、数据维护与备份、系统及 网络管理等功能,系统采用松耦合的方式,各子系统之间通过接口来进行信息的 交互。 事物总具有两面性,有利就有弊,该综合营帐系统采用基于中间件的三层体 系结构,在系统的稳定性,易维护以及系统的可扩展性等方面与传统的两层结构 相比有很大优点,但它却给软件测试工作带来很大影响,作者在研究生学习阶段 参与了该电信运营商综合营帐系统的认证测试工作,在测试过程中,深刻体会到 分布式系统的平台异构性、并发性以及运行状态的不确定性等特点对传统的软件 测试方法提出了新的需求。本文所做的工作就是在这样的背景下,参与设计及开 发了一个用于分布式系统软件接口测试的测试支撑平台。 1 2 论文意义 随着软件事业的不断发展,软件测试技术也逐渐走上成熟,由最初的完全的 手工测试不断向自动化测试过渡。相对于传统的手工测试方法,自动测试不需要 人为的干预来执行一系列动作,这种方法可以帮助消除人为错误并且可以更快的 产生结果。尽管自动测试在测试过程的初期需要花费比人工测试更多的时间和精 力,但随着测试的深入,这些付出与其效果相比是很小的,因此可以说自动测试 是用较小的开销获得较彻底的测试。 本论文所做的主要工作是参与开发了一个以中间件为基础的、用于分布式系 统接口测试的通用软件接口测试平台原型系统,该平台在一定程度上可以实现软 件测试的自动化。它的实现原理是测试平台为被测系统提供完整的测试环境并能 够监控整个测试过程。实现的测试过程是:选择测试用例模板、输入测试数据、 生成测试用例文件、将测试用例文件转换成规定的消息格式、为被测系统配置相 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 应的适配器组件并完成与被测系统的通信,最后要将返回的消息转换成结果文件 并与期望的结果进行比对,检查结果的正确性。 开发分布式系统软件接口测试平台的意义主要包括以下几点: 实现分布式程序接口测试:由于接口测试平台可以实现消息的单次发送和接 收,这样就可以方便的测试被测系统对外部应用程序提供的接口功能的正确 与否; 实现分布式程序功能测试:由于接口测试平台可以定制业务流程,所以可以 用事件序列来反映程序运行过程以及分布进程的交互,进而验证分布式程序 功能正确与否; 其他领域的应用:接口测试平台中的中间件适配器模块和x m l 文档转换器 模块也可独立应用于异构系统的互连以及异构数据源的共享。对于接口测试 平台及其相关模块的应用,在论文的第六章有详细介绍。 1 3 论文工作 本论文所做的研究工作主要包括以下几点: 对软件测试技术做了较全面系统的研究:包括传统的面向过程软件的测 试特点、测试过程与测试方法;面向对象的软件测试的特点以及常用的 测试方法;对目前较新的分布式软件测试技术,在技术本身不太成熟, 相关的文章和书籍较少的情况下,作者结合自己在参与综合营帐系统认 证测试过程中积累的测试经验,做了一些尝试性的研究工作。 与同学一起完成了分布式系统软件接口测试平台总体体系结构的设计。 整个接口测试平台分为软件测试平台与支撑环境两部分,软件测试平台 包括测试管理器、测试数据生成器、测试控制引擎、测试执行器、中间 件适配器、测试结果记录器、测试结果分析器等模块;支撑环境指运行 测试系统本身所需要的软硬件环境,包括中间件软件、操作系统以及硬 件平台三部分; 在接口测试平台原型开发过程中,完成了以b e at u x e d o 中间件为基础 的中间件适配器模块以及流程控制器模块的概要设计及实现工作。中间 件适配器模块除了可以用于接口测试平台以解决被测试系统平台的异构 性外,也可以作为一个子模块,应用于异构系统间的互连。 1 4 论文结构 在本章前两节简单介绍了本论文的研究背景及研究意义,本论文的其余部分 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 将依次展开论述软件测试理论、软件接口测试平台的相关开发技术、软件接口测 试平台的体系结构、中间件适配器模块的详细设计以及接口测试平台及其相关功 能模块的应用前景等。 本论文的具体组织结构如下: 第二章:介绍相关的软件测试技术,概要介绍软件测试技术的发展历程以及 各阶段的主要的测试方法,包括:传统的面向过程的软件测试、面向对象的 软件测试、分布式对象软件测试; 第三章:开发接口测试平台所涉及的相关技术的介绍,包括x m l 技术、中 间件技术以及b i z t a l k 介绍; 第四章:介绍通用软件接口测试平台系统的总体设计,包括接口测试平台系 统的体系结构设计以及各功能模块的概要设计; 第五章:介绍通用软件接口测试平台中中间件适配器模块的设计与实现,以 及接口测试平台的流程控制模块的设计; 第六章:首先介绍接口测试平台的应用前景,包括接口测试平台在分布式系 统测试中的应用、中间件适配器在异构系统互连中的应用模型以及x m l 文 件转换器在异构数据源的信息共享和转换方面的应用;最后讨论接口测试平 台存在的不足和尚需要改进的地方,并对全文所做的工作做了一个总结。 北京邮电大学硕士论文 分布式系统软件接口测试 ,台的设计与实现 第二章软件测试技术概述 软件测试是在软件投入运行前,对软件的需求分析、设计规格说明和编码的 最终复审,是软件质量保证的关键步骤。“软件测试是为了发现错误而执行程序 的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构 而精心设计一批测试用例( 即输入数据以及预期的输出结果) ,并利用这些测试 用例去运行程序,以发现程序错误的过程。” 1 7 1 软件测试的重要性,在软件工程界越来越引起重视,现在,软件开发机构将 研制力量的4 0 投入到软件测试之中的例子越来越多,特殊情况下,对性命攸关 的软件,例如飞行控制、核反映堆监控软件等,其测试费用甚至高达所有其他软 件工程阶段费用总和的3 5 倍。由此,软件测试的重要性可见一斑。 软件设计的方法经历了三个发展阶段:结构化设计 面向对象设计 分布式对象设计,与之相对应,软件测试技术的发展也经历了三个阶段:面向过 程的软件测试 面向对象的软件测试一 分布式系统软件测试。笔者在研究 生学习阶段,有幸参与了国内某大型电信运营商电信业务支撑系统一综合营帐系 统的认证测试工作,本章笔者将结合自己的软件测试工程实践以及对软件测试技 术的研究,介绍一下软件测试发展过程中所经历的三个阶段所对应的软件测试的 方法与技巧。 2 1 面向过程的软件测试 软件测试根据测试时是否运行程序分为静态测试和动态测试: 2 1 1 静态测试 静态测试的基本特征是对软件进行分析、检查和测试时不实际运行被测试的 程序,它可以用于对各种测试文档进行测试,是软件开发中十分有效的质量控制 方法之一。目前工业界普遍采用的静态测试方法包括文档走通和f a g a n 检查两 种: 文档走通:是由一组人员对一个文档从多个不同的角度进行仔细检查,以尽 可能多的发现错误,文档走通的中心问题是发现错误而不是纠正错误。组成 人员包括:报告人、召集人、秘书、维护者、标准检查员、用户代表、其他 人员等。在文档走通的过程中,召集人负责使讨论始终围绕问题的中心进行, 不能偏离主题,另外,文档走通是为了发现问题而不是解决问题,所以应该 避免讨论解决问题的方案,解决问题是开发人员的事情。 f a g a n 检查:f a g a n 检查是在一般的检查技术的基础上在i b m 发展起来的。 与文档走通相同,f a g a n 检查旨在发现错误而不是纠正错误。但是f a g a n 检查 北京邮电大学硕士论文4 分布式系统软件接口测试平台的设计与实现 强调对错误进行分类和统计,从而发现共同的错误类型和将来避免这种类型 的方法。f a g a n 检查的方法基于在软件丌发过程中设立一系列检查关口,每个 关口都定义了“过关准则”,软件产品或中间产品的质量必须达到一定标准才 能过关。 上面我们论述了两种常用的静态测试的方法,也许提起软件测试,我们大多 想到的是运行程序,发现错误,这是对软件测试的一个非常狭隘的理解,其实, 一个大型软件系统的完整的测试,应该包括静态测试和动态测试两部分。静态测 试是软件开发中十分有效的质量控制方法之一。 2 1 2 动态测试 通过运行软件来检验软件的动态行为和运行结果的正确性。分为黑盒测试和 白盒测试两种: 1 黑盒测试 黑盒测试( b l a c k b o xt e s t i n g ) 又称基于规格说明的测试,用这种方法进行 测试时,被测程序被当作打不开的黑盒,因而无法了解其内部结构。在完全不考 虑程序内部结构和内部特征的情况下,测试者只知道该程序的输入和输出之间的 关系,或是程序的功能,他必须依靠能够反映这一关系和程序功能的需求规格说 明书来考虑确定测试用例,和推断测试结果的正确性,即所依据的只能是程序的 外部特征。 黑盒测试是从用户观点出发的测试,黑盒测试常用的测试方法如下: 等价类划分法:先把程序中数目很多的输入情况划分成若干个等价类,然后 从每个等价类中选取少数有代表性的数据作为测试用例; 边界值分析法:对测试用例输入数据的选择,要采用该数据取值范围边界附 近的值,边界内和边界外都要有; 因果图法:指利用因果图来设计测试用例的方法,它考虑了程序输入情况的 各种组合和各个输入情况之间的制约关系。 2 白盒测试: 白盒测试( w h i t e b o xt e s t i n g ) 又称结构测试、逻辑测试或基于程序的测试, 采用这种测试方法,测试者可以看到被测的源程序,它可用以分析程序的内部结 构,并且根据内部构造设计测试用例。 白盒测试具体的测试方法介绍如下 语句覆盖:就是设计若干个测试用例,运行所测试程序,使得每一个可执行 语句至少执行一次; 北京邮电大学硕士论文 分布式系统软件接u 测试平台的设计与实现 判定覆盖:就是设计若干个测试用例,运行所测试程序,使得程序中每个判 断的耿真分支与取假分支至少经历一次,判定覆盖又称分支覆盖; 条件覆盖:就是设计若干个测试用例,运行所测试程序,使得程序中每个判 断的每个条件的可能取值至少执行一次; 路径覆盖:就是设计足够的测试用例,覆盖程序中所有可能的路径。当然, 这是理论上的要求,在实际测试中,即使一个不太复杂的程序,其路径数量 也是非常庞大的,因此在测试时,一般都把覆盖的路径数压缩到一定范围内。 2 1 3 面向过程软件测试步骤 根据动态测试在软件开发过程中所处的阶段及作用,分为:单元测试、集成 测试、系统测试、验收测试和回归测试。 1 单元测试 单元测试又称为模块测试,是针对软件设计中的最小单位一程序模块进行正 确性检验的测试工作。其目的在于发现各模块内部可能存在的各种错误。单元测 试需要从程序的内部结构出发设计测试用例,多个模块可以平行地独立测试。单 元主要方法:控制流测试、数据流测试、排错测试、分域测试等。 2 集成测试 是在软件系统集成的过程中所进行的测试,主要目的是检验单元之间的接口 是否正确,主要策略有自顶向下和自底向上两种: 自顶向下:从软件的主控模块入手,将其直接调用的模块与其集成,形成一 个子系统,将该子系统所调用的过程和所使用的数据用一些简单的代码来代 替,这些简单的代码成为测试残桩,通过测试残桩可以验证主控程序的正确 性,然后将子系统和主控程序集成,并书写新的测试残桩; 自底向上:从软件中不调用任何其他单元的模块入手,通过书写一个调用该 程序代码的小程序来测试该模块,这个小程序成为集成测试的驱动程序,然 后,将直接调用该模块的软件单元与其集成,并书写新的驱动程序。 3系统测试 是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性 能能否满足其规约所指定的要求,包括功能测试和随机测试两种方法: 功能测试:基本思想是根据软件的功能需求,选择适当的测试数据,以检查 软件是否完成了其功能需求中所提出的所有功能: 随机测试:基本思想对软件的输入空间进行随机取样,以此作为软件系统测 北京邮电大学硕士论文6 分布式系统软件接口测试平台的设计与实现 试数据。 4 - 验收测试 旨在向软件的购买者展示软件系统满足其用户需求,验收测试通常有软件系 统的购买者在场,是软件投入使用前的最后测试。 5 回归测试 是在软件的维护阶段,对软件进行修改之后进行的测试,其目的是检验对软 件的修改是否正确,回归测试通常包括从新运行系统测试中的部分测试数据。 2 2 面向对象软件测试技术 传统的面向过程的软件测试的一般的测试原则仍然可以应用于面向对象的 软件的测试,即通过生成测试输入数据,中间结果的检查和验证、程序运行路径 的跟踪以及测试事件的指明等工作,使被测试程序从确定的初始状态开始,对测 试数据进行处理而产生一个实际结果状态,只有当程序的实际运行结果状态与预 想的结果状态一致,才确认该程序。但是,这种观点在面向对象的环境中只对系 统测试有意义,而对单元测试和综合测试不适用,面向对象软件的封装性、继承 性、多态性和动态联编性等特点对传统的软件测试产生了很大影晌。 2 2 1 面向对象软件特点对软件测试的影响 面向对象程序的封装性、继承性、动态绑定性等特性使程序具有较大的灵活 性,提高了软件生产率和可靠性,但它同时影响了软件测试的方法和内容,下面 分析面向对象程序的特点对软件测试的影响: 9 基本构造模块:在面向对象系统中,系统的基本构造模块是封装了数据和方 法的类和对象,而不再是一个个能完成特定功能的功能模块。对象中的数据 和方法是一个有机的整体,测试过程中不能仅仅检查输入数据和输出的结果 是否和预期的吻合,还要考虑对象的状态,模块测试的概念已经不适用于对 象测试,类测试将是面向对象程序测试中的重要一步。它与传统面向过程的 测试区别如下图: 测试用例事面堕銎输出数据 传统的测试模型 测试用例、隔蕊蕊输出结果爿被测系统模块k 初始状态一4 l 二j 、v 结束状态 图2 - 1 :两种不同测试模型 北京邮电大学硕士论文 类的测试模型 分布式系统软件接口测试平台的设计与实现 系统的功能实现:在面向对象系统中,系统的功能体现在对象之间的协作上, 面向对象程序的执行实际上执行的是一个由消息连接起来的方法序列,各方 法之间的调用可能不仅仅是一个上下关系,各方法之间可能有相互作用,显 然传统的面向过程函数的自顶向下或自底向上的集成测试的方法不适用于 面向对象程序的测试。 信息的封装性:类的重要特征之一是信息的封装性,它把数据和方法封装在 一起,在一定程度上避免了不合理的操作并能有效防止错误的扩散,但却给 测试带来了困难,为了检查私有函数( 仅限于类内成员函数使用) 和保护的 函数( 仅限类内和派生类的成员函数使用) 和数据,测试时要在类中添加一 些专门函数。 继承性:继承性是面向对象软件的一个重要特征,子类不但可以继承父类中 的特征( 数据和方法) ,而且可以对其从新定义,对于子类继承父类的特征 由于类的环境的改变需要从新测试,在面向对象系统中良好的类层次结构有 助于提高软件的可用性,但多重继承和重复继承显著提高了测试的复杂性。 并且会导致一些从功能角度很难发现的错误。 多态性和动态绑定性:多态性和动态绑定性使得运行时系统能自动为给定消 息选择合适的实现代码,这给程序员提供了高度柔性、问题抽象和易于维护, 但多态性和动态绑定性所带来的不确定性,使得传统测试中的静态分析方法 遇到了不可逾越的障碍,而且他们也增加了系统运行时可能的执行路径,加 大了测试用例的选取难度和数量。 2 2 2 面向对象软件测试策略 通过分析面向对象软件特点对测试的影响,可以看到面向对象软件对测试有 特殊要求,面向对象的软件测试技术比传统的测试技术更复杂,根据软件工程的 观点,面向对象的软件测试应包括以下四个方面: 1 0 1 实例测试:要求选择具有代表性的对象实例进行测试,为避免测试工作的无 限增加,这些实例必须在测试工作执行前有计划的由系统生成。 上下文测试:针对继承上下文关系中的方法和属性以及他们之间的重要关系 进行测试,例如:消息的接受、例外条件的触发、潜在的动态联编等。 完备性测试:目的是为了覆盖全部的方法、方法链、对象和属性的修改。完 备性测试需要使用对象状态模型。对象状态模型必须包含那些被选择出来的 重要对象实例和他们之间的状态转换过程。 状态模型测试:面向对象的软件测试说明如下图,测试的信息来源于软件使 用手册、对象模型、对象状态模型和类说明。其中异体表示考虑特定边界条 北京邮电大学硕士论文 分布式系统软件接u 测试平台的设计与实现 件后的例外状态。 圆圈圈 两_ _ 丽习网 图2 - 2 面向对象软件测试说明 2 2 3 面向对象软件测试方法 基于上述测试策略,可以采用以下测试步骤对面向对象软件进行测试: 1 1 确定类、方法的使用特征,找出测试目标。类、方法的使用特征分析是整个 测试工作的出发点,根据测试目标设定测试的初始化数据。 类和方法的自身测试,这是单元测试,着重考虑类的内部成分。 逐步集成测试过的类,一个方法是以渐增式的方法向另一个方法过度,依次 循环,直到所有的方法都组合完毕。 异步消息发布及类间关系的测试,一个测试事件总是按给定参数值的方法的 一次运行,而类链的测试则是通过消息的发送和接收,对给定的事务处理中 涉及的类中对象实例,从事务处理开始至结束进行测试。 完整系统的黑箱测试,对于最终完整系统的测试,将被测系统看成一个黑箱, 以程序的外部功能为依据,一方面检查程序能否完成一切应完成的功能,另 一方面考察它能否拒绝一切不应该做的事。 2 3 分布式系统软件测试技术 2 3 1 分布式程序的基本运行模式 分布式程序运行在多台机器构成的网络环境中,需要处理分布式单元( 进程) 间的通信和同步以及不同平台结构的差异,目前,分布式程序系统普遍采取层次 结构的运行模式,运行模式图可表示如下:【b 】 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 m a c h i r eam a c h i n eb d i s t r i b u t e dc o d es e g m e n t1d i s t r i b u t e dc o d es e g m e n t2 c o m p i l e r a n ds u p p o r t i n gs y s t e m c o m p i l e ra n ds u p p o r t i n gs y s t e m c o m m u n i c a t i o np l a t f o r mc o m m u n i c a t i o n p l a t f o r m l o c a l o s l o c a l o s2 图2 3 :分布式程序运行模式图 其中,操作系统为分布式程序的本机运行提供底层支持,这一层可能是异构 的,如机器a 运行的是w i n d o w s n t ,而机器b 上运行的是u n i x 。通信机制由 各种通信协议构成,为使分布式程序成为一个相互协作的有机整体,一般由这一 层屏蔽底层的不同,如双方都采用t c p i p 协议或p v m 等,再上一层是语言编 译器及支撑系统,支撑系统协助程序在不同的平台上运行,可同时完成调度和资 源分配等功能。 分布式系统相对于集中式系统而言具有许多优势,比如共享资源的能力,动 态扩展能力以及潜在的高性能。目前,分布式系统已经广泛地应用到互联网络、 操作系统、编程语言等方面,并在不断地发展壮大。但是,事物都具有两面性, 分布式系统自身的这些优点却为我们的软件测试技术提出了许多难题,下面,我 将结合自己在实际测试工作中的经验以及对分布式系统软件测试技术的研究,论 述一下分布式系统软件测试特点以及常用的测试方法。 2 3 2 分布式系统软件测试的特点 与集中式系统不同,由于分布式程序运行在多台机器构成的网络中,需要处 理分布式单元( 进程) 间的通信和同步以及不同平台结构的差异,传统的面向串 行程序的测试可以由各种简单的工具来完成,测试工具本身不需要有复杂的内部 结构,但是对于分布式系统,测试工作不仅仅局限于单个进程或模块,它还要考 虑运行时刻各分布进程间协作的正确性和效率,因此,分布式软件测试要从以下 几个方面考虑: 各个分布单元程序本身的正确性:要测试整个分布式系统,首先要测试各个 分布单元自身的正确性,在保证各个单元正确的前提下,才能进一步地考察 整个分布式系统的正确性。这与传统的面向过程的测试基本类似,可以采用 传统的测试方法进行。 网络通信信道的可靠性和性能:为了适应不同领域的需求和实际条件的制 约,一个大的分布式系统往往会使用多种操作系统平台和中间件技术,各个 计算单元也会在物理上分别部署。因此,分布式环境下的测试要面对异构的 北京邮电大学硕士论文 分布式系统软件接1 3 测试平台的设计与实现 分布平台,多种异构平台之间通过既定的协议和专有的物理信道进行交互, 通信信道的可靠性和性能也是考察整个系统的好坏的重要指标。 各个分布单元之间交互的正确性和性能:由于分布式系统运行在多台机器构 成的网络环境中,各个分布式进程可能会并发执行,所以测试时要考查运行 时刻各分布进程间协作的正确性和效率,需要监控分布进程的运行以处理不 确定性问题,例如需要考察系统中关键程序的可重入性问题、各个进程之间 的资源死锁等。此外,在分布式环境下如何对一个跨系统、跨平台的大事务 进行测试也是一个较新的课题。 2 3 3 分布式系统软件测试的方法 关于分布式系统测试的研究,目前业界研究的比较活跃,但是还不太成熟, 关于分布式系统测试方法的文章也比较少,下面笔者结合实际讨论一下分布式系 统常用的测试方法。 从上一节分布式软件测试的特点,我们可以看到,完整的分布式系统的测试 包括三部分:分布单元程序的测试、分布单元程序之间接1 3 的测试( 包括软件部 分和网络通道的稳定性) 以及整个系统的功能测试。对于分布单元程序的测试, 如前所述,类似于面向过程的软件测试,有许多已经成熟的测试方法,在此不再 详细介绍,下面主要介绍一下分布式系统单元程序之间的接口测试以及系统功能 测试。 1 接口测试 随着应用系统的日益庞大,软件产品结构已经由原来的大而全的模式转向功 能模块专业化、规范化模式,各模块之间采用松耦合的方式进行连接。在这种松 耦合方式下,要做到各个子系统之间的互连互通,各子系统之间接1 3 连接的好与 坏,直接影响到整个系统建设的成败。 例如:综合营帐系统由综合营业、综合帐务、统一客户资料三部分组成,而 每个子系统可能由不同的厂家来完成,因此在认证测试过程中,就会存在以下问 题: 首先,各个厂家采用的中间件产品不同,底层通信协议也不一样,作为接1 3 测试,就存在一个各个厂家产品的互连互通问题; 其次,由于各个子系统传送信息时采用的数据类型可能是异构的,在进行测 试结果的比对时就需要解释多种不同的数据类型。给测试结果分析带来了很 大的困难。 针对上述困难,在实际测试过程中,我们采用了以下折衷的办法来解决: 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 让被测厂商自带测试支撑环境,即信息的接收和发送都在被测厂商带来的环 境下进行。这样,可以由各厂商自己提供不同中间件的测试环境。 要求被测厂商在发送或接收信息时,将内容写在日志文件中,再由测试人员 手工分析日志文件,与接口规范比较,得出测试结论。 通过上述折衷的办法,在一定程度上可以解决分布式程序接口测试的问题, 但它也存在一些弊端,一方面,虽然能检验出接口实现内容和格式与规范的符合 程度,但由于测试人员只能通过日志间接地检验接口实现的正确与否,不能保证 测试的科学性;另一方面,允许厂商自带测试环境容易造成测试环境的混乱,影 响测试的公正性。基于此原因,为了更公正、严谨、科学地进行软件接口的测试, 我们设计一个具有一定系统通用性的接口测试平台,并开发了其原型系统。具体 的体系结构与工作原理我们在后继章节详细介绍。 2 功能测试 分布式程序同传统的串行程序的根本区别在于程序运行的不确定性,即:在 运行的某一时刻,程序处于状态z 时,其下一步的动作及由该动作所导致的状态 不可预知,以生产者和消费者问题为例,当某一生产者生产了一个产品,并将它 放入仓库后,接下来的可能动作或者是生产者继续生产产品,或者是消费者从仓 库中取出产品,不同的动作会导致不同的程序状态,该不确定性所导致的最大问 题是程序执行过程的不可预测和不可重复。心j 由于上述原因,对于分布式系统测试中出现的不确定性问题,通常采用的测 试方法被称为不确定性测试,即:为了增加确定性,同一个输入( 测试用例) 需 要执行多次,我们说一个稳定的系统,在相同的外部条件和相同的输入的情况下, 应该得到相同的输出,不确定性测试验证了系统的稳定性;另外,还要增加确定 性测试,包括干预程序的执行,修改有关的竞争条件,以使程序按照某一事先规 定的路径执行,从而增加测试的充分性。 由于不确定性的存在,测试分布式程序时不能仅考虑输入和对应的输出,还 可以定义同步事件,并采用事件序列来反映程序运行过程以及分布进程间的交 互。 在综合营帐系统认证测试过程中,由于没有相应的软件测试支撑平台,难于 干涉程序的执行,所以不能进行确定性测试,在具体测试时采用了检查测试日志 中的接1 3 交互的序列,来分析程序执行的路径,进而判断程序执行的正确与否。 2 4 本章小结 本章结合软件设计方法经历的三个阶段,对与之对应的软件测试技术发展中 北京邮电大学硕士论文 分布式系统软件接u 测试平台的设计与实现 软件测试的特点以及典型的测试方法做了论述,特别对于新兴的分布式系统软件 测试技术,在相关资料比较少的情况下,笔者结合自己参与中国联通综合营帐系 统认证测试的工作实践,分析了分布式系统测试的特点、常用的测试方法以及存 在的一些问题。本论文下面所做工作就是要开发一个分布式系统软件接口测试平 台,用以解决上面提到的分布式系统软件测试中存在的问题。 在论文下一章,将重点介绍一下开发软件接口测试平台过程中所涉及到的一 些技术。 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 第三章接口测试平台相关开发技术介绍 在论文第一章曾经提到,本论文的主要工作是参与设计了一个以中间件为基 础的通用软件接口测试平台系统,并且实现了一个以b e a t u x e d o 为基础的原型 系统。该接口测试平台以x m l 文档转换器实现异构平台间信息的转换,利用微 软推出的企业级应用集成工具m i c r o s o f tb i z t a l ks e r v e r 实现业务流程的定制与执 行功能。 因此,为了读者能够更加方便的理解接口测试平台的设计方案与工作原理, 本章将对接口测试平台开发过程中涉及到的技术做一个简单介绍,内容包括中间 件技术、x m l 语言及编程技术以及b i z t a l k 技术。中间件技术主要介绍中间件的 概念和常用中间件的分类,然后再重点介绍在原型开发过程中所用到的交易处理 中间件b e at u x e d o 的相关应用技术。 3 1 中间件技术 3 1 1 中间件技术概述 中间件是在计算机硬件和操作系统之上,支持应用软件开发和运行的系统软 件,它能够使应用软件相对独立于计算机硬件和操作系统平台,为当今的大型分 布式应用搭起了一个标准的平台,把大型企业分散的系统和技术组合在一起,实 现大型企业应用软件系统的集成。 中间件具有标准的程序接口和协议,可以实现不同硬件和操作系统平台上的 数据共享和应用互操作。在具体实现上,中间件是一个用a p i 定义的分布式软件 管理框架,具有强大的通信能力和良好的可扩展性。 如果给中间件下个定义,我们可以认为:“所谓中间件,就是位于操作系统 和应用软件之间的一个软件层,它向各种应用软件提供服务,使不同的应用进程 能在屏蔽掉平台差异的情况下,通过网络互相通信” 1 9 1 下图是中间件系统结构示意图: 北京邮电大学硕士论文 分布式系统软件接口测试平台的设计与实现 i臆用编程接u ( a p i ) l中间件 平台接口平台接口 n 嗣网 p 一一 一一 硬件平台 li 硬件平台 l 【j i 一j 图3 - 1 :中间件示意图 3 1 2 中间件产品分类 中间件的产品种类很多,根据中间件在系统中所起的作用和采用的技术不 同,大致划分为以下五种: ( 1 ) 数据库中间件 数据库中间件在所有的中间件中是应用最广泛,技术最成熟的一种。一个最 典型的例子就是o d b c ,o d b c 是一种基于数据库的中间件标准,它允许应用程 序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口a p i ,当 然,在多数情况下这些a p i 都是隐藏在开发工具中,不被程序员直接使用。 ( 2 ) 远程过程调用中间件 远程过程调用是另外一种形式的中间件,它在客户服务器计算方面,比数 据库中间件又迈进了一步。它已经存在了相当长的时间,而且沿用了大多数程序 员都非常熟悉的编程模式一程序员就像调用本地过程一样在程序中调用远程过 程。启动远程过程的运行,然后将运行结果返回给本地程序。不但如此,远程过 程调用还可以将程序的控制传递到远端的服务器当中去。 r p c 的灵活特性使得它有比数据库中间件更广泛的应用,它可以应用在更 复杂的客户服务器计算环境中。远程过程调用的灵活性还体现在它的跨平台性 上面,它不仅可以调用远端的予程序,而且这种调用是可以跨不同操作系统平台 的,而程序员在编程时并不需要考虑这些细节。 ( 3 ) 面向消息中间件 消息中间件的优点在于能够在客户和服务器之间提供同步和异步的连接,并 且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更 进一步的原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且 通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相 北京邮电大学硕士论文 分布式系统软件接口测试、f 台的设汁与实现 比,消息中间件不支持程序控制的传递,不过这种缺陷和它的优势比起来却是无 关紧要的。 ( 4 ) 基于对象请求代理中间件 对象请求代理是近年来才发展起来的一项新技术,它可以看作和编程语言无 关的面向对象的r p c 应用,被视为从面向对象过渡到分布式计算的强大推动力 量。从管理和封装的模式上看,对象请求代理和远程过程调用有些类似,不过对 象请求代理可以包含比远程过程调用和消息中间件更复杂的信息,并且可以适用 于非结构化的或者非关系型的数据。 目前有两种对象请求代理的标准,分别是c o r b a 和d c o m ,这两种标准 是相互竞争的,而且两者之间有很大的区别,这在一定程度上阻碍了对象请求代 理中间件的标准化进程。 ( 5 ) 事务处理中间件 事务处理中间件是一种复杂的中间件产品,是针对复杂环境下分布式应用的 速度和可靠性要求而实现的。它给程序员提供事务处理的a p i ,程序员可以使用 程序接口编写高速而且可靠的基于事务处理分布式应用程序。 事务处理中间件向用户提供一系列的服务,如应用管理,管理控制,以及应 用程序间的消息传递等。常见的功能包括全局事务协调、事务的分布式两段提交、 资源管理器支持、故障恢复、高可靠性、网络负载平衡等等。 上面对中间件的分类以及常用中间件的功能特性做了简单介绍,由于在接口 测试平台原型开发过程中采用的是基于事务处理中间件b e at u x e d o ,所以下面 对b e a t u x e d o 中间件的系统结构、工作机制、通信模式以及通信缓冲区等相关 知识做一下详细介绍。 3 1 3 事务处理中间件b e at u x e d o t u x e d o 是b e a 公司的交易中间件产品,1 9 8 4 年由贝尔实验室开发成功,1 9 9

温馨提示

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

评论

0/150

提交评论