CN101807168B - 一种支持版本兼容的数字终端测试环境及其构建方法 - Google Patents
一种支持版本兼容的数字终端测试环境及其构建方法 Download PDFInfo
- Publication number
- CN101807168B CN101807168B CN2010101253930A CN201010125393A CN101807168B CN 101807168 B CN101807168 B CN 101807168B CN 2010101253930 A CN2010101253930 A CN 2010101253930A CN 201010125393 A CN201010125393 A CN 201010125393A CN 101807168 B CN101807168 B CN 101807168B
- Authority
- CN
- China
- Prior art keywords
- class
- encapsulation
- digital terminal
- module
- application framework
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种支持版本兼容的数字终端测试环境及其构建方法,基于HOST-TARGET架构的测试平台构建数字终端的测试环境,在TARGET端利用Java反射机制来实现。所述的数字终端测试环境包括通信模块、驱动模块和捕获反馈模块,实现每一个功能模块时,首先建立系统版本号与应用框架类的映射表,在此基础上,为应用框架类做封装类,封装类利用Java反射机制实现统一的接口,最后,利用抽象工厂模式创建封装类实例,调用封装类实例的方法实现相应的功能,最终,在Java反射机制的基础上,为数字终端的自动化测试实施提供了可行方法。基于本方法构建的测试环境,能应用于不同版本的数字终端,降低了测试环境对终端系统的依赖性。
Description
技术领域
本发明属于自动化测试领域,尤其针对数字终端的自动化测试领域。
背景技术
随着普适计算技术的飞速发展,以智能手机、PDA、智能家电以及便携式媒体中心为代表的数字终端设备不断发展和成熟,拥有越来越丰富的第三方应用程序并且具有人机交互的软、硬件界面。对数字终端平台上的应用程序的功能、可信度和安全性进行测试已经成为程序数字终端厂商、数字终端操作系统提供商、移动运营商和移动用户面临的一个重要问题。
目前,数字终端测试主要以人工测试为主。基于脚本的自动化测试工具是当前流行的自动化测试解决方案。如果能将自动化测试引入数字终端测试,上面的问题将很容易解决。主机-数字终端(HOST-TARGET)是一种有效的数字终端自动化测试方式,采用这种测试方式时,需要在数字终端上构建测试环境。
数字终端生产厂商发布一个新版本系统后,测试人员为了实现对数字终端第三方应用程序进行全面、有效的测试,需要在新版本上构建新的测试环境。多版本的并行构建增加了开发成本,提高了测试环境的管理成本,同时增加了维护难度。另一方面,在较高系统上构建的测试环境无法在低版本系统上运行,造成了测试环境的复用率低,版本兼容性差。而较低版本系统开放的应用程序编程接口(API,Application Programming Interface)种类非常少(Android数字终端系统2.0以前的版本未开放蓝牙API,无法调用蓝牙API实现具有通信功能的应用程序),仅依赖于软件开发工具包(SDK,Software Development Kit)的开发满足不了开发人员的需求,从而大大降低了测试环境的便捷性、灵活性,因此协调两者的矛盾是亟需解决的问题。
数字终端厂商不断发布新的系统版本,新版本的系统有时会对实现相应功能的类和方法进行修改,这是造成测试环境版本兼容性差的主要原因。而Java反射机制是指Java程序可以于运行时加载、探知、使用编译期间完全未知的类,因此可以基于Java反射机制构建测试环境,测试环境能够在运行时获取系统版本,动态加载与当前系统版本对应的应用框架类以实现相应的功能。
发明内容
针对上述需求,本发明将Java反射机制与HOST-TARGET测试架构相结合,提出一种支持版本兼容的数字终端测试化境的构建方法,主要利用Java反射机制动态加载具有通信、驱动以及捕获反馈功能的应用框架类,通过调用这些应用框架类实例的方法来实现相应的功能,辅助测试平台完成对数字终端的自动化测试。
本发明提出的一种支持版本兼容的数字终端测试环境的构建方法,基于HOST-TARGET架构的测试平台构建数字终端的测试环境,在TARGET端构建测试环境具体包括下面步骤:
步骤一、将数字终端的测试环境分为三个功能模块:通信模块、驱动模块、捕获反馈模块;
步骤二、利用Java反射机制,根据实际需要为实现三个功能模块的应用框架类做封装类,实现封装类的方法,并设计封装类的自动获取机制;
首先在实现通信模块方面,建立系统版本号、通信方式与通信应用框架类的映射表,在实现驱动模块方面,建立系统版本号与驱动应用框架类的映射表,在实现捕获反馈模块方面,建立系统版本号与捕获反馈应用框架类的映射表;然后在此基础上,为上述的三种应用框架类做封装类,封装类利用Java反射机制实现统一的接口;最后,利用抽象工厂模式创建封装类实例,实现封装类的自动获取机制;
步骤三、在步骤二的基础上各模块根据当前系统版本号自动获取相应的封装类实例,通过调用封装类实例的方法实现各模块的功能;
步骤四、将三个模块整合,并添加错误信息提示功能,完成数字终端测试环境的构建。
最终,Java反射机制与HOST-TARGET测试架构相结合,提出一种支持版本兼容的数字终端测试环境的构建方法,实现了一种新的对数字终端进行自动化测试机制。该测试机制在一定程度上屏蔽不同版本API的差异性,能够大大提高测试环境的复用率、降低数字终端厂商的测试成本。
本发明提出的支持版本兼容的数字终端测试环境,包括通信模块、驱动模块以及捕获反馈模块三部分。三个模块功能的实现都采用了Java反射机制。具体如下:
通信模块采用Java反射机制获取通信应用框架类,能通过多种通信方式与HOST进行连接,并负责将数字终端发送的数据转发到驱动模块,将数字终端本身的打包数据反馈给主机。
驱动模块实现模拟用户输入的功能,接收通信模块转发过来的主机HOST的测试命令,通过模拟用户输入向数字终端注入测试激励以驱动数字终端的执行。因而,模拟用户输入是实现HOST-TARGET测试环境的关键环节。
捕获反馈功能动态加载与当前系统版本对应的捕获反馈功能的应用框架类,实现对数字终端系统的实时捕获,并将反馈信息打包发送到通信模块回传。
本发明的优点与积极效果在于:
(1)本发明构建的测试环境能够应用于多个数字终端系统版本之上,真正实现一次开发,多版本系统之上运行。
(2)本发明提出的多版本兼容的测试环境的构建方法具有普适性,适用于Android和其他以Java为开发语言的数字终端平台。
(3)扩展低版本的API,低版本数字终端系统对开发人员开放的API种类较少,无法满足开发人员的需求,本发明提出的基于Java反射机制的方法可以使开发人员在运行时动态加载应用框架类和方法完成所需的功能,从而摆脱对SDK中API的过度依赖。
(4)本发明所述的构建方法提高了测试环境的数字终端系统版本兼容性,避免了测试环境的多版本并行构建,降低了测试环境的构建、维护成本。
(5)本发明所述的构建环境在保证数字终端系统版本兼容性的同时,提高了测试环境的可扩展性,出现新版本系统时,可以对测试环境进行扩展,而不需重复开发,以支持新版本数字终端系统的测试。
附图说明
图1是基于HOST-TARGET测试平台的测试环境的整体架构图;
图2是一种支持版本兼容的数字终端测试环境的构建方法流程图;
图3是基于抽象工厂模式创建封装类实例图;
图4是本发明构建的数字终端测试环境中通信模块获取封装类实例的执行流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图和实施例对本发明作进一步的详细和深入描述。
本发明提供的构建方法基于主机-数字终端即HOST-TARGET架构的测试平台,通过该方法构建的数字终端测试环境,支持数字终端系统的自动化黑盒测试的实施,HOST端的测试环境负责向TARGET端测试环境发送测试命令,并对捕获反馈模块所捕获的信息保存和处理,以使测试平台能够利用数字终端反馈信息控制测试流程或进行结果验证。
采用基于HOST-TARGET架构测试平台构建的测试环境,如图1所示,整体架构分为两个部分:测试主机HOST用于运行测试平台实施测试,包括测试代码开发模块M01、测试代码保存模块M02、测试代码执行模块M03、测试数据处理模块M04与测试主机通信模块M05;数字终端TARGET端是被测系统,包括终端驱动模块M06、捕获反馈模块M07与数字终端通信模块M08。
本发明提出的支持版本兼容的数字终端测试环境包括数字终端的三个模块:通信模块、驱动模块和捕获反馈模块,分别对应上述数字终端TARGET端的数字终端通信模块M08、终端驱动模块M06和捕获反馈模块M07。数字终端与主机端结合一起进行测试过程中,各模块之间的关系如下:
测试代码开发模块M01,提供用户对测试代码和中断、异常代码的编写环境,包括代码的辅助生成工具,开发完测试代码后进入测试代码保存模块M02;测试代码保存模块M02,将测试代码以统一格式存储,并为测试代码执行模块M03提供读取接口;测试代码执行模块M03,根据测试配置解析测试代码并翻译成为测试指令,并将测试指令发送至测试数据处理模块M04进行处理;测试数据处理模块M04,用于接收测试指令,然后打包封装并发送到测试主机通信模块M05,另外接收测试主机通信模块M05返回的测试数据,进行测试结果的校验,同时根据返回的测试数据控制测试代码执行模块M03中测试代码的执行进度;测试主机通信模块M05,负责与数字终端TARGET通信,向数字终端通信模块M08发送由测试数据处理模块M04打包的数据,以及将数字终端通信模块M08的反馈数据转发到测试数据处理模块M04;数字终端通信模块M08,与测试主机HOST的测试主机通信模块M05相互通信,并负责将HOST发送的数据转发到终端驱动模块M06,并且将数字终端本身的打包数据反馈给测试主机;终端驱动模块M06,用于接收数字终端通信模块M08的测试指令,并将测试指令解析为终端动作驱动数字终端运行,实现模拟用户输入的功能;捕获反馈模块M07,负责捕获终端驱动后的反馈,并将反馈信息打包发送到数字终端通信模块M08回传。
本发明提出的方法主要应用于数字终端TARGET端,图2给出了流程图。P0表示将在数字终端的测试环境分为三个模块来实现,三个模块分别为数字终端TARGET端的通信模块(对应图1中数字终端通信模块M08)、驱动模块(对应图1中终端驱动模块M06)和捕获反馈模块(对应图1中捕获反馈模块M07)。在实现数字终端的测试环境时,通信模块、驱动模块和捕获反馈模块三个模块的功能实现都采用Java反射机制,实现多版本兼容性时采用了相同的方法,由于通信模块除了要考虑多种版本以外还要考虑多种不同的通信方式,因而实现时更复杂,在此给出通信模块在实现多版本兼容时的设计,其他两部分依此实现即可。P1表示实现通信模块的过程,首先,P101建立系统版本号、通信方式与通信应用框架类的映射;在此基础上,P102为通信应用框架类做封装类,封装类实现统一的接口,针对不同的版本具有不同的实现方式,实现时利用Java反射机制;P103实现封装类的自动获取机制,能够根据系统版本号和通信方式自动获取对应的通信方式的封装类;同理P3和P4分别是驱动模块功能和捕获反馈模块功能的设计。三个功能模块都设计完以后,P2、P5和P6分别利用上述的设计实现了三个模块的功能。P2根据系统版本号和通信方式自动获取通信封装类,调用封装类实例的方法实现通信功能。P5根据系统版本号自动获取驱动封装类,调用封装类实例的方法实现驱动功能。P6根据系统版本号自动获取捕获反馈封装类,调用封装类实例的方法实现捕获反馈功能。最终通过P7整合三个功能模块,实现具有版本兼容性的测试环境。
下面主要以通信模块功能的实现为例来说明图2中P1过程,具体包括下面三个步骤。
步骤一、建立系统版本号、通信方式与应用框架类的映射。
随着数字终端系统不断升级,许多功能的实现逻辑随着系统升级而更改,不同的系统版本实现通信功能时采用不同的应用框架类和方法,这是造成版本不兼容的主要原因。基于本发明的方法构建的版本兼容性的测试环境部署到具体的系统后,能够获取当前系统版本,根据查询映射表动态加载与当前系统对应的通信应用框架类。因而在设计通信模块时,需要查看系统已有的版本,建立系统版本号与通信应用框架类的映射表。现有通信方式、系统版本号与通信应用框架类名的映射对应如表1所示。表中列出了两种通信方式蓝牙(Bluetooth)与WI-FI,在每个版本中实现通信功能的应用框架类的名称,以版本1.0为例,实现蓝牙(Bluetooth)通信功能的应用框架类是RFCOMMSocket,实现WI-FI通信功能的应用框架类是Wifi,其他版本依此类推。其中,WI-FI是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术。
表1通信方式、系统版本号与通信应用框架类的映射表
系统版本号 | Bluetooth | WI-FI |
1.0 | RFCOMMSocket | Wifi |
1.1 | BluetoothSocket | WifiComm |
2.0 | BluetoothClass | WifiClass |
对于驱动模块功能的实现,在该步骤中需要建立系统版本号与驱动应用框架类的映射表,对于捕获反馈模块功能的实现,则需要建立系统版本号与捕获反馈应用框架类的映射表,如图2所示。
步骤二、为实现通信功能的应用框架类做封装类,封装类实现统一的接口,针对不同的版本具有不同的实现方式,实现时利用Java反射机制。
在步骤一中,建立了系统版本号与应用框架类的映射表,不同版本的应用框架类在实现通信功能时,可能使用不同的方法和控制逻辑。为了屏蔽不同版本的差异性,为每个通信应用框架类做封装类,封装类将应用框架类实例作为其私有属性,封装类实现统一的接口,接口方法的实现依赖于对应版本的应用框架类实例的方法,封装类的方法调用应用框架类实例的方法完成相应的功能。
系统版本升级时可能未对通信应用框架类进行修改,此时的封装类与前一个版本的封装类完全相同。因而,不必为每个版本的应用框架类做封装类。在设计过程中,应该根据实际需要来创建封装类,下面给出是否需要创建封装类的判断标准:系统版本升级时,若通信应用框架类未改变或者只修改了类名,则无需创建新的封装类,利用前一个版本的封装类即可。若应用框架类中的方法名或方法的功能改变,则需要创建新的封装类。封装类的版本号与升级后系统版本号相同。这样,既满足了屏蔽版本差异性的要求,又减少了封装类的个数。表2给出了系统版本号与封装类、通信应用框架类以及封装类版本号的映射关系,如表2中所示:系统版本由1.0升级到1.1时,应用框架类的方法名和方法功能未发生变化,因而,未创建新的封装类,利用前一个版本1.0的封装类。系统版本升级到2.0时,应用框架类的方法名和方法功能发生变化,创建了新的封装类,封装类的版本为2.0。
表2系统版本号与封装类、通信应用框架类以及封装类版本号的映射表
上述给出了何时创建封装类的判断方法,下面给出封装类内部实现方法。应用框架类实例是封装类的私有属性,封装类的方法通过调用应用框架类实例的方法完成通信的功能。因而在实现每个封装类的方法之前,需要完成应用框架类实例的初始化。封装类的构造方法完成动态加载应用框架类并创建应用框架类实例的过程。实现时,封装类的构造方法可以根据表2找到相应的应用框架类名,然后利用Java反射机制根据应用框架类名动态加载应用框架类的实例。由于一个封装类可能与多个应用框架类名相对应。在加载应用框架类实例时,需要根据系统版本号查询应用框架类的类名,加载对应的应用框架类实例。以表2中的封装类BluetoothV1_0为例,若当前系统版本为1.0,其构造方法根据表2获得对应的应用框架类名为RFCOMMSocket,利用Java反射机制加载类名为RFCOMMSocket的类实例,若当前系统版本为1.1,其构造方法根据表2获得对应的应用框架类名为BluetoothSocket,利用Java反射机制加载类名为BluetoothSocket的类实例。
在实现封装类的方法时,首先,针对每个封装类的方法,确定实现该封装类的方法时所使用的应用框架类实例方法和调用顺序。然后,封装类的方法利用Java反射机制依次调用这些应用框架类实例的方法完成相应功能。
在实现通信模块功能时,封装类接口可以使用四个方法,分别是connect(连接),send(发送),receive(接收),disconnect(断开)。在不同的封装类中四个方法根据不同的版本具有不同的实现逻辑,它们利用Java反射机制动态调用当前版本应用框架类实例的方法实现相应的功能。以connect方法为例,封装类BluetoothV1_0是版本1.0和1.1的封装类,如果系统版本号为1.0,其connect方法调用应用框架类RFCOMMSocket实例的方法实现连接功能,否则调用类BluetoothSocket实例的方法,而封装类BluetoothV2_0的connect方法调用应用框架类BluetoothClass实例的方法实现连接功能。
具体实现时用到映射数据结构,在此主要用到两个映射,HashMap<String,String>v2vmap是系统版本号到封装类版本号的映射,其中HashMap<String,String>是Java容器中的映射类型,此处是String类型到String类型的映射,v2vmap是定义的变量名。这个映射使开发环境能够根据当前的系统版本号获得封装类版本号。HashMap<String,String>v2classnamemap是系统版本号到应用框架类名的映射,其中v2classnamemap是映射的变量名,封装类根据这个映射动态加载与当前系统版本对应的应用框架类实例。
对于驱动模块功能的实现,在该步骤中需要建立系统版本号与封装类、驱动应用框架类以及封装类版本号的映射表,并为驱动应用框架类做封装类,对于捕获反馈模块功能的实现,在该步骤中则需要建立系统版本号与封装类、捕获反馈应用框架类以及封装类版本号的映射表,并为捕获反馈应用框架类做封装类。
步骤三、利用抽象工厂模式实现封装类的自动获取机制,使开发人员能够根据系统版本号和通信方式自动获取通信封装类。
通信模块有多种不同的通信方式,每种通信方式在不同版本系统上实现具有差异性,为了实现版本兼容,将基于本发明实现的测试环境部署到数字终端后,需要能够获取系统的版本,然后根据系统版本和通信方式获取相应的封装类。在此,给出了封装类的自动获取机制。为了阐述实现机理,这里只给出了两种通信方式,分别是蓝牙通信和WI-FI通信,在实际操作过程中,可以根据需要扩充通信方式。
通信模块封装类的自动获取机制采用了抽象工厂模式,通过此种方式实现时,对用户隐藏了封装类的创建过程,选择通信方式和获取系统版本后,调用CommunicationClass类实例的getConcreteClass(String mode,String mapversion)方法即可完成初始化,获得封装类实例,其中参数mode表示通信方式,mapversion表示封装类的版本号,类型是String。
采用抽象工厂模式的结构如图3所示。图中用统一建模语言(UML,Unified ModelingLanguage)图给出了类的关系,图中虚线表示类的依赖关系,实线表示类的继承关系,数据类型表示Java类,接口表示Java接口。类Creator是创建者角色,有两个具体创建者角色,分别是类CreatorV1_0和类CreatorV2_0,它们都调用两个工厂方法bluetoothFactory()和wifiFactory()创建具体的通信类实例,这两个工厂方法与右侧的封装类一一对应,CreatorV1_0中的bluetoothFactory()方法创建封装类BluetoothV1_0的类实例,wifiFactory()方法创建封装类WifiV1_0的类实例,CreatorV2_0中的bluetoothFactory()方法创建封装类BluetoothV2_0的类实例,wifiFactory()方法创建封装类WifiV2_0的类实例。类CommunicationClass负责通信类的创建,通过方法getConcreteClass(String mode,String mapversion)完成这一功能,该方法实现时依赖于上文提到的具体创建者角色CreatorV1_0和CreatorV2_0,若getConcreteClass方法的参数mapversion为1.0,则创建具体工厂类CreatorV1_0的实例,否则创建具体工厂类CreatorV2_0的实例,获得具体工厂类的实例后,getConcreteClass方法根据参数mode选择调用具体工厂类实例的方法,若mode为bluetooth,则调用bluetoothFactory()方法,若mode为WI-FI,则调用wifiFactory()方法。右侧是通信类的继承关系,蓝牙通信类Bluetooth和WI-FI通信类Wifi实现了Communication接口,Communication接口是个统一的实现通信功能的接口,它包含了实现通信功能的方法connect(连接),send(发送),receive(接收),disconnect(断开)。由于数字终端系统存在多个版本,通信类派生出多个封装类。
采用上述设计方法,测试环境获得通信方式mode和封装类版本mapversion后,通过创建CommunicationClass类的实例并调用其getConcreteClass(String mode,Stringmapversion)方法即可完成封装类的自动获取。
步骤二中完成了多个版本的封装类的内部实现,步骤三借助步骤一和步骤二中的映射表,完成了封装类的自动获取。开发人员获取系统版本号和通信方式后,通过步骤三,仅调用方法getConcreteClass(String mode,String mapversion)即可实现获取封装类这一过程。
如图2所示,对于驱动模块功能的实现,在步骤三中能够根据系统版本号自动获取驱动封装类,调用封装类实例的方法实现驱动功能;对于捕获反馈模块功能的实现,在步骤三中能够根据系统版本号自动获取捕获反馈封装类,调用封装类实例的方法实现捕获反馈功能。
通过以上三步,开发人员可以获取封装类实例并执行其方法,以实现通信模块为例,通过封装类的构造方法创建封装类实例时,实现了应用框架类实例的创建。获取封装类的实例主要过程是:首先根据通信方式和系统版本号获取封装类,在以实现通信模块为例的步骤三中给出了自动获取封装类的详细设计,通过这个设计,开发人员仅需调用一个getConcreteClass方法即可实现获取封装类这一过程;然后调用封装类的构造方法创建封装类的实例,以实现通信功能为例的步骤二中封装类的构造方法实现了利用Java反射机制动态加载与当前版本对应的应用框架类,创建与当前系统版本对应的应用框架类实例,并将应用框架类实例赋值给自身的私有数据成员。获取封装类的实例后,因为不同的封装类实例实现了统一的接口,所以它们的方法名称和参数相同,封装类实例方法依赖于应用框架类实例方法完成相应功能,在不同的版本系统中,应用框架类在实现某一特定功能时具有不同的逻辑,因而封装类实例方法的内部执行过程为:根据当前版本应用框架类实例实现接口方法时使用的应用框架方法和调用顺序,利用Java反射机制依次调用这些应用框架实例的方法完成相应功能。在步骤二中,给出了封装类的方法的实现方法。
图4给出了在1.1版本的系统上部署测试环境,测试人员选用蓝牙通信方式,以数字终端测试环境中的通信模块为例,获取封装类实例的流程,包括步骤P01-P20,具体是:当测试人员将测试环境部署到版本为1.1的系统上以后,运行开始前,执行P01配置测试环境,选择蓝牙通信方式Bluetooth;然后执行P02获取当前的系统版本,此处版本为1.1;此后,执行P03测试环境开始初始化;P04查询系统版本到封装类版本的映射表v2vmap,由于1.1版本不是通过主版本升级而来,没有自己的封装类,需要获取1.0的封装类BluetoothV1_0,P05判断查询映射表是否成功,若成功将会获得封装类版本为1.0,执行步骤P06,若查询不成功转步骤P14;P06通过创建CommunicationClass类的实例,并调用实例的getConcreteClass(“Bluetooth”,“1.0”)方法实现封装类实例的创建;P07根据getConcreteClass的参数“1.0”创建了具体工厂类CreatorV1_0的类实例creatorv1_0;P08根据参数“Bluetooth”调用creatorv1_0的bluetoothFactory()方法;P09中bluetoothFactory()查询系统版本号到实现蓝牙功能的应用框架类名的映射并获取应用框架类名;P10判断查询是否成功,若成功将会获得应用框架类名为BluetoothSocket,执行步骤P11,若不成功转步骤P14;P11中bluetoothFactory()调用newBluetoothV1_0(″BluetoothSocket″)创建封装类的实例bluetoothv1_0;P12BluetoothV1_0构造函数利用Java反射机制动态创建应用框架类BluetoothSocket的实例,封装类的接口方法要利用Java反射机制调用这个类实例实现相应的功能(图2中M2);最终,P13初始化完成,获得封装类实例bluetoothv1_0。如果P05和P10中查找映射表失败,则P14给出错误提示信息。查询映射表失败可能是由于当前系统是新版本,测试环境不支持造成的;P15检验查询映射表失败是不是由于新版本造成的;如果当前版本是新版本,则进行P16为新版本系统中的应用框架类做封装类;然后执行P17,针对新版本系统通信功能的逻辑,实现封装类的统一接口;添加后P18更新两个映射表;P19将修改的测试环境重新部署到新版本上运行;如果P15经过检验,当前的系统不是新的版本,则查询映射失败可能由映射表出现错误或者测试环境出现错误造成的。此时,开发人员应该调试测试环境,找出问题所在,执行P20修正映射表、修改程序错误,然后执行P19将测试环境重新部署到数字终端上执行。
在本发明中应用框架,特指手机开发领域中,程序间共同的结构,让该领域中的程序设计人员,依共同结构开发应用程序,应用框架中使用的类就称为应用框架类,比如Android中的应用框架类。本发明提到的封装类是为了屏蔽不同版本应用框架类,为应用框架类做的包装类,将应用框架类封装到一个新类中,应用框架类的实例作为封装类的私有属性,封装类的方法实现功能时要调用应用框架类实例的方法。
Claims (5)
1.一种支持版本兼容的数字终端测试环境的构建方法,该方法基于主机-数字终端架构的测试平台构建数字终端的测试环境,其特征在于,具体包括下面步骤:
步骤一、将数字终端的测试环境分为三个功能模块:通信模块、驱动模块、捕获反馈模块;所述的通信模块通过多种方式与主机进行连接通信,并负责将数字终端发送的数据转发到驱动模块,将数字终端本身的打包数据反馈给主机;所述的驱动模块实现模拟用户输入,接收通信模块的测试命令,通过模拟用户输入向数字终端注入测试激励以驱动数字终端执行;所述的捕获反馈模块动态加载与当前系统版本对应的捕获反馈功能类,实现对数字终端系统的实时捕获,并将反馈信息打包发送到通信模块回传;所述的三个模块的功能都采用了Java反射机制实现;
步骤二、利用Java反射机制,根据实际需要为实现三个功能模块的应用框架类做封装类,实现封装类的方法,并设计封装类的自动获取机制;
首先在实现通信模块方面,建立系统版本号、通信方式与通信应用框架类的映射表,在实现驱动模块方面,建立系统版本号与驱动应用框架类的映射表,在实现捕获反馈模块方面,建立系统版本号与捕获反馈应用框架类的映射表;然后在此基础上,为上述的三种应用框架类做封装类,封装类利用Java反射机制实现统一的接口;最后,利用抽象工厂模式实现封装类的自动获取机制;
步骤三、在步骤二的基础上各模块根据当前系统版本号自动获取相应的封装类实例,通过调用封装类实例的方法实现各模块的功能;
步骤四、将三个模块整合,并添加错误信息提示功能,完成数字终端测试环境的构建。
2.根据权利要求1所述的构建方法,其特征在于,步骤二中所述的根据实际需要来创建封装类,判断是否需要创建封装类的标准是:数字终端系统版本升级时,若对应一个功能模块的应用框架类未改变或者只修改了类名,则无需创建新的封装类,利用前一个版本的封装类即可;若应用框架类中的方法名或方法的功能改变,则创建新的封装类,封装类的版本号与升级后系统版本号相同。
3.根据权利要求1所述的构建方法,其特征在于,步骤二中所述的为应用框架类做封装类的具体过程为:首先,建立系统版本号、封装类、应用框架类以及封装类版本号的映射表,然后封装类的构造方法通过查该映射表找到相应的应用框架类名,再利用Java反射机制根据应用框架类名动态加载应用框架类实例;然后,针对每个封装类的方法,确定实现该封装类的方法时所使用的应用框架类实例的方法和调用顺序;最后,封装类的方法利用Java反射机制依次调用这些应用框架类实例的方法完成相应功能。
4.根据权利要求1所述的构建方法,其特征在于,步骤三中,对于通信模块的实现,根据系统版本号和通信方式自动获取通信封装类,调用封装类实例的方法实现通信功能;对于驱动模块功能的实现,根据系统版本号自动获取驱动封装类,调用封装类实例的方法实现驱动功能;对于捕获反馈模块功能的实现,根据系统版本号自动获取捕获反馈封装类,调用封装类实例的方法实现捕获反馈功能。
5.根据权利要求1所述的构建方法,其特征在于,步骤四中所述的添加错误信息提示的功能,使得构建的测试环境在数字终端运行出现错误提示信息时,开发人员能够快速定位错误并解决问题,具体是:出现错误提示信息时,判断当前系统版本是否是新的,如果不是新版本,通过修改映射表、修改程序错误调整测试环境,然后将测试环境重新部署到数字终端上执行;如果是新版本,则利用Java反射机制为新版本系统中的应用框架类做封装类,针对新版本的功能逻辑实现封装类的统一接口,并更新两个映射表,然后将测试环境重新部署到数字终端上执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101253930A CN101807168B (zh) | 2010-03-15 | 2010-03-15 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101253930A CN101807168B (zh) | 2010-03-15 | 2010-03-15 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101807168A CN101807168A (zh) | 2010-08-18 |
CN101807168B true CN101807168B (zh) | 2011-11-16 |
Family
ID=42608970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101253930A Expired - Fee Related CN101807168B (zh) | 2010-03-15 | 2010-03-15 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101807168B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170679B (zh) * | 2011-05-28 | 2013-06-26 | 西安电子科技大学 | 基于Android系统的多机蓝牙群通信方法 |
CN102255748B (zh) * | 2011-06-27 | 2017-12-29 | 中兴通讯股份有限公司 | 自动化测试系统及方法、版本服务器、以及终端 |
CN106648569B (zh) * | 2015-11-02 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 目标序列化实现方法和装置 |
CN106250317A (zh) * | 2016-08-10 | 2016-12-21 | 英业达科技有限公司 | 电子设备及其应用的测试方法及系统 |
CN106528416A (zh) * | 2016-11-03 | 2017-03-22 | 上海斐讯数据通信技术有限公司 | 一种基于android平台的自动化测试方法和系统 |
CN106598853A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 自动生成测试项目方法及系统 |
CN106789250B (zh) * | 2016-12-22 | 2018-09-18 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN108243038B (zh) * | 2016-12-26 | 2021-07-13 | 北京神州泰岳软件股份有限公司 | 一种服务调用的方法和装置 |
CN107479482B (zh) * | 2017-08-21 | 2023-02-28 | 上海博泰悦臻网络技术服务有限公司 | 一种应用于汽车电子的操作系统和实现方法 |
CN107729063A (zh) * | 2017-10-25 | 2018-02-23 | 武汉斗鱼网络科技有限公司 | 软件开发工具包的调用方法、装置及终端 |
CN107918592A (zh) * | 2017-11-30 | 2018-04-17 | 郑州云海信息技术有限公司 | 一种兼容高版本接口的方法 |
CN109032820B (zh) * | 2018-08-08 | 2021-02-12 | 网易(杭州)网络有限公司 | 应用程序版本兼容的处理方法及装置 |
CN110162477B (zh) * | 2019-05-28 | 2022-11-22 | 山东财经大学 | 一种第三方库版本升级的异常自动调试系统及方法 |
CN110363009B (zh) * | 2019-07-17 | 2024-07-02 | 腾讯科技(深圳)有限公司 | 应用程序安全测试方法、装置和计算机可读存储介质 |
CN112306844B (zh) * | 2019-07-30 | 2024-05-28 | 腾讯科技(深圳)有限公司 | 软件开发系统的接口测试方法、装置、设备及存储介质 |
CN111142856B (zh) * | 2019-11-22 | 2024-02-09 | 航天信息股份有限公司 | 一种自动化图片识别数据库资源表建立方法及系统 |
CN111932260B (zh) * | 2020-09-18 | 2021-01-26 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN113377429A (zh) * | 2021-07-06 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 安卓应用的运行方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1876532A1 (en) * | 2006-07-05 | 2008-01-09 | Telefonaktiebolaget LM Ericsson (publ) | A method and a system for testing software modules in a telecommunication system |
CN101609428A (zh) * | 2009-05-08 | 2009-12-23 | 刘志方 | 数字终端应用软件基于开放接口代理的测试方法 |
-
2010
- 2010-03-15 CN CN2010101253930A patent/CN101807168B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1876532A1 (en) * | 2006-07-05 | 2008-01-09 | Telefonaktiebolaget LM Ericsson (publ) | A method and a system for testing software modules in a telecommunication system |
CN101609428A (zh) * | 2009-05-08 | 2009-12-23 | 刘志方 | 数字终端应用软件基于开放接口代理的测试方法 |
Non-Patent Citations (1)
Title |
---|
汪治等.智能终端软件测试通讯模型和协议研究.《嵌入式软件应用》.2008,第24卷(第1-2期),第68-70页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101807168A (zh) | 2010-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101807168B (zh) | 一种支持版本兼容的数字终端测试环境及其构建方法 | |
CN109144533B (zh) | 一种应用程序的更新及加载的方法、系统及计算机装置 | |
US7698702B2 (en) | System and method for implementing data-compatibility-based version scheme | |
CN102420891B (zh) | 移动终端及其测试方法、测试设备及测试系统 | |
EP1582985A2 (en) | Test case inheritance controlled via attributes | |
CN110413259B (zh) | Android服务框架、实现扩展服务的方法及装置 | |
CN103634592A (zh) | 智能电视自动化测试方法及系统 | |
US20140033208A1 (en) | Method and device for loading application program | |
CN111309636B (zh) | 机器人自动化测试系统、方法、构建服务器及存储介质 | |
CN111857801B (zh) | 一种移动应用的构建方法 | |
CN113312245B (zh) | 一种可集成的波形管理终端及管理方法 | |
CN110543295B (zh) | 可视化Web前端项目构建系统 | |
CN106126414B (zh) | 应用软件测试方法和系统 | |
JP4440185B2 (ja) | シナリオ編集装置および擬似基地局試験システムおよび擬似端末試験システムおよびシナリオ編集方法および試験処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム | |
CN102158434A (zh) | 一种在智能网关上实现应用程序管理的方法及智能网关 | |
CN102999371B (zh) | 基于Lua脚本的人机界面开发方法及系统 | |
CN109656528A (zh) | 基于标准的组件化软件开发方法 | |
CN105760300A (zh) | 一种stk/utk业务的自动化测试方法及测试系统 | |
CN105988928B (zh) | 终端应用的测试方法及移动终端 | |
CA2635172C (en) | Device for communicating in multiple modes using multi-mode applications | |
CN111831546A (zh) | 同时兼容移动端和pc端的ui测试框架方法 | |
CN108536607B (zh) | Ui测试方法、设备及可读存储介质 | |
CN114840186B (zh) | 基于android系统的服务化系统及实现方法 | |
CN102163149A (zh) | Java-CAT可视化开发系统及方法 | |
CN112642157B (zh) | 代理开发控制方法及其相应的装置、设备、介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111116 Termination date: 20140315 |