当前位置: 首页 > 专利查询>南京大学专利>正文

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

技术编号:19903268 阅读:85 留言:0更新日期:2018-12-26 02:52
本发明专利技术公开了一种基于安卓虚拟机修改的有效测试框架,包含服务端模块,客户端模块,可执行接口语言模块和插件扩展与管理模块;框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专门的应用层协议进行通信,能够读写安卓虚拟机的内部状态数据;所述服务端模块是基于安卓虚拟机修改的、测试框架运行在安卓移动设备上的模块;所述客户端模块是指运行在普通电脑上的测试框架模块,负责解析接口语言,与虚拟机内部通信;所述可执行接口语言模块,使用自定义的语言作为接口,提供给开发者使用。所述框架基于安卓ART虚拟机修改实现,具有方便性、有效性和高效性。

【技术实现步骤摘要】
一种基于安卓虚拟机修改的有效测试框架
专利技术专利涉及软件工程,安卓应用的测试和动态分析等

技术介绍
安卓移动端应用经常存在各种各样的质量缺陷。针对这个问题,大量的面向移动应用的自动测试技术被开发出来,这些工具大部分都是动态运行的。很多测试工具通常为实现某种或者某几种测试算法(算法决定自动测试过程)而开发,不具备可扩展性。测试人员在实现新的测试工具时,需要面临已有的测试工具复用困难这一问题,他们不得不关注测试策略实现之外的很多细节。当前已经有很多测试框架可以方便测试工具的构建,用户基于框架能够简化工具的开发流程。框架封装底层的细节,提供可用的接口给开发者。然而这些框架在使用上具有局限性。首先,一些框架的接口设计不够友好,在使用时需要用户有一定的编程基础。部分框架需要移动设备的root权限,在使用上造成不便。此外,不少框架只对有限的测试和分析技术提供了支持,比如针对移动端应用丰富的交互,很多工具只提供支持GUI测试的接口。很多工具支持的测试和分析技术都比较单一,用户在开发测试工具时需要组合多个测试框架。最后,很多框架需要修改被测试应用的源码,修改过程很容易引入不可预知的错误。
技术实现思路
本专利技术的主要目的是提供一种针对安卓应用的有效测试框架实现技术,该框架具有方便性、有效性和高效性等特点。方便性是指框架能够方便地实现测试分析工具,有效地封装技术实现细节,减少工具实现过程的工作量。有效性则指框架对于多种技术的实现是有效的。高效性是指框架在测试应用时具有很好的覆盖能力,不会引入修改错误,引入的额外性能开销在可接受范围之内。本专利技术的技术解决方案:一个基于安卓虚拟机修改的有效测试框架。它包含以下模块;1.接口语言模块,自定义的语言作为接口,提供给开发者使用;2.基于安卓虚拟机修改的服务端模块;3.客户端模块,负责解析接口语言,与虚拟机内部通信;4.插件扩展与管理模块。框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专门的应用层协议进行通信,可以读写安卓虚拟机的内部状态数据。所述安卓虚拟机指安卓ART虚拟机,它是JVM的一种,能够运行JAVA字节码程序。在安卓系统中,一个进程有一个ART虚拟机。所述JVM是指广义的JAVA虚拟机。所述有效测试框架是指测试框架对于测试分析工具的开发和技术的实现是有效的。所述接口语言模块是本专利技术自定义的简单语言。测试者通过使用该语言可以方便地对目标应用进行测试和分析。该语言包括7种确定的操作类型和可变参数,它和具体的编程语言解耦合。因此,该测试框架的目标用户覆盖不具备编程能力的普通测试用户。所述安卓虚拟机修改模块通过修改虚拟机的解释器部分完成实现的,将解释器的执行上下文暴露给外部的测试分析工具。所述解释器可以逐条读取应用程序的字节码指令并进行运行。在这个过程中,指令执行产生的数据存储于ART虚拟机内存中或者执行寄存器中。所述解释器的执行上下文由数据组成,这些数据是解释器在解释执行应用程序的特定时刻产生的。安卓虚拟机修改模块可以将测试工具感兴趣的上下文数据有效地组织存储在虚拟机内存中,作为服务端,接收客户端的指令,不仅可以读取内存中的数据,也可以对应用的运行状态进行修改。所谓的对应用运行状态进行修改,表现为劫持程序的指令执行过程。总的来说,本专利技术的安卓虚拟机修改模块包括两个功能,读取和存储应用程序的运行时数据和劫持程序的指令执行过程。所述指令执行过程的劫持,是指在解释器逐条执行指令过程时修改指令的执行过程。所述客户端模块负责解析接口语言并与安卓虚拟机内部的服务端进行通信交换数据。负责数据包的封装和解析。所述接口语言解析是指将用户输入的操作语句解析成为符合特定应用层协议规范的数据包的过程。所述应用层协议是指本专利技术专门设计并实现的通信协议,它是一种同步的通信协议。所述插件扩展模块负责管理框架所有的插件,并且提供可扩展的接口给插件的开发者。插件可以读写框架暴露的应用程序解释器执行上下文,作为框架基础设施和基于该框架实现的测试工具的桥梁而存在框架已支持的测试分析技术包括并发测试、GUI测试、异常检测和代码覆盖统计等。本技术的有益性在于:本专利技术可以方便有效高效地帮助开发面向移动应用的测试和动态分析工具。框架提供的可执行语言接口使得框架的使用变得更加方便简单。基于安卓虚拟机的实现方案不仅使得测试工具无需修改应用程序源码,避免了引入潜在的错误,而且可以读写更多的应用程序运行上下文数据,使得本专利技术具备较强扩展性,可用来实现一些复杂的测试技术。本专利技术的有效测试框架基于安卓ART虚拟机修改实现,具有方便性、有效性和高效性。它可以帮助用户方便地实现完成测试和动态分析工具,有效地封装技术实现细节,提供可用接口,减少开发过程中的工作量。同时,本专利技术解决了当前移动应用测试领域框架技术覆盖不足的缺陷,对多种复杂测试分析技术的实现提供了底层的支持,并把额外引入的性能开销控制在可接受范围之内。附图说明为了更清楚地说明本专利实施例的技术方案,下面将对实施例描述中所有需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来说,在不付出创造性劳动的前提下所获得的其他附图都属于本专利技术的保护范围。图1为本专利技术提供的测试框架的架构图。图2为本专利技术提供的客户端模块结构图。图3为本专利技术提供的客户端模块工作流程图。图4为本专利技术提供的安卓虚拟机服务端模块结构图。图5为本专利技术提供的安卓虚拟机服务端模块工作流程图。图6为本专利技术提供的数据通信协议格式。具体实施方式下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地的描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部实施例。基于本专利技术的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术的保护范围。如图1所示,本专利技术实施例提供的基于安卓虚拟机修改的有效测试框架,包含一个运行于安卓设备ART虚拟机内部的服务端模块和运行于电脑的客户端。客户端可接收用户的可执行接口命令,并通过无线连接发送给服务端进行处理。服务端收到来自客户端的操作指令进行处理并发送返回数据给客户端。用户输入的操作命令主要用来指导如何完成对应用程序的运行上下文数据进行读写。读操作即读取应用运行时产生的数据,写操作对应用程序的运行状态进行修改。数据会根据同步通信协议进行编码,经由无线连接进行传输。。服务端的数据读写主要是通过修改ART虚拟机的解释器完成的。图2描述了测试框架中客户端的模块结构图。客户端设计实现了专门的交互语言,它一共包含以下7种操作类型:1.INSTALL;2.LAUNCH;3.PERFORM;4.SELECT;5.TOGGLE;6.BREAKPOINT;7.RESUME。用户可以使用该语言接口对安卓应用进行测试。其中INSTALL和LAUNCH语句用来完成应用的安装和启动,并在启动过程中根据可选参数来完成一些可用内部插件的启动。SELECT和PERFORM类型的语句用来完成对应用运行上下文数据的读写过程,它们都会在可选参数中指定目标插件的ID,并最终在服务端被分发至对应目标插件进行处理。BREAKPOINT类型的语句本文档来自技高网...

【技术保护点】
1.一种基于安卓虚拟机修改的有效测试框架,包含服务端模块,客户端模块,可执行接口语言模块和插件扩展与管理模块;框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专门的应用层协议进行通信,能够读写安卓虚拟机的内部状态数据;其特征在于:所述服务端模块是基于安卓虚拟机修改的、测试框架运行在安卓移动设备上的模块;所述客户端模块是指运行在普通电脑上的测试框架模块,负责解析接口语言,与虚拟机内部通信;所述可执行接口语言模块,使用自定义的语言作为接口,提供给开发者使用;所述插件扩展与管理模块包含测试框架为部分开发者提供的可编程接口和相关规范,开发者能够在此基础上基于有效测试框架开发插件;所述安卓虚拟机指安卓ART虚拟机,它是JVM的一种实现形式,运行在安卓移动设备上,能够运行JAVA字节码程序;在安卓系统中,一个进程有一个ART虚拟机;所述JVM是指广义的JAVA虚拟机;所述有效测试框架是指能够用来帮助方便地实现面向移动应用的测试和动态分析工具,测试框架对于测试分析工具的开发和技术的实现是有效的;所述移动应用指在安卓移动设备上安装并运行的应用,由开发者发布在市场中;所述可执行语言是指测试框架提供给使用者的接口,使用者可使用该语言以脚本的形式开发测试工具,它和其他任何编程语言都是解耦合的。...

【技术特征摘要】
1.一种基于安卓虚拟机修改的有效测试框架,包含服务端模块,客户端模块,可执行接口语言模块和插件扩展与管理模块;框架采用CS架构,安卓虚拟机内部的功能模块作为服务端,客户端接收用户输入的接口语言操作指令并进行解析,与服务端通过专门的应用层协议进行通信,能够读写安卓虚拟机的内部状态数据;其特征在于:所述服务端模块是基于安卓虚拟机修改的、测试框架运行在安卓移动设备上的模块;所述客户端模块是指运行在普通电脑上的测试框架模块,负责解析接口语言,与虚拟机内部通信;所述可执行接口语言模块,使用自定义的语言作为接口,提供给开发者使用;所述插件扩展与管理模块包含测试框架为部分开发者提供的可编程接口和相关规范,开发者能够在此基础上基于有效测试框架开发插件;所述安卓虚拟机指安卓ART虚拟机,它是JVM的一种实现形式,运行在安卓移动设备上,能够运行JAVA字节码程序;在安卓系统中,一个进程有一个ART虚拟机;所述JVM是指广义的JAVA虚拟机;所述有效测试框架是指能够用来帮助方便地实现面向移动应用的测试和动态分析工具,测试框架对于测试分析工具的开发和技术的实现是有效的;所述移动应用指在安卓移动设备上安装并运行的应用,由开发者发布在市场中;所述可执行语言是指测试框架提供给使用者的接口,使用者可使用该语言以脚本的形式开发测试工具,它和其他任何编程语言都是解耦合的。2.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:所述接口语言模块,测试者通过使用该语言能够方便地对目标应用进行测试和分析,该语言包括7种确定的操作类型和可变参数,它和具体的编程语言解耦合;因此,该测试框架的目标用户覆盖不具备编程能力的普通测试用户;所述安卓虚拟机修改模块通过修改虚拟机的解释器部分完成实现的,将解释器的执行上下文暴露给外部的测试分析工具;所述解释器能够逐条读取应用程序的字节码指令并进行运行,在这个过程中,指令执行产生的数据存储于ART虚拟机内存中或者执行寄存器中;所述解释器的执行上下文由数据组成,这些数据是解释器在解释执行应用程序的特定时刻产生的;安卓虚拟机修改模块将测试工具感兴趣的上下文数据有效地组织存储在虚拟机内存中,作为服务端,接收客户端的指令,既能够读取内存中的数据,又对应用的运行状态进行修改;所谓的对应用运行状态进行修改,表现为劫持程序的指令执行过程;所述劫持程序的指令执行过程,是指在解释器逐条执行指令过程时修改指令的执行过程;所述客户端模块负责解析接口语言并与安卓虚拟机内部的服务端进行通信交换数据,负责数据包的封装和解析;所述解析接口语言是指将用户输入的操作语句解析成为符合特定应用层协议规范的数据包的过程;所述应用层协议是指专门设计并实现的通信协议,它是一种同步的通信协议;所述插件扩展与管理模块负责管理框架所有的插件,并且提供可扩展的接口给插件的开发者;插件可以读写框架暴露的应用程序解释器执行上下文,作为框架基础设施和基于该框架实现的测试工具的桥梁而存在;框架已支持的测试分析技术包括并发测试、GUI测试、异常检测和代码覆盖统计。3.根据权利要求1所述的基于安卓虚拟机修改的有效测试框架,其特征在于:所述服务端模块和客...

【专利技术属性】
技术研发人员:蒋炎岩孟占帅马晓星许畅吕建
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

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

1