首页 / 专利库 / 软件 / 进程间通信 / 一种基于安卓虚拟机修改的有效测试框架

一种基于安卓虚拟机修改的有效测试框架

阅读:917发布:2020-05-11

专利汇可以提供一种基于安卓虚拟机修改的有效测试框架专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于安卓 虚拟机 修改 的有效测试 框架 ,包含服务端模 块 ,客户端模块,可执行 接口 语言模块和 插件 扩展与管理模块;框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专 门 的应用层协议进行通信,能够读写安卓虚拟机的内部状态数据;所述服务端模块是基于安卓虚拟机修改的、测试框架运行在安卓移动设备上的模块;所述客户端模块是指运行在普通电脑上的测试框架模块,负责解析接口语言,与虚拟机内部通信;所述可执行接口语言模块,使用自定义的语言作为接口,提供给开发者使用。所述框架基于安卓ART虚拟机修改实现,具有方便性、有效性和高效性。,下面是一种基于安卓虚拟机修改的有效测试框架专利的具体信息内容。

1.一种基于安卓虚拟机修改的有效测试框架,包含服务端模,客户端模块,可执行接口语言模块和插件扩展与管理模块;框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专的应用层协议进行通信,能够读写安卓虚拟机的内部状态数据;其特征在于:
所述服务端模块是基于安卓虚拟机修改的、测试框架运行在安卓移动设备上的模块,即安卓虚拟机修改模块;
所述安卓虚拟机修改模块通过修改虚拟机的解释器部分完成实现的,将解释器的执行上下文暴露给外部的测试分析工具;
所述解释器能够逐条读取应用程序的字节码指令并进行运行,在这个过程中,指令执行产生的数据存储于ART虚拟机内存中或者执行寄存器中;
所述解释器的执行上下文由数据组成,这些数据是解释器在解释执行应用程序的特定时刻产生的;
安卓虚拟机修改模块将测试工具感兴趣的上下文数据有效地组织存储在虚拟机内存中,作为服务端,接收客户端的指令,既能够读取内存中的数据,又对应用的运行状态进行修改;所谓的对应用运行状态进行修改,表现为劫持程序的指令执行过程;
所述客户端模块是指运行在普通电脑上的测试框架模块,负责解析接口语言,与虚拟机内部通信;
所述可执行接口语言模块,使用自定义的语言作为接口,提供给开发者使用;
所述插件扩展与管理模块包含测试框架为部分开发者提供的可编程接口和相关规范,开发者能够在此基础上基于有效测试框架开发插件;
所述插件扩展与管理模块负责管理框架所有的插件,并且提供可扩展的接口给插件的开发者;插件可以读写框架暴露的应用程序解释器执行上下文,作为框架基础设施和基于该框架实现的测试工具的桥梁而存在;
所述安卓虚拟机指安卓ART虚拟机,它是JVM的一种实现形式,运行在安卓移动设备上,能够运行JAVA字节码程序;在安卓系统中,一个进程有一个ART虚拟机;
所述JVM是指广义的JAVA虚拟机;
所述有效测试框架是指能够用来帮助方便地实现面向移动应用的测试和动态分析工具,测试框架对于测试分析工具的开发和技术的实现是有效的;
所述移动应用指在安卓移动设备上安装并运行的应用,由开发者发布在市场中;
所述可执行语言是指测试框架提供给使用者的接口,使用者可使用该语言以脚本的形式开发测试工具,它和其他任何编程语言都是解耦合的。
2.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:所述接口语言模块,测试者通过使用该语言能够方便地对目标应用进行测试和分析,该语言包括7种确定的操作类型和可变参数,它和具体的编程语言解耦合;因此,该测试框架的目标用户覆盖不具备编程能的普通测试用户;
所述劫持程序的指令执行过程,是指在解释器逐条执行指令过程时修改指令的执行过程;
所述客户端模块负责解析接口语言并与安卓虚拟机内部的服务端进行通信交换数据,负责数据包的封装和解析;
所述解析接口语言是指将用户输入的操作语句解析成为符合特定应用层协议规范的数据包的过程;
所述应用层协议是指专门设计并实现的通信协议,它是一种同步的通信协议;
框架已支持的测试分析技术包括并发测试、GUI测试、异常检测和代码覆盖统计。
3.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:
所述服务端模块和客户端模块能够通过网络连接进行数据的传输和交换,客户端模块接受来自用户的操作请求,并封装成通信协议数据包发送给服务端模块,服务端模块根据操作结果返回结果给客户端模块;
所述操作请求由框架提供的语言接口完成;
所述通信协议是一种可靠的应用层通信协议,协议包括头部和数据两个部分,数据部分由JSON序列化进行传输。
4.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:
所述服务端模块运行在安卓移动设备上,通过修改ART虚拟机解释器部分完成,用来完成安卓应用程序运行时数据的读取和存储以及传输,包括数据管理模块、通信管理模块、插件管理模块、分发器模块;
所述安卓应用运行时数据是指安卓用行过程中产生的数据,这些数据在ART虚拟机内部存在于堆区、栈区和指令寄存器中,这些数据由测试框架的服务端暴露给测试工具;
所述数据管理模块将插件读取的应用程序运行数据进行有效的存储,在内存中以数据表的形式进行组织和存取,数据管理模块负责将运行时数据及时地插入到内存表中,当读写请求到达时,进行有效的读取;在这个过程中,需要将应用程序运行时的开销控制在可接受的范围;
所述内存表在应用程序的进程中同时存在多张;
所述通信管理模块负责客户端和服务端之间连接的管理和数据的传输,前者需要在连接建立和销毁时确保不会对应用程序的运行过程产生不可预料的负面影响,后者负责对客户端和服务端之间传输的请求和响应进行拆解和封装,来满足通信协议的约束规范;
所述不可预料的负面影响是指导致程序运行过程中出错;
所述插件管理负责对框架所有的插件进行有效的管理,对插件的状态进行维护;
所述插件的状态包括关闭和打开两种;
所述分发器根据服务端接收到的数据包中的目标插件的ID将数据包交付给对应的插件,在这个过程中需要对错误的目标ID进行合理的处理;
所述目标插件是指来来自客户端的每一个请求都需要显示地指定它的操作对象,这个操作对象就是存在于服务端的目标插件,该请求由目标插件进行处理。
5.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:
所述测试框架可对用户的操作语句进行解析,并封装成对应的可传输的数据包,发送给服务端,同时接收服务端的返回数据;
所述语言解析是指检查用户输入操作语句是否满足可执行语言的语法规范,并提取语言中的有用信息;
所述可传输的数据包是指满足通信协议的规范,可被服务端正确解析的数据传输格式;
所述返回数据是指服务端模块根据用户的操作指令所得的返回结果,该结果最终返回给客户端模块。
6.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:
所述可执行语言是指被客户端模块进行解析并被服务端模块进行响应和处理,获得操作结果的框架接口,它允许测试人员以脚本的形式开发测试工具,该过程和任何的编程语言都是解耦合的。
7.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:
所述插件是指有效测试框架支持的扩展模块,框架基于解释器修改将应用程序的运行上下文数据暴露给测试工具,测试工具通过插件对这些数据进行读写;插件存在于服务端;
所述插件扩展是指有效测试框架提供的插件扩展规范,所有可添加到框架基础设施之上的插件都需要满足此规范。

说明书全文

一种基于安卓虚拟机修改的有效测试框架

技术领域

[0001] 发明专利涉及软件工程,安卓应用的测试和动态分析等技术领域。

背景技术

[0002] 安卓移动端应用经常存在各种各样的质量缺陷。针对这个问题,大量的面向移动应用的自动测试技术被开发出来,这些工具大部分都是动态运行的。很多测试工具通常为实现某种或者某几种测试算法(算法决定自动测试过程)而开发,不具备可扩展性。测试人员在实现新的测试工具时,需要面临已有的测试工具复用困难这一问题,他们不得不关注测试策略实现之外的很多细节。
[0003] 当前已经有很多测试框架可以方便测试工具的构建,用户基于框架能够简化工具的开发流程。框架封装底层的细节,提供可用的接口给开发者。然而这些框架在使用上具有局限性。首先,一些框架的接口设计不够友好,在使用时需要用户有一定的编程基础。部分框架需要移动设备的root权限,在使用上造成不便。此外,不少框架只对有限的测试和分析技术提供了支持,比如针对移动端应用丰富的交互,很多工具只提供支持GUI测试的接口。很多工具支持的测试和分析技术都比较单一,用户在开发测试工具时需要组合多个测试框架。最后,很多框架需要修改被测试应用的源码,修改过程很容易引入不可预知的错误。

发明内容

[0004] 本发明的主要目的是提供一种针对安卓应用的有效测试框架实现技术,该框架具有方便性、有效性和高效性等特点。方便性是指框架能够方便地实现测试分析工具,有效地封装技术实现细节,减少工具实现过程的工作量。有效性则指框架对于多种技术的实现是有效的。高效性是指框架在测试应用时具有很好的覆盖,不会引入修改错误,引入的额外性能开销在可接受范围之内。
[0005] 本发明的技术解决方案:一个基于安卓虚拟机修改的有效测试框架。它包含以下模
[0006] 1.接口语言模块,自定义的语言作为接口,提供给开发者使用;
[0007] 2.基于安卓虚拟机修改的服务端模块;
[0008] 3.客户端模块,负责解析接口语言,与虚拟机内部通信;
[0009] 4.插件扩展与管理模块。
[0010] 框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专的应用层协议进行通信,可以读写安卓虚拟机的内部状态数据。
[0011] 所述安卓虚拟机指安卓ART虚拟机,它是JVM的一种,能够运行JAVA字节码程序。在安卓系统中,一个进程有一个ART虚拟机。
[0012] 所述JVM是指广义的JAVA虚拟机。
[0013] 所述有效测试框架是指测试框架对于测试分析工具的开发和技术的实现是有效的。
[0014] 所述接口语言模块是本发明自定义的简单语言。测试者通过使用该语言可以方便地对目标应用进行测试和分析。该语言包括7种确定的操作类型和可变参数,它和具体的编程语言解耦合。因此,该测试框架的目标用户覆盖不具备编程能力的普通测试用户。
[0015] 所述安卓虚拟机修改模块通过修改虚拟机的解释器部分完成实现的,将解释器的执行上下文暴露给外部的测试分析工具。
[0016] 所述解释器可以逐条读取应用程序的字节码指令并进行运行。在这个过程中,指令执行产生的数据存储于ART虚拟机内存中或者执行寄存器中。
[0017] 所述解释器的执行上下文由数据组成,这些数据是解释器在解释执行应用程序的特定时刻产生的。
[0018] 安卓虚拟机修改模块可以将测试工具感兴趣的上下文数据有效地组织存储在虚拟机内存中,作为服务端,接收客户端的指令,不仅可以读取内存中的数据,也可以对应用的运行状态进行修改。所谓的对应用运行状态进行修改,表现为劫持程序的指令执行过程。总的来说,本发明的安卓虚拟机修改模块包括两个功能,读取和存储应用程序的运行时数据和劫持程序的指令执行过程。
[0019] 所述指令执行过程的劫持,是指在解释器逐条执行指令过程时修改指令的执行过程。
[0020] 所述客户端模块负责解析接口语言并与安卓虚拟机内部的服务端进行通信交换数据。负责数据包的封装和解析。
[0021] 所述接口语言解析是指将用户输入的操作语句解析成为符合特定应用层协议规范的数据包的过程。
[0022] 所述应用层协议是指本发明专门设计并实现的通信协议,它是一种同步的通信协议。
[0023] 所述插件扩展模块负责管理框架所有的插件,并且提供可扩展的接口给插件的开发者。插件可以读写框架暴露的应用程序解释器执行上下文,作为框架基础设施和基于该框架实现的测试工具的桥梁而存在
[0024] 框架已支持的测试分析技术包括并发测试、GUI测试、异常检测和代码覆盖统计等。
[0025] 本技术的有益性在于:
[0026] 本发明可以方便有效高效地帮助开发面向移动应用的测试和动态分析工具。框架提供的可执行语言接口使得框架的使用变得更加方便简单。基于安卓虚拟机的实现方案不仅使得测试工具无需修改应用程序源码,避免了引入潜在的错误,而且可以读写更多的应用程序运行上下文数据,使得本发明具备较强扩展性,可用来实现一些复杂的测试技术。
[0027] 本发明的有效测试框架基于安卓ART虚拟机修改实现,具有方便性、有效性和高效性。它可以帮助用户方便地实现完成测试和动态分析工具,有效地封装技术实现细节,提供可用接口,减少开发过程中的工作量。同时,本发明解决了当前移动应用测试领域框架技术覆盖不足的缺陷,对多种复杂测试分析技术的实现提供了底层的支持,并把额外引入的性能开销控制在可接受范围之内。附图说明
[0028] 为了更清楚地说明本专利实施例的技术方案,下面将对实施例描述中所有需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来说,在不付出创造性劳动的前提下所获得的其他附图都属于本发明的保护范围。
[0029] 图1为本发明提供的测试框架的架构图。
[0030] 图2为本发明提供的客户端模块结构图。
[0031] 图3为本发明提供的客户端模块工作流程图
[0032] 图4为本发明提供的安卓虚拟机服务端模块结构图。
[0033] 图5为本发明提供的安卓虚拟机服务端模块工作流程图。
[0034] 图6为本发明提供的数据通信协议格式。

具体实施方式

[0035] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0036] 如图1所示,本发明实施例提供的基于安卓虚拟机修改的有效测试框架,包含一个运行于安卓设备ART虚拟机内部的服务端模块和运行于电脑的客户端。客户端可接收用户的可执行接口命令,并通过无线连接发送给服务端进行处理。服务端收到来自客户端的操作指令进行处理并发送返回数据给客户端。用户输入的操作命令主要用来指导如何完成对应用程序的运行上下文数据进行读写。读操作即读取应用运行时产生的数据,写操作对应用程序的运行状态进行修改。数据会根据同步通信协议进行编码,经由无线连接进行传输。。服务端的数据读写主要是通过修改ART虚拟机的解释器完成的。
[0037] 图2描述了测试框架中客户端的模块结构图。客户端设计实现了专门的交互语言,它一共包含以下7种操作类型:1.INSTALL;2.LAUNCH;3.PERFORM;4.SELECT;5.TOGGLE;6.BREAKPOINT;7.RESUME。用户可以使用该语言接口对安卓应用进行测试。其中INSTALL和LAUNCH语句用来完成应用的安装和启动,并在启动过程中根据可选参数来完成一些可用内部插件的启动。SELECT和PERFORM类型的语句用来完成对应用运行上下文数据的读写过程,它们都会在可选参数中指定目标插件的ID,并最终在服务端被分发至对应目标插件进行处理。BREAKPOINT类型的语句可以劫持应用程序的任意指令执行过程。TOGGLE则用来完成内部插件的状态转换,即打开插件和关闭插件。
[0038] 客户端实现了专门的语言解析模块Parser将操作指令封装成对应的数据包。在内部实现上,对于任意类型的操作指令,客户端都提供了对应的handler进行处理,如对于INSTALL语句,会被分发至Installhandler进行处理。不同类型的handler解耦合,它们共同组成了Handler Group模块。Dispatcher模块用来完成操作语句的分发过程。Handler会将操作语句封装成可传输的数据包并发送给服务端。
[0039] 客户端内部的Receiver模块实现有单独的线程监听服务端返回的响应数据包,在收到返回数据包后发送给Handler Group进行处理,并打印日志最终返回给用户。端对端的通信过程是同步完成的,本发明设计并实现的应用层通信协议保证通信的可靠性和稳定性
[0040] 图3描述了客户端的处理流程。当收到用户提交的操作指令时,Parser对语句进行解析,首先判断语句是否符合交互语言的语法规范。如果出现错误,会打印错误提示给用户。否则,操作语句会封装成协议数据包发送给服务端,此后,客户端会持续地等待服务端返回的响应数据包。在收到返回数据后,将返回的信息打印给用户,并继续监听用户的输入操作。
[0041] 如图4所示,本发明基于安卓虚拟机修改实现的服务端包含Adapter、Core和Plugin三个系统层次。Adapter封装服务端在实现上对ART提供的接口的调用过程,屏蔽了不同版本ART接口间的差异,它向上提供接口给其他系统层,保证其他部分与ART内部的解耦合。Core封装了服务端几乎所有的核心技术,包括数据管理(Data Manager)、通信管理(Connection)、分发器(Dispatcher)和插件管理(Plugin Manager)等功能模块。
[0042] 数据管理模块通过修改安卓ART虚拟机解释器实现,在解释器执行每一条指令时记录运行时数据,同时也可以根据外部操作指令来修改解释器的执行过程,以上过程解决了数据读写问题,在这个过程中框架使用线程同步技术保证数据的一致性。数据管理模块的另一个功能是数据的有效存储,在实现上,本测试框架把所有的运行时数据以内存表的形式进行存储。
[0043] 连接管理模块的功能包括服务端和客户端的连接的建立和维护以及数据的有效传输。该模块持续监听来自客户端的连接请求,在连接建立时对数据结构进行初始化,在注销连接时销毁附带的数据对象来释放内存。数据的传输主要是包括对来自客户端的请求数据包进行拆解以及封装对应的响应数据包,这个过程建立在本发明设计并实现的可靠的应用层通信协议之上。协议对数据包的传输格式进行了统一的规范,使得数据包的拆解和封装都变得简单。
[0044] 分发模块主要是根据目标插件的ID,将来自客户端的操作指令发送给目标插件进行处理。本发明设计实现的语言接口都要求显示地指定目标插件的ID,该ID会被解析随着数据包传输给服务端。服务端的分发模块根据该ID域将数据包转发给目标插件进行处理。
[0045] 插件管理模块负责对所有的已有插件进行有效的维护。负责插件的增加、删除以及开启和关闭。在服务端启动时,会添加所有预定义的插件。开发者自定义的插件,需要在插件管理模块中写入添加插件的语句。插件管理模块会记录插件的开闭状态。只有插件处于开启状态时,才能对客户端发来的操作请求进行处理,否则返回错误信息给客户端。插件在响应外界的操作请求时,首先去检查该变量值确认自身的状态。只有在处于开启状态时,才对操作请求进处理,否则返回提示信息给客户端。本发明支持插件的扩展,因此插件管理模块对线性表元素的增加删除都进行了有效的内部处理。
[0046] 插件层主要提供插件的抽象基类,以及可扩展的API给开发者。所有的插件需要继承自这个基类,并实现基类约束的接口,来定义在解释器执行程序指令的前后应当如何进行操作。插件开发者可以利用API来对解释器暴露出的可用运行时数据进行读写。所有添加的插件由插件管理模块进行管理。开发者可以在插件层增加任意数量的插件,以实现预期的测试和分析功能。
[0047] 核心层的插件管理模块和插件层共同使得本发明所提框架具有较强的技术扩展能力,为更多复杂的面向移动应用的测试和动态分析技术的实现提供了基础设施。
[0048] 图5描述了安卓虚拟机中服务端的处理流程。服务端的连接模块监听来自客户端的数据传输请求,当收到请求数据包时,首先检查该数据包是否满足通信协议的格式规范。如果检查到格式错误,提示客户端无法对该操作请求进行有效的处理,并继续监听后续的数据传输。当服务端确认收到一个正确的请求数据包时,立即对此进行拆包处理。根据解析得到的目标插件的ID将操作请求分发至目标插件。
[0049] 如果客户端指定的目标插件ID在ART虚拟机内部的插件管理模块并不存在或者当前处于关闭状态,则返回无法处理的提示给客户端。否则,该数据包会被目标插件进行处理,处理结果同样会被封装成可传输的响应数据包返回给客户端。
[0050] 本发明设计并实现的应用层通信协议如图6所示。该协议包括头部和数据两个部分。其中头部长度为4个字节,该字段定义了整个数据包的长度(包括头部长度字段本身),而协议数据部分是可变长度的。数据部分包括数据包的类型(请求数据包或者响应数据包)、ID以及指令内容或者返回数据。在实现上,数据部分都被封装成为固定格式的JSON字符串,便于数据包的解析和封装。本发明实现的通信协议具备可扩展性、可靠性和稳定性。
[0051] 虽然本发明已以较佳实施例公开如上,但它们并不是用来限定本发明,任何熟习此技艺者,在不脱离本发明之精神和范围内,自当可作各种变化或润饰,但同样在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈