




已阅读5页,还剩83页未读, 继续免费阅读
(计算机应用技术专业论文)基于插件的性能测试框架的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 论文题目:基于插件的性能测试框架的设计与实现 专业:计算机应用技术 硕士生:吴根城 指导教师:常会友教授 摘要 性能测试是指对系统的各项性能指标进行测试,性能测试在软件的质量保证 中起着重要的作用。传统的性能测试框架一般只对目标应用系统做一个总体的性 能表现报告,开发人员不能有效地定位引起性能问题的代码段,因此开发人员往 往需要自己手工向目标应用程序的源代码中增加和删除性能测试代码,这样带来 的问题一方面是工作效率低,另外还容易导致出错,而且性能测试代码还不能够 重用。 本论文针对这一种情况构建了一个基于插件的性能测试框架,基于插件的性 能测试框架为开发人员提供了一个收集性能数据的平台,开发人员可以更深入, 更灵活地收集到他们关心的性能数据。它基于插件架构,用户可以很容易定制和 扩展该框架,同时,它也基于a o p 框架,将性能测试代码建模成方面,从而使得 性能测试代码与目标应用代码之间可以动态地织入与分离。 本人的工作主要包括了基于插件的性能测试框架的设计与实现工作。基于插 件的性能测试框架主要包括了四个部分: 插件式框架。插件式框架在反射技术和) ( m l 配置技术的基础上,将插件 动态加载到框架中。 性能数据收集框架。性能数据收集框架从目标应用程序收集性能数据, 它维护框架中的监视器列表以及连接点和监视器列表之间的映射关系。 依赖注入框架。依赖注入框架使用了h s p e c t j 框架提供的服务,将性能 检测代码作为方面注入到目标应用程序中去。 基于树表模型的s w i n g 界面。基于树表模型的s w i n g 界面为用户提供查 看性能测试结果的用户界面,树表模型组合了s w i n g 提供的树组件和表 组件,因此它同时具有树和表的特性,极大地方便了用户对不同性能测 试结果的比较。 目前企业应用系统的功能越来越丰富,其承载的负荷越来越重,开发人员也 将会面对越来越多的性能问题,因此,基于插件的性能测试框架具有很好的应用 前景。 关键词:性能测试,性能测试框架,插件架构,组件开发,面向方面编程 中山大学硕士毕业论文 基干插件的性能测试框架的设计与实现 t i t l e :d e s i g na n di m p l e m e n t a t i o no f p l u g - i nb a s e dp e r f o r m a n c em e u r ef r a m e w o r k m a j o r :c o m p u t c re n g i n e e r i n g n a m e :g e n c h e n gw u s u p e r v i s o r :p r o f e s s o rh u i y o uc h a n g a b s t r a c t p e r f o r m a n c et e s t i n gi so n ec l a s so ft e s t s i m p l e m e n t e da n de x e c u t e d t o c h a r a c t e r i z ea n de v a l u a t et h ep e r f o r m a n c ec h a r a c t e r i s t i c so ft h et a r g e ta p p l i c a t i o n i t p l a y s a l li m p o r t a n tr o l ei nt h es o f t w a r e q u a l i t ya s s u r a n c ep r o c e s s t r a d i t i o n a l p e r f o r m a n c em e a s l i r ef r a m e w o r kj u s to f f e r saw h o l ep e r f o r m a n c er e p o r to ft h et a r g e t a p p l i c a t i o nt od e v e l o p e r s ;d e v e l o p e r s c a n tl o c a r et h ec o d et h a tc a l l s e st h e p e r f o r m a n c ei s s u e se f f e c t i v e l y i nt h i sc a s e ,d e v e l o p e r sh a v et om a n u a l l ya d da n d r e m o v es o m ep e r f o r m a n c em e a s u r ec o d et ot h et a r g e ta p p l i c a t i o n n l eu p w a r d m e t h o d sh a v et h ef o l l o w i n gd i s a d v a n t a g e s :l o we f f i c i e n c y , e r r o r - p r o n e ,n o tr e u s a b l e p e r f o r m a n c em e a s u r ec o d ea n ds oo n t os o l v et h e s ep r o b l e m s ,t h i sp a p e rd e s i g n sa p l u g i nb a s e dp e r f o r m a n c em e a s u r e f r a m e w o r k t h i sp l u g - i nb a s e dp e r f o r m a n c em e a s u r ef r d l n e w o r kp l a t f o m lo f f e r s d e e p e r , m o r ef l e x i b l ep e r f o r m a n c ed a t at od e v e l o p e r s t i l i sp e r f o r m a n c em e a s i i r e f r a l n e w o r kb a s e so np l u g - i na r c h i t e c t u r e w h i c hm a k e si tp o s s i b l et ob ec l l s t o m i z e d a n de x t e n d e dv e r ye a s i l y m e a n w h i l e i tb a s e so nt h ea o pf r a m e w o r k , a n do f f e r s p e r f o r m a n c ec o d ea sa s p e c t s w h i c he n a b l e st h ep e r f o r m a n c ec o d ea n dt h et a r g e t a p p l i c a t i o nc o d et ob ew e a v e da n ds e p a r a t e dd y n a m i c a l l y m yw o r ki st od e s i g na n di m p l e m e n tt h i sp l u g i nb a s e dp e r f o r m a n c em e a s u r e f r a m e w o r k i tc o n t a i n st h ef o l l o w i n gp a r i s : p l u g i nb a s e df r a m e w o r k p l u g i nb a s e df r a m e w o r ku t i l i z e st h er e f l e c t i o n a n dx r a lt e c h n o l o g i e st ol o a dt h ep l u g i r l st ot h ef r a m e w o r kd y n a m i c a l l y p e r f o r m a n c ed a t ac o l l e c t i o nf r a m e w o r k p e r f o r m a n c ed a t ac o l l e c t i o n f r a n l e w o r km a i n t a i n sal i s to fm o n i t o r sa n dt h em a p p i n gb e t w e c ni o i n p o i n t sa n dm o n i t o r st oc o l l e c tt h ep e r f o r m a n c ed a t a d e p e n d e n c ei n j e c t i o nf r a m e w o r k d e p e n d e n c ei n j e c t i o nf r a m e w o r ku t i l i z e s t h es e r v i c eo f a o pt ow e a v et h ep e r f o r m a n c ec o d et ot h et a r g e ta p p l i c a t i o n a sa s p e c t s 仉et a b l em o d e lb a s e dv i e w t r e et a b l em o d e ib a s e dv i e wp r o v i d e st h eu s e r i n t e r f a c ef o ru s e r st os e et h ep e r f o r m a n c ed a t a t r e et a b l em o d e li sa c o m p o s i t i o no fs w i n gj t r e ea n dj t a h i ec o m p o n e n t s i tw i l lg r e a t l y f a c i l i t a t et h eu s e r si nd i f i e r e n tt e s tr e s u l t sc o m p a r i s o n c u r r e n t l yt h ee n t e r p r i s ea p p l i c a t i o np r o v i d e sm o r ea n dm o r ef e a m r e sa n dt h e l o a du n d e ri ti sg e t t i n gh e a v i e ra n dh e a v i e r , d e v e l o p e r sw i l lf a c em o r ea n dm o r e p e r f o r m a n c ei s s u 屺si nt h ef u t u r e s ot h ep l u g i nb a s e dp e r f o r m a n c e 行a m e w o r kw i l l h a v eas p r e a dp r o s p e c t k e y w o r d s :p e r f o r m a n c em e a s u l e ,p e r f o r m a n c em e a s u r ef r a m e w o r k , p l u g i n a r c h i t c e t , c o m p o n e n td e v e l o p m e n t ,a s p e c t - o r i e n t e dp r o g r a m m i n g u 中山大学硕士毕业论文基于插件的性能测试框架的i 殳计与实现 第1 章前言 在软件工业上,性能测试是指对系统在一些异常负载条件对系统的各项性能 指标进行测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试 内容丰富多样。中国软件评测中心将性能测试概括为三个方面:应用在客户端性 能的测试、应用在网络上性能的测试和应用在服务器端性能测试。 随着企业应用自动化的领域的逐步扩展,以及软件复用体系结构的进一步完 善,现在的企业应用系统已经越来越复杂,并且,企业应用系统已经成为各个企 业运转业务时最重要的支撑系统之一。全球化的经济上升趋势,给企业带来了机 遇,增加了企业的业务量,在此前提下,其企业应用系统承载的负荷越来越重, 企业应用系统性能的好坏直接影响到企业对外提供服务的质量。 因此,对于企业应用系统开发人员来说,性能问题应该是一个在开发过程中 密切关注的方面,而不应该是到了应用阶段才重视的方面,在迭代式的开发过程, 不仅进一步地完善系统的功能方面,更应该改善系统的性能表现,用户体验也是 一个至关重要的因素。 本人结合了参与项目的经验体会,设计并开发了一个插件式的性能测试框 架,来帮助开发人员在日常的开发生活中,更加方便地获取到一些性能方面的数 据,帮助其定位系统瓶颈,解决系统中存在的性能问题。 1 1 研究背景 本论文是基于本人在微软实习的工作和实验室的项目的基础上进行的。在微 软实习期间,本人所在的项目小组主要是开发一个手机上的摄像头应用程序,而 本人所负责的工作之一就是对该应用程序的性能进行测试,将收集到的性能数据 进行分析。在实验室,开发的项目是e r p 和c 蹦等基于j 2 e e 的企业应用系统,本人 负责的工作主要是做开发方面的东西,虽然没有直接与性能测试打交道,但是经 常要优化响应速度等要求而对代码进行优化,定位系统的瓶颈,从而优化引起系 统瓶颈的代码段。 正是在这些项目背景的驱动下,本人在现有的性能测试论文和性能诊断框架 中山大学硕士毕业论文基于插件的性能测试框架的没计与实现 的启发下,结合自己的项目背景,在本论文中本人设计并实现了一个性能测试框 架,它支持插件式开发,对目标应用系统进行性能方面的白盒测试,给开发人员 提供性能优化的方向。 1 2 本人的研究工作及意义 本人在本文中提出了一个基于插件的性能测试框架。基于插件的性能测试框 架为开发人员提供了一个收集性能数据的平台,开发人员可以更深入,更灵活地 收集到他们关心的性能数据。 这一个性能测试框架的原型是在微软实习所编写的手机拍照性能数据收集 程序发展而来的,本人在现有的成熟的各种性能测试系统的启发下,采用了目前 流行的h o p ( 面向方面编程) 的技术,再加上系统架构,系统扩展性等方面的考 虑,从而形成了本论文阐述的这一个性能测试框架。 本人的工作主要包括了基于插件的性能测试框架的设计与实现工作。基于插 件的性能测试框架主要包括了四个部分:插件式框架,性能数据收集框架,依赖 注入框架和基于树表模型的s w i n g 界面。插件式框架在反射技术和x m l 配置技术 的基础上,将插件动态加载到框架中,性能数据收集框架从目标应用程序收集性 能数据,它维护了框架中的监视器列表以及连接点和监视器列表之间的映射关 系。依赖注入框架使用了a s p e c t j 框架提供的服务,将性能检测代码作为方面注 入到目标应用程序中去。基于树表模型的s w i n g 界面为用户提供了查看性能测试 结果的用户界面,它组合了s w i n g 提供的树组件和表组件,让表同时具有树的特 性,大大方便了用户对不同性能测试结果的比较。 本性能测试框架的意义在于它为开发人员提供了一个收集性能数据的平台, 它基于插件架构,用户可以很容易定制和扩展该框架,同时,它也基于a o p 框架, 将性能测试代码建模成方面,从而使得性能测试代码与目标应用代码之间可以动 态地织入与分离。另外,本性能测试框架不同于传统的压力测试框架,它是基于 白盒澳试的观点,用户可以更深入,更灵活地收集到性能数据。用户收集到的性 能数据是局部的性能数据,而不是传统压力测试框架的全局的性能数据,因此本 性能测试框架可以跟传统的压力测试框架相辅相成,互补长短。 2 中山大学硕士毕业论文 基于插件的性能测试框架的设计与实现 1 3 本文的组织结构 本文主要分成六章,其结构和相关章节的主题如下。 第一章介绍了性能测试的现状,基于插件性能测试框架的研究背景,本人的 研究工作以及意义。 第二章是对性能测试的技术和开发方法的综述,重点介绍了基于插件的性能 测试框架采用的技术以及软件开发方法。 第三章和第四章是全文的重点。 第三章对本文构建的基于插件的性能测试框架的总体设计进行具体阐述,主 要介绍了框架中所使用的术语,框架中的各组成部分的总体设计,以及框架的模 块划分情况及各个模块的功能介绍。 第四章是在第三章的基础上,对基于插件的性能测试框架中每一个子模块的 设计进行详细阐述,并介绍了每一个类在模块中的设计,功能及其类图。 第五章给出了一个基于插件的性能测试框架的应用案例。在应用案例的分析 过程中,主要讨论如何搭建基于插件的性能测试框架的环境,包括编译环境,运 行环境,以及最重要的部分:如何配置整个性能测试框架。 第六章对全文进行总结并讨论进一步的研究工作。 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 第2 章性能测试相关技术和开发方法综述 由于性能洳试的基础性,目前已经有很多关于性能测试方面的研究,用于性 能测试一般使用插装( i n s t r u e n t a t i o n ) 和剖析器( p r o f i l e ) 等技术,插装技术主 要包括了手工插装和自动插装。 软件方法学是从各种不同角度、不同思路去认识软件的本质。为了开发稳定, 有生命力。可维护的软件,人们一直在追求有效的软件开发方法。 本章主要是对性能测试相关技术和开发方法做一个小综述,并且重点介绍了 在基于插件的性能测试框架中所使用的技术以及开发方法。 2 1 性能测试技术综述 传统的性能测试方案主要倾向于压力测试“”,黑盒测试,它不关心目标程序 的内部组成,内部结构,它将目标应用程序作为一个黑盒子,在系统的外面测试 系统在各种负载下的总体性能表现。 传统的性能测试的一个典型例子就是w i n d o w s 任务管理器中的性能窗口,它 监视内存和c p u 使用情况,并将结果用动态的图形表示出来。 在近期,随着j a v a 语言的发展,用于性能测试的技术也越来越多。比如插 装( i n s t r u m e n t a t i o n ) 和剖析器( p r o f i l e ) 等技术。 在插装技术方面,有手工插装和自动插装两大部分。文献 7 9 3 2 3 3 介 绍了这一方面的工作。 在剖析器方面,j a v a 虚拟机包含了j a v av i r t u a lm a c h i n ed e b u g g e r i n t e r f a c e ( j d i ) 眦和j a v av i r t u a lm a c h i n ep r o f i l e ri n t e r f a c e ( j v m p i ) 3 5 1o 这两个规范都是用来实现对代码的追踪的工具。在j v m p i 的基础上,许多公司提 供了相关的p r o f i l e r 工具,i b m 的j i n s i g h t ,o p t i m i z e i t 和i n t e l 的v t u n e 侧 等等。 4 中山大学硕士毕业论文 基于插件的性能测试框架的设计与实现 2 2 基于插件的性能测试框架的技术介绍 基于插件的性能测试框架使用了自动插装技术,其基础是a o p 的一个实现框 架a s p e c t j 。基于插件的性能测试框架将性能测试代码将性能测试代码作为方面 定义,再利用a o p 框架提供的织入功能,完成了性能测试代码自动插装的过程。 在本小节的接下来部分将详细介绍基于插件的性能测试框架所使用的各种 技术,其中包括了提供了自动插装功能的a s p e c t j 。 2 2 1x m l ( 1 ) x m l 技术的介绍 k m l ( e x t e n s i b l em a r k u pl a n g u a g e ,可扩展置标语言) 是由w 3 c 于1 9 9 8 年 2 月发布的一种标准汹1 。它是s g m l 的一个简化子集,它将s g m l 的丰富功能与h t m l 的易用性结合到w e b 的应用中,以一种开放的自我描述方式定义了数据结构,在 描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。这样所 组织的数据对于应用程序和用户都是友好的、可操作的。 煳l 的特点是可移植、与平台无关以及具有直接可读的形式,它的最大优点 在于它的数据存储格式不受显示格式的制约。一般来说,一篇文档包括三个要素: 数据、结构以及显示方式。) ( m l 把该三要素独立开来,分别处理。它把显示格式 从数据内容中独立出来,保存在样式单文件( s t y l es h e e t ) 中,做到表示与数 据的有效分离。x m l 的自我描述性质能够很好地表现许多复杂的数据关系,使得 基于x m l 的应用程序可以在x m l 文件中准确高效地搜索相关的数据内容,忽略其 他不相关部分。) ( m l 还有其他许多优点,比如它有利于不同系统之间的信息交流, 完全可以充当中间语言,成为数据和文档交换的标准机制。 j a v a 类库从1 4 版本开始本身就内置了对x m l 的支持,而且,也有很多开 源社区致力于开发各种访问) ( m l 的解决方案。目前有两种主流的x m l 解析技术: d o m ( d o c u m e n to b j e c tm o d e l ) 和8 a x ( s i m p l ea p f o r 捌l ) 。 d o m 是用与平台和语言无关的方式表示x m l 文档的官方w 3 c 标准。d o m 是 以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻 找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 何工作。由于它是基于信息层次的,因而d o m 被认为是基于树或基于对象的。 d o m 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的, 因此可以修改它以便应用程序能对数据和结构做出更改。它还可以在任何时候在 树中上下导航,面不是像s a x 那样是一次性的处理。 s a x 使用了非常类似于流媒体的技术。s a x 对x m l 输入流的分析能够立即开 始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查 数据,因此不需要将数据存储在内存中,因此,s a x 对内存的需求将会大大减少。 使用s a x 技术,应用程序可以不必解析整个文档,它可以在莱个条件得到满足时 停止解析。 ( 2 ) x m l 技术在基于插件的性能测试框架中的使用 由于x m l 为应用程序提供了可移植、与平台无关以及具有直接可读性等特 性,本性能测试框架大量使用了) ( m l 技术,这主要表现为两个方面,配置和串行 化。 在w i n d o w 操作系统中,大量使用的配置文件是基于i n i 文件格式的,在j a v a 开发语言中,它也提供了与i n i 文件格式类似的p r o p e r t i e s 文件格式。随着x m l 文件的兴起,配置文件越来越多地倾向于使用于x m l 文件格式,这主要是由于 x m l 文件格式的灵活,相比i n i 和p r o p e r t i e s 文件格式,它可以表示更加丰富 的数据储存能力,它可以将数据组织成树状结构,而不是平板结构。 x m l 串行化是指为了方便存储或传输,把一个对象的公共域和属性保存为一 种串行格式( 这里是) 【m l 格式) 的过程。反串行化则是使用串行的状态信息将对 象从串行x m l 状态还原成原始状态的过程。 x i v i l 串行化主要是利用于x m l 的可移植性和平台无关的特性,它利于 x n i l 作为中间载体,在不同的平台之间进行通过交换数据来共享对象。 2 2 2j a v ab e a n ( 1 ) j a v ab e a n 技术的介绍 j a v a b e a n 是可复用的组件,j a v a b e a n 体系结构是第一个全面地基于组件的 标准模型之一,j a v ab e a n 是描述j a v a 的软件组件模型,有点类似于m i c r o s o f t 的c o m 组件类型。j a v a b e a n 主要是被设计来产生可重复运用的组件,而这些组 6 中山大学硕士毕业论文 基于插件的性能测试框架的设计与实现 件通常被用于i d e 开发工具,而且通常是可视化组件,当然并不一定是可视化 组件。 一个j a v ab e a n 其实就是一个j a v a 类,通过封装属性和方法成为具有某种功 能或者处理某个业务的对象。编写j a v a b e a n 要遵守以下规则例: ( 1 ) b e a n 具有不带参数的构造函数。 ( 2 ) b e a n 是可序列化的( 能够持久保存也能恢复状态) ,也就是,它必须实 现j a v a i o s e r i a l i z a b l e 接口。 ( 3 ) b e a n 具有供用户定制的些属性,对每个属性,都有相应的g e t t e r 和s e t t e r 方法对其进行读写,例如,如果某个b e a n 具有f l a m e 属性,b e a n 类就必须定义 g e t n a m e 0 和s e t n a m e 0 方法。 ( 4 ) g e t t e r 方法不能带有参数,它必须返回一个对象,对象类型就是该属性 的类型。s e t t e r 方法带有一个参数,参数类型为该属性的类型,s e t t e r 没有返回值。 ( 5 ) b e a n 包含所有必须的事件处理方法。 图2 1j a v ab e a n 的组件模型 图2 - 1 展示了j a v ab e a n 的组件模型,j a v ab e a n 的组件模型为开发人员提供 了一个标准的方式,定义j a v a 类以便其组件在j a v a b e a n 容器环境操作,j a v a b e a i l 组件根据各种属性定义模型对外提供其属性,事件及内省信息,它允许设计工具 的定制,达到在设计时b e a n 自身定制的目的。 ( 2 ) j a v a b e a n 技术在基于插件的性能测试框架中的使用 在j a v a 的g u i 编程中,大部分工具包( a w t ,s w i n g 和s w t ) 的组件都 中山大学硕士毕业论文基于插件的性能测试框桨的设计与实现 使用j a v a b e a n s 规范。因此,在开发这些可视化组件的时候,一般需要遵循j a v a b e a n 规范,在遵循j a v ab e a n 的同时,我们也可以享受到j a v a 类库为我们提供 方便b e a n 操作的类库( 它位于j a v a ,b e a n s 包内) 。 2 2 3r e f l e c t i o n ( 1 ) r e f t e e t i o n 技术的介绍 反射( r e f l e c t i o n ) 的概念是t 由s m i t h 在1 9 8 2 年首次提出的, 主要是指程序可 以访问、检测和修改它本身状态或行为的一种缝力。j a v a 程序开发语言也支搀反 射,它允许运行中的j a v a 程序对自身进行检查,或者说”自审”,并能直接操作程 序的内部属性。j a v a 反射机制主要提供了以下功能闭: 在运行时获取任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时获取任意一个类所具有的成员变量和方法; 在运行时调用任意一个对象的方法; 生成动态代理。 j a v a 通过j a v t t 1 a n g r e f l e c t 包提供了反射技术, 可以对类的能力进行分析, 反射使程序代码能够访问装载到j v m 中的类的内部信息,主要包括获取已装载 类的字段、方法和构造函数的信息,允许编写处理类的代码,这些类是在程序 运行时确定的。这使反射成为构建灵活的应用的主要工具。j a v a 为反射提供了下 面一些类: c l a s s 类:代表一个类。 f i e l d 类:代表类的成员变量( 成员变量也称为类的属性) 。 m e t h o d 类:代表类的方法。 c o n s t r u c t o r 类:代表类的构造方法。 a r r a y 类:提供了动态创建数组,以及访问数组元素的静态方法。 ( 2 ) r e f l e c t i o n 技术在基于插件的性能测试框架中的使用 反射技术是本性能测试框架的基础,它为实现插件式框架提供了可能。插 件式框架的基础就是利用 j a v a 反射机制动态创建对象的功能。 在j a v a 中,为了动态创建某个对象,第一步首先要获取该类,j d k 提供了一 中山大学硕士毕业论文基于插件的性能测试捱j ;乏的设计与实现 个静态方法去动态加载一个类: j a v a f a n g c l a s s # f o r n a m e ( j a v a 1 a n g s t r i n g ) 在获取y c a s s 类之后,接下来就必须获取构建该类实例的构造函数,同样, j d k 也提供了相应的方法去动态获取类的构造函数: j a v a 1 a n g c l a s 8 井g e t c o n s 七r u c t o r ( j a v a 1 a n g c l a s s 【】) 现有我们已经有构造函数的实例,接下来就是把参数传递给构造函数,从 而去创建一个目标对象: j a v a 1 a n g r e f l e c t c o n s t r u c t o r 非n e w i n s t a n c e ( j a v a 1 a n g o b j e c t 【】) 这三个函数就为我们提供了如何去动态地创建某一个指定类的实例,在该 过程中,我们所需要提供的是类名,构造函数的参数类型列表,构造函数的实际 参数列表。在本性能测试框架,我们可以在j d k 提供的这一个动态创建对象的基 础上,定义一个x m l 配置文件,性能测试框架从x m l 配置文件中获取类名,构 造函数的参数类型列表,构造函数的实际参数列表从而就可以动态地创建所需 要的对象,而用户可以通过直接修改x m l 配置文件,去定义在运行中需要用到 的对象,从而去定制性能测试框架。j a v a 的反射机制作为底层的支撑柱石,让这 一个过程变得更加简单,直接。 2 2 4 a s p e c t j ( 1 ) a s p e c t j 技术的介绍 a s p e c t 1 6 】是a o p 框架的一个j a v a 实现,它是由施乐公司帕洛阿尔托研究中 心( x e r o xp a r o 开发的面向方面的框架。 a s p c c t l 是在j a v a 语言的基础上进行了扩展,它使用j a v a 作为单个关注点的 实现语言,并扩展j a v a 以指定织入规则。另外,a s p e c t j 定义了a o p 语法,允许以 多种方式用方面和类组合来建立新的方面,可以引入新的数据成员和方法或是声 明一个新的类来继承和实现另外的类或接口。a s p e e t j 的织入器,即a s p e c o 的编 译器,负责把不同的方面组合在一起。由于a s p e c t j 编译器建立的最终系统是j a v a 字节码,因此,它可以运行在任何符合j a v a 标准的虚拟机上。 a s p c c o 其实是一种代码自动生成工具,a s p c c o 可以让开发人员为横切关注 点编写可重用的代码,比如认证方面或者事务方面的代码等等,然后再使用 a s p c c t i 语法定义一套代码生成规则( a s p e c t 定义) ,a s p c c t j 框架就会自动把这段 9 中山大学硕士毕业论文基于插件的性能潭i 试框架的设计与实现 横切关注点代码织入到对应的目标应用程序代码里面去,简单,方便而又快捷。 a s p e c t j 框架令代码更加精简,结构更加良好。 ( 2 ) a s p e c t j 技术在基于插件的性能测试框架中的使用 在本性能测试框架中,为了馒性能测试代码和目标应用程序代码可以不互 相干扰,互相纠缠,本性能测试框架使用t a s p e c t j 框架来定义性能测试代码和 目标应用程序的织入规则。在织入规则的帮助下,性能测试代码和目标应用程序 代码得以分离,织入器在编译代码的同时,根据织入规则将性能测试的二进制代 码织入到目标应用程序的二进制代码中。 在a s p e e t j 框架中,横切关注点和核心关注点的织入和分离变得非常方便简 单,只要把织入规则( 即方面定义) 加入到类路径或者编译源文件列表中,同时 使用a s p e e t j 提供的编译器,就可以把横切关注点和核心关注点相互织在一起, 而为了分离它们,只需要使用j d k 提供的j a v a 编译器,将织入规则( 即方面定义) 从编译文件列表中删除,横切关注点就与核心关注点完全分离。 利用上述特性,本性能测试框架在系统开发阶段就可以很容易地加入到目标 应用程序中去,以收集性能数据,而在系统部署阶段,又可以很容易从目标应用 程序中删除。而且,这一个性能测试框架也不会跟某一个目标应用程序绑定在一 起,提高了性能测试框架的可复用性。 2 2 5 s w i n g ( 1 ) s w i n g 技术的介绍 在j a v a1 0 版本中,系统只提供了一个针对基本g u i 编程的类库,称为抽 象窗口工具包( a b s t r a c t w i n d o w s t o o l k i t ,目i a w t ) 。a w t 库处理用户界面的方 式是把它们建立的元素和库行为指派给目标平台( w i n d o w s 、s o l a r i s 等等) 自带 的o u ! 工具包。而因为种种原因,不同的o s 之间存在差异,所以难以利用a w t 编写出依赖于原始用户界面元素的、具有高度可移植性的图形库。 1 9 9 6 年s u n 公司同n e t s c a p e 公司通力合作创建了新的图形类库,取名为 s w i n g 。s w i n g 局a v a 的基础类,这是j f c 的一部分,完整的j f c 是很巨大的,包括 的组件也很多。s w i n g 具有更丰富而且更加方便的用户界面元素集合,s w i n g 对于 底层平台的依赖更少,带来了交叉平台上的统一的视觉体验。s w i n g 组件具有以 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 下特点: s w i n g 有一套丰富的、更方便地用户界面元素; s w i n g 几乎不依赖于平台,因而不容易出现与平台有关的错误; s w i n g 给用户的感觉是:各平台上的运行是一致的。 s w i n g 组件功能的实现,充分运用了模型视图控制器( m o d e l v i e w c o n t r o l l e r ,f l o m v c ) 的设计模式。m v c 遵守面向对象的设计规则:每个对象不 实现过多的功能。m v c 将组件的“外观”同一个对象关联到一起,同时将其内容 保存到另一个对象中,实现了三个各自独立的类:模型用来保存内容,视图用来 显示内容,控制器用于控制用户输入。 唤醒( 内容改变) 图2 2 模型、视图、控制器对象之间的相互作用 如图2 2 所示,s w i n g f t 件的设计就是采用了模型视图控制器的设计模式, 将组件的“外观与感觉”、内容、控制器进行分离,将责任分开,实现了模型、 视图、控制器三个独立的类,很好地实现t s w i n g 组件的可复用性。 ( 2 ) s w i n g 技术在基于插件的性能测试框架中的使用 为了展示性能测试结果,g u i 界面就必不可少的。在本性能测试框架中, g u i 界面的开发使用t s w i n g 技术。 在本性能测试框架,收集到的性能测试数据是二维的,即在每一次测试中, 性能测试框架可以收集到很多组测试结果,每一组测试结果有不同的属性,为了 将测试数据以最佳的效果展示给用户,s w i n g 提供的表格组件就刚好可以满足这 一个要求,同时,由于为了能够将不同测试的结果可以做比较,两次测试结果就 可以用树的关系组织起来,将每一次测试结果作为上次测试结果的子节点来进 行对比分析。 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 2 3 性能测试开发方法综述 传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数 据流、面向对象、面向方面等不断创新的观点反映问题的本质。整个软件的发展 历程使人们越来越认识到应按客观世界规律去解决软件方法学问题。 性能测试框架属于常规的软件开发,可以采用传统的软件方法学去分析,在 目前的软件工业上,经典而又最流行的软件方法学是面向对象分析。而性能测试 框架又不同于常规的软件开发,性能测试代码并非常规的目标应用程序的功能之 一,它属于测试范畴,几乎所有的应用程序代码都需要相应的性能测试代码,按 照近几年流行的面向方面分析,可以将性能测试代码作为一个横切关注点,将性 能测试代码更好地模块化。 本小节将分别介绍面向对象和面向方面两种不同的软件开发方法。 2 3 1 面向对象 面向对象编程( o b j e c to r i e n t e dp r o g r a m m i n g ,面向对象程序设计) 是一种 计算机编程架构。面向对象的一条基本原则是计算机程序是由单个能够起到子程 序作用的单元或对象组合而成。面向对象软件开发方法的三个主要目标是实现程 序的可重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、 处理数据和向其它对象发送信息。 面向对象编程主要提供了类,抽象性,封装,多态,继承等概念来组织程序 结构。 类是数据和功能一起在运行着的计算机程序中形成的单元,类在面向对象的 计算机程序中是模块和结构化的基础。 抽象性是程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关 注的能力,即面向接口,面向对象方法鼓励人们面向接口编程。 封装也叫做信息封装,它确保组件不会以不可预期的方式改变其它组件的内 部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。 每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方 法。 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 多态性,组件的引用和类集会涉及到其它许多不同类型的类,而且引用类所 产生的结果是依据实际调用的类型。 继承性,允许在现存的组件基础上创建子类组件,这一待性统一并增强了多 态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为 现存的类的扩展,这样就可以将类组织成树形或网状结构。 ( 1 ) 面向接口 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完 成的。在这种情况下,为了降低系统设计的复杂性,系统设计人员不应该关心各 个对象内部是如何实现的,而应该倾向于各个对象之间的协作关系,这就是面向 接口编程。让程序面向接口,这样就不会让系统与某种具体的实现绑定在一起, 实现系统架构的灵活性和扩展性。 接口,从更深层次的理解,应是定义( 规范,约束) 与实现( 名实分离的原 则) 的分离。接口的本身反映了系统设计人员对系统的抽象理解,系统设计人员 根据系统需求和系统架构,抽象出各种各样的接口,从而让系统可以工作于不同 的实现,让系统更加富于生命力。 面向接口的编程,接口定义了一个a p i 规范,大家都按照这个规范进行编程, 而不必考虑所调用接口是如何实现的。面向接口,这样才能保证个个模块之间是 最小的耦合。一旦高层的商业逻辑依赖于底层的细节,那么,整个系统就会僵化。 一旦底层的细节发生了变化,上层无关的商业逻辑也不得不变化,系统的可维护 性将会大降低。 ( 2 ) 基于组件 组件技术是9 0 年代初出现的一种新技术,它是在结构化设计和面向对象技术 的基础上发展起来的,是面向对象技术之后的软件开发的标准方法体系,是面向 对象的开发技术的延伸。因此,组件具有面向对象的特征。 由于组件能够独立地实现其功能而不依赖与其它外部环境,它能够被高度的 重用。在理想的环境下,组件的实现及应用与开发语言和平台无关。因此组件具 有功能独立性、高度的可重用性、与语言和平台无关性等特点。 简单地说,组件就是一个在软件体系中,能够独立地被更换替代,基于特定 接口提供和获取服务,符合整个体系结构标准,同其它软件单元相互交流协作的 中山大学硕士毕业论文基于插件的性能测试框架的设计与实现 软件包或者插件。 在基于组件开发的模式中,整个系统开发的流程就可以分为系统需求,组件 规划,组件设计与开发,组件组装,系统部署等过程。在这一个过程中,开发人 员在每一个阶段可以只关注于某一个方面,而不必关注于整个系统,这样,就降 低了软件的复杂性和增加了软件的透明度。 在组件规划阶段,系统设计人员只关注于系统的架构,定义每一个组件的功 能,接口,而不必关心组件的具体实现。 在组件设计与开发阶段,系统开发人员可以不必关注于整个系统提供的功 能,不必关注其他组件的内部逻辑,内部结构,内部实现等等,而只需要关注于 每一个具体组件的内部逻辑和内部结构。对于依赖的组件来说,由于在组件规划 阶段,组件接口已经被定义出来了,在依赖接口的帮助下,不同开发人员就可以 并行地进行不同组件的设计与开发。 ( 3 ) 设计模式 在程序设计开发中,设计可复用的软件是开发人员一直追求的目标。因此, 许多开发人员也一直在这一个领域探索,并且根据自身的项目经历和体会,将自 身积累的经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物联网工程技术高级职位面试实战模拟题
- 四川机电职业技术学院《食品包装学》2024-2025学年第一学期期末试卷
- 2025年本科院校招生就业处招聘考试知识点梳理与预测题解析
- 黑龙江护理高等专科学校《水科学导论》2024-2025学年第一学期期末试卷
- 广东省惠州五校2024-2025学年高二下学期第二次联考(期中)生物试题(解析版)
- 班主任交流管理课件
- 2025年项目经理竞聘答辩指南及模拟题集
- 甘肃省多校2024-2025学年高二下学期期中联考生物试题(解析版)
- 2025年物资调配与运输管理面试模拟题及答案详解
- 2025年现代仓储管理技能实训模拟题及答案解析
- 北京理工大学应用光学课件(大全)李林
- 高一第一堂班会课
- 【学生生涯规划系列】高一上学期生涯规划讲座课件
- 失智老年人走失风险评估表、“十人四追”法
- 焊接工艺要求
- 全员安全生产责任制度
- 工作桌面pad相关gec3000通讯协议v2
- 正压式呼吸器使用与管理规范
- GB∕T 37004-2018 国家物品编码通用导则
- 新部编人教版八年级上册道德与法治全册课时练(作业设计)
- DB14∕T 1131-2015 麦茬复播花生栽培技术规程
评论
0/150
提交评论