进程内组件对象的创建方法和系统技术方案

技术编号:6865314 阅读:269 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出了一种创建进程内组件的对象的方法,包括以下步骤:在一应用程序中嵌入一进程外组件,所述进程外组件具有创建所述进程内组件的对象并记录所创建的进程内组件的对象的接口的功能;启动所述应用程序;在所述应用程序发出定位所述进程内组件的请求以创建进程内组件的对象时,将所述请求定向到所述进程外组件,以创建所述进程外组件的对象;所述进程外组件的对象创建所述进程内组件的对象,并记录所创建的进程内组件的对象的接口。在不同于该应用程序的另一应用程序处,可以获取进程外组件对象的接口并访问进程外组件所提供的服务,以获取进程内组件对象的接口,从而可以直接驱动进程内组件对象。此外,本发明专利技术还提出了一种创建进程内组件的对象的系统。

【技术实现步骤摘要】

本专利技术涉及计算机程序编码和测试领域,更具体地,涉及一种进程内组件的创建方法和系统。
技术介绍
随着人们对软件需求的不断增加,软件的功能、可操作性、智能化程度等也迅速发展,从而使软件变得更加复杂、更加庞大,开发的难度也越来越大,开发的周期越来越长,参与开发人数越来越多。为了减少重复劳动,降低被开发软件出错的概率,软件复用技术也就应运而生。在过去的几十年里,软件复用得到了越来越广泛的应用。组件技术是上世纪90年代初出现的一种新技术,它是在结构化设计和面向对象技术的基础上发展起来的,是面向对象技术之后的软件开发的标准方法体系,是面向对象的开发技术的延伸。在组件规范化的过程中,许多公司和组织都做出了许多模型,常见的组件模型有 CORBA (公共对象请求代理体系结构)、C0M(组件对象模型),EJB组件和.Net组件。下面,“组件”以微软公司的COM为例进行说明。COM的使用非常广泛,许多桌面应用都采用了 COM技术,包括自动化技术(OLE自动化),ActiveX控件技术等。根据C0M/DC0M中客户应用程序和组件程序的交互关系,可以将组件分为进程内组件和进程外组件两种。所谓进程内组件是指客户应用程序和组件程序在同一个进程地址空间内;进程外组件指客户应用程序和组件程序分别处在不同的进程空间地址中。进程内组件是通过将组件作为动态链接库(DLL)来实现的,客户应用程序将组件程序加载到自己的进程地址空间后再调用组件程序的函数。对于这两种不同的组件,客户应用程序和组件程序交互的内在方式是完全不同的。但是对于功能相同的进程内和进程外组件,从程序编写的角度看,客户应用程序是以同样的方法来使用组件程序的,客户应用程序不需要做任何的修改。获取和驱动组件有两个重要作用。对于新开发的组件,可以通过获取和驱动组件, 来进行自动测试;对于已经开发出来的组件,在进行应用程序迁移时,通过获取和驱动组件,可以重复利用已经开发出来的组件而不用重新编写。对于进程内组件,如果在另外一个进程中能够获取组件对象的接口,那么驱动组件对象并获取组件对象的数据都非常方便。但是,采用通用方法在另外一个进程中获取进程内组件对象接口较难。现有的可以获取和驱动进程内组件的方法主要包括以下两种1)分析应用程序的内存。在该方法中,在应用程序启动并加载了进程内组件之后, 在应用程序的内存中访问该组件,然后通过分析内存中的数据,来获取组件的数据。该方法针对应用程序中相同组件的不同对象以及不同应用程序的相同组件对象都需要分别进行分析和处理,因此非常复杂;以及2)通过组件句柄得到组件对象。在该方法中,通过应用程序中的组件句柄来访问组件对象,然后通过调用组件对象的函数和方法来获取和驱动组件。这种方法依赖于目标应用程序所使用的开发语言。比如用VB开发的程序和VC开发的程序,获取组件对象的方法都不一样。参考文献给出了一种测试应用程序的方法,其中,将一个测试代理模块嵌入到被测应用程序中,用以完成测试用例中各测试步骤的执行。测试代理按照测试步骤,获取和驱动被测应用程序中的组件,以完成测试。图1是示出了参考文献的测试应用程序的系统的各个单元的示意框图。各个单元描述如下 测试客户端主控樽块101 作为测试客户端应用稈序的主控樽块,负靑加载泖I 试用例到共享数据存储单元300中,并管理测试流程。 测试启动单元102 用于捭索测试代理窗口单元203,向搜索到的测试代理窗口单元203发送测试用例的ID集合以及测试指令。 被测应用稈序主控樽块201 作为被测应用程序的主控模块,用于加载其他模块和/或单元,比如讲稈内组件单元202和测试代理窗口单元203。 讲稈内组件单元202 是被测应用程序的进程内组件,比如.dll或.OCX文件。 进程内组件单元202作为客户端运行在被测应用程序的进程中,是被测应用程序的进程的一部分。 嵌入的测试代理窗口单元203 作为测试代理樽块。嵌入的测试代理窗口单元 203是一个随被测应用程序一起启动的对用户而言隐藏(不可见)的单元。嵌入的测试代理窗口单元203从测试启动单元102接收测试指令,以开始测试,并从共享数据存储单元中读取测试客户端主控模块101加载的测试用例,按照测试用例的测试步骤,在需要时驱动进程内组件单元202,得到测试结果,并将测试结果写入共享数据存储单元中。 共享数据存储单元300 存储测试用例以及测试结果。被测应用程序中嵌入的测试代理窗口单元203和测试客户端的主控模块101均能读写此共享数据存储单元。图2是示出了参考文献的测试应用程序的方法的流程图。在该测试方法开始后,测试客户端主控模块101将测试用例加载到共享数据存储单元300中(步骤S201)。然后,测试客户端主控模块101触发测试启动单元102以搜索测试代理窗口单元203,并将测试用例ID集合以及测试指令发送给搜索到的测试代理窗口单元203(步骤S202)。测试代理窗口单元203接收到测试指令后,开始测试。测试代理窗口单元203根据接收到的测试用例ID集合,从共享数据存储单元300中读取测试用例,并依次处理每一个测试用例(步骤S203)。测试代理窗口单元203按照测试用例的测试步骤, 驱动进程内组件单元202,并获得进程内组件单元的数据(S204)。然后,测试代理窗口单元 203确定测试结果,并将测试结果写入共享数据存储单元300 620 。由此,测试客户端主控模块101可从共享数据存储单元中300中获取测试结果(S206)。图3是示出了根据参考文献的测试应用程序的方法的一个示例的示意图。图3所示的示例以Microsoft Office的spreadsheet ActiveX作为要测试的应用程序的进程内组件为例。在图3中,各个模块之间的连接线上标注的数字表示该示例方法的执行顺序。这种解决方案的缺点在于,测试客户端并不能获取进程内组件对象的接口,对进程内组件的获取和驱动受限制,必须通过共享数据存储进行数据交换,而不能直接在测试客户端驱动进程内组件对象并获取数据。因此,需要一种创建进程内组件的对象的方法,以便能够直接在测试客户端获取所创建的进程内组件对象的接口从而驱动进程内组件的对象并获取其数据。1.中国专利技术专利申请,申请号=CN 200410079042. 5,专利技术名称“一种应用程序的自动测试方法”.
技术实现思路
鉴于现有技术的上述缺点,本专利技术提出了一种创建程内组件的对象的方法,其中, 在目标应用程序中嵌入一进程外组件,所述进程外组件具有创建所述进程内组件的对象并记录所创建的进程内组件的对象的接口的功能,在所述目标应用程序发出定位所述进程内组件的请求以创建进程内组件对象时,将请求定向到进程外组件,以创建进程外组件的对象,该进程外组件的对象将创建所述进程内组件的对象并记录所创建的进程内组件的对象的接口。因此,在不同于所述应用程序的应用程序中,可以查询所创建的进程外组件的对象的接口并获取其所记录的进程内组件的对象的接口,进而直接驱动进程内组件的对象。根据本专利技术的第一方面,提出一种创建进程内组件的对象的方法,包括以下步骤 在一应用程序中嵌入一进程外组件,所述进程外组件具有创建所述进程内组件的对象并记录所创建的进程内组件的对象的接口的功能;启动所述应用程序;在所述应用程序发出定位所述进程本文档来自技高网
...

【技术保护点】
1.一种创建进程内组件的对象的方法,包括以下步骤:在一应用程序中嵌入一进程外组件,所述进程外组件具有创建所述进程内组件的对象并记录所创建的进程内组件的对象的接口的功能;启动所述应用程序;在所述应用程序发出定位所述进程内组件的请求以创建进程内组件的对象时,将所述请求定向到所述进程外组件,以创建所述进程外组件的对象;以及所述进程外组件的对象创建所述进程内组件的对象,并记录所创建的进程内组件的对象的接口。

【技术特征摘要】

【专利技术属性】
技术研发人员:宋才良孟昕史敬威王炼刘慧峰刘晓炜
申请(专利权)人:日电中国有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1