基于osgi的应用框架测试方法和系统的制作方法

文档序号:9921951阅读:359来源:国知局
基于osgi的应用框架测试方法和系统的制作方法
【技术领域】
[0001]本申请涉及通信领域,尤其涉及一种基于OSGI的应用框架测试方法、设备和系统。
【背景技术】
[0002]OSGI是一个基于Java的,提供动态模块加载和管理的运行时框架,运行时可以动态安装、更新OSGI bundle,该运行时框架有整套的标准环境组件,主要包含运行时环境、模块化(类装载策略)、生命周期管理、服务注册等组件。
[0003]其中,模块化具体表现为bundle形式作为OSGI的部署单元,通常以jar包的形式封装业务逻辑,提供给各个bundle部署时各单元使用的类
[0004]现有OSGI测试框架的基础原理如下:
[0005]首先,针对Test Suite(测试包)中包含了所有的测试代码,测试代码编写可以基于JUnit或TestNG等其他自定义测试框架封装的测试代码。在基于OSGI开发的应用框架,通过启动脚本或其他形式在初始化应用程序时,现有编写好的每个Test Suite都会注册到Test Framework Manager Center Bundle (测试框架管理中心Bundle),其中注册测试用例相关的信息,包含测试用例名称、测试描述、测试类、测试方法、测试步骤描述、测试预期结果,当应用框架启动成功后,所有相关测试实例都已经被注册到了 Test FrameworkManager Center Bundle ;在0361框架运行时阶段针对这些存储好的测试用例,可以通过用例唯一标识(用例名称或用例ID号)触发对应的测试用例执行,最终将获取的测试用例返回结果同预期结果比对后存储DB (Data Base,数据库),或展示在web页面,框架原理图如图1所示。
[0006]Test Framework Manager Center Bundle 在 OSGI 测试体系中控制每个 TestSuite初始化的测试用例,并统一注册到测试运行时框架中,在测试报告上可以指定用户输入的单个测试脚本、分功能批次或指定所有测试脚本运行产出,通过运行期控制每个测试脚本对应的Test Suite,从Bean实例层面执行Test Suite中对应方法进行框架功能验证,最终Test Framework Manager Center Bundle会将每个测试脚本指定的结果存储到DB中,并在web UI中展示给测试用用户。
[0007]OSGI框架是面向服务架构,系统bundle之间对象交互、服务的发布、引用方式是测试中需要着重突破点。这两部分在OSGI下bundle逻辑可以通过配置MANIFEST.MF文件,主要配置 Import-Package、Export-Package> DynamicImport-Package 等配置项来实现。
[0008]在OSGI测试体系建立过程中,现有的基于OSGI或Eclipse Equinox的研发的应用框架或应用程序,主要有三类测试框架设计理念来实现测试体系,最为常用的是基于OSGI bundle Layer service 的理念、基于 fragment-host 片段 bundle 理念、基于扩展点extens1n point并结合Fragment理念,还有部分测试框架采用基于Event Admin服务的Bundle间通讯机制,OSGI的Event Admin服务规范提供了研发同学基于发布/订阅的模型,通过事件机制实现Bundle间协作的标准通讯方式(特定场景测试)。
[0009]下面将着重其中OSGI Service Layer和Fragment两种通用OSGI测试框架理论,其他测试理论(扩展点或事件通知)仅仅为特殊框架领域测试理论。
[0010]方式一、基于OSGI Layer service/bundle MF的测试理论。首先通过利用服务层(service layer)提供的机制来实现模块间的松稱合,将Junit或TestNG测试框架实现为基于OSGI的测试框架Bundle,将相关的Junit相应服务或接口通过Bundle/OSGI MF文件、OSGI service方式提供给测试脚本编写者编写Test Framework Manager CenterBundle。实现上通过 BundleActivator 接口,在 MANIFEST.MF 中指定 Bundle-Activator 配置(图2);另一种是通过Declarative Services的方式实现,需要在MANIFEST.MF中指定Service-Component配置,此方式也是推荐使用的方式,通过DS提升了 Service发布和使用的简便性,可以很好的将Moudle分解为Component+Service的模式,并且无需编写java代码,所有的配置通过xml文件即可实现(图3),图4为该测试框架原理。
[0011]包装了原生的Junit和TestNG接口生成OSGI Service,通过Bundle MF文件方式导出Junit相关的接口和类给测试脚本编写者使用,建立Test Suit Bundle进行测试脚本编写,将实际的Target应用框架OSGI Bundle逻辑代码和同测试脚本分离,通过OSGI Service layer对测试脚本运行期依赖的OSGI环境和真实运行时环境一致,保证各个Bundle在测试环境依赖关注和导入导出逻辑测试正常。
[0012]方式二、基于Fragment Bundle的测试理论。
[0013]Fragment Bundle 可以作为多个主体 Bundle 的片段 Bundle, Fragment Bundle和主体Host Bundle是依附关系,首先Fragment Bundle本身无自己的Class loader,需要Host Bundle被框架追加到Host Bundle作为Host Bundle后再去做框架解析,总之,Fragment Bundle存在自身保护域但不存在自己的类加载系统Class loader。若片段Bundle和主bundle之间的类命名空间不一致会产生冲突,存在Fragment bundle类冲突后则无法附加到Host Bundle。
[0014]Fragment bundle增加了现有Host Bundle的类加载路径或范围,例如,需要使用不同数据库的驱动,可以将这些不同驱动作为Fragment Bundle。
[0015]因此,在测试OSGI过程中需要依赖Junit和TestNG提供的接口或服务,首先将其转换为 OSGI Junit/TestNG Bundle,并封装为 Test Framework Manager Center Bundle,并将相应的接口通过OSGI Service Layer方式发布出来提供给测试脚本编写者使用,而编写的测试用例Test Suit Bundle作为Fragment Bundle,在框架解析时附加到TestFramework Manager Center Bundle 中,最终由 Test Framework Manager Center Bundle同OSGI应用框架运行时进行交互,真正运行期的Test Suit Bundle脚本作为片段Bundle同测试框架Test Framework Manager Center Bundle合为一体,减少了测试Bundle的维护成本,也做到了测试代码和应用框架逻辑分离,以及模拟了真正OSGI运行时环境。图5为该测试框架原理。
[0016]在实现本申请的过程中,本申请的申请人发现现有技术存在以下缺陷:
[0017]方式一所对应的测试方式面临的问题在于,需要测试人员维护编写的多个测试bundle,通过采用OSGI service interface方式作为测试粒度需要进行优化,有些OSGI环境下测试很难模拟的场景导致代码覆盖率难以提升。
[0018]方式二所面临的问题在于,测试脚本Test Fragment维护后越来越庞大时会面临片段Bundle在运行时加载体积过大难以拆分为多个Fragment Bundle,同时难以解决OSGI运行时模拟异常或特殊场景的细粒度测试,例如,一般单元测试可以很好的模拟主机host获取和连接异常时对返回信息的判断,因此需要考虑更好OSGI的细粒度测试方案。
[0019]基于上述的缺陷,如何更好的在OSGI运行时中进行细粒度测试成为了现有技术方案亟待解决的重要问题。

【发明内容】

[0020]本申请提供了一种基于OSGI的应用框架测试方法和设备,能够解决现有技术中,无法在OSGI运行时中进行细粒度测试的问题。
[0021]为达到上述目的,本申请实施例一方面提供了一种基于OSGI的应用框架测试方法,应用于包括测试组件配置包Test Assembly Config Bundle的OSGI测试框架中,所述Test Assembly Config Bundle中至少包括一个测试框架管理中心包Test FrameworkTrigger Center Bundle,所述方法包括:
[0022]所述Test Assembly Config Bundle根据通过启动脚本传入的D参数,确定应用框架OSGI Bundle的软件架构MF文件的导入导出类;
[0023]所述Test Assembly Config Bundle与OSGI运行时交互隔离测试代码和所述OSGIBundle逻辑代码;
[0024]所述Test Assembly Config Bundle 通过所述 Test Framework Trigger CenterBundle,按照测试用例标识触发相应的测试用例的执行,并按照所述MF文件的导入导出类,通过所述OSGI Bundle输出相应粒度的测试结果。
[0025]优选的,所述Test Assembly Config Bundle 通过所述 Test Framework TriggerCenter Bundle,按照测试用例标识触发相应的测试用例的执行,并按照所述MF文件的导入导出类,通过所述OSGI Bundle输出相应粒度的测试结果,具体包括:
[0026]所述Test Framework Trigger Center Bundle 加载 OSGI 运行时下的各测试用例信息;
[0027]所述Test Framework Trigger Center Bundle根据通过启动脚本传入的D参数所确定的OSGI Bundle MF文件的导入导出类,控制所有的测试数据包;
[0028]所述Test Framework Trigger Center Bundle 测试 OSGI Bundle MF 文件中新增的标签;
[0029]所述TestFramework Trigger Center Bundle通过测试接口控制与 OSGI BundleMF文件的导入导出类相对应的测试过程范围,并存储相应的测试结果到数据库DB中;
[0030]所述Test Assembly Config Bundle通过所述OSGI Bundle输出相应粒度的测试结果。
[0031]优选的,所述方法,还包括:
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1