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

一种基于字节码操作的安卓软件增强测试方法技术

技术编号:21034032 阅读:30 留言:0更新日期:2019-05-04 05:20
本发明专利技术基于字节码操作的安卓软件增强测试方法,步骤一、基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法;步骤二、通过字节码操作技术,将方法与异常的分析和触发代码植入步骤一中的安卓软件包,并生成修改过的软件包以及植入位置的报告;步骤三、针对步骤二中产生的软件包和报告,编写被植入代码控制策略的配置文件;步骤四、确定安卓软件测试框架和测试用例,执行测试,收集测试用例报告以及执行过程中产生的日志,用于下一次测试。本方法基于字节码操作技术,对安卓软件代码中的资源相关方法的异常进行分析和控制,从而对原有测试进行增强。

An Enhanced Testing Method for Android Software Based on Bytecode Operation

【技术实现步骤摘要】
一种基于字节码操作的安卓软件增强测试方法
本专利技术属于软件工程,测试工程领域。本专利技术涉及基于字节码操作,对安卓软件包中资源相关调用的异常进行分析和控制,从而增强测试。
技术介绍
近年来,信息技术迅速发展,各平台软件的数量和规模日益增长,给人们的生活带来了许多便利,其中作为代表的就是两大手机平台之一的安卓。然而,越来越多的软件和越来越复杂的软件功能使得软件的质量保障受到挑战。安卓应用本身具有多版本、演化快的特点,如何能够有效的保证软件的质量是一个备受关注的问题。安卓是由谷歌公司主导开发的移动操作系统,短短几年时间安卓系统便从安卓1.0版本发展到目前(2018年12月)的安卓9.0版本,其上的应用数已经达到了两百多万种。谷歌公司开发的安卓平台使用开发语言Java,其特征是面向对象的编程方式与使用异常的错误处理方式。安卓软件是使用事件驱动的方式的进行开发的,其功能代码零散,对于软件质量的保障也造成了一定的阻碍。为了保证软件的质量,软件通常进行一系列的测试,其中比较常见的是单元测试和界面测试的方式。安卓平台虽然与传统Java虚拟机平台不太一样,但仍然支持了传统Java的单元测试框架JUnit,并有许多的界面测试框架,例如Robotium、Espresso、Appium等。然而,即使是众多的测试也不能完全保证软件的正确性。对于Java的异常处理代码,即使能够在大多数情况下通过测试,也有可能在一些极端情况产生诸如应用崩溃等问题,例如极端网络环境下等。这一部分代码的正确性验证是非常困难的,特别是涉及到与外部资源相关操作的异常处理代码时,由于环境的不稳定性,现有的测试并不能很好的反应被测代码的质量。安卓平台早期的实现与Java虚拟机大致一样,其都是通过将Java代码编译成字节码,然后由虚拟机来解释并执行这些字节码。后来谷歌开发了AndroidRuntime这个处理程序,通过在安装时直接将字节码翻译成可执行机器码的方式,绕过了虚拟机的低性能。然而这并没有改变安卓软件包,所以安卓软件包仍然是相对容易分析与操作的字节码,字节码操作技术能够很好的得到应用。安卓软件包的字节码与Java虚拟机所使用的字节码相对一致,其中涉及到方法调用相关的指令一共有五个,分别为InvokeStatic、InvokeVirtual、InvokeDynamic、InvokeInterface、InvokeSpecial。其中InvokeStatic用于调用静态方法,InvokeVirtual用于调用实例方法,InvokeDynamic用于调用动态解析的方法,InvokeInterface用于调用接口方法,而InvokeSpecial用于调用实例化方法、私有方法和父类的方法。通过分析其中的四个InvokeStatic、InvokeVirtual、InvokeInterface、InvokeSpecial,可以得知安卓软件包中几乎所有的被调用的方法。
技术实现思路
专利技术目的,安卓平台经过几年的迭代演化,平台架构的复杂行不断增加;新型硬件的发展给手机带来了更丰富的交互方式,也增加了安卓应用的复杂度,传统的测试方式对于软件质量的保障能力已经不足。同时,开源软件的兴起,导致了大批量的弱测试甚至无测试软件的出现,这通常是因为开发开源软件的无法像公司那样有巨大的投入。对于这些软件,如何在各种条件下都保证软件的质量,对于开发者是一个巨大挑战。如何投入尽量少的资源来尽可能保障软件质量是一个普遍关注的问题。此外,安卓软件开发的主流语言Java,针对它的异常处理代码的正确性验证是很难的。特别是对于资源相关操作的异常处理,很容易在极端外部资源条件下出现问题。本专利技术的目的正是面向以上三个问题,基于字节码操作,针对安卓平台的特点提出了一种用于安卓软件测试增强的办法。测试过程中先对安卓软件包进行分析并做一定修改,再通过配置植入代码的方式来更改软件的执行流程,然后执行测试用例来完成测试。技术方案:为完成上述目的,本专利技术采用的方案如下:一种基于字节码操作的安卓软件增强测试方法,其特征是包括如下步骤:1)基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法:11)确定安卓开发的版本和开发环境;12)确定目标安卓软件包;13)扫描安卓软件包,确定其中存在被调用的资源相关、可能抛出异常的方法;14)确定13)中每个方法对应的受检异常与不受检异常;2)通过字节码操作技术,将方法与异常的分析和触发代码植入1)中的安卓软件包,并生成修改过的软件包以及植入位置的报告:21)对1)中检查出的所有资源相关的方法和对应的每个异常,植入生成异常实例的代码;22)在21)植入生成异常实例的代码之后,植入调用分析代码的入口代码;23)确定并记录下22)对应方法的调用位置和异常的类型;24)导出23)中的所有记录,生成植入位置的报告;3)针对步骤二中产生的软件包和报告,编写被植入代码的配置文件:31)针对2)中产生的植入报告和软件包,确定运行时需要分析和触发的资源相关操作的包、类和方法;32)确定运行时需要分析和触发的资源相关操作的异常;33)确定31)和32)中的包、类、方法和异常的包含模式;34)确定31)和32)中的方法和异常,确定对应执行次数的触发模式;35)确定被植入代码的最大执行次数;36)导出上述所有配置,生成被植入代码的配置文件;4)确定安卓软件测试框架和测试用例,执行测试,收集测试用例报告以及执行过程中产生的日志,用于下一次测试:41)确定安卓测试平台;42)使用安卓开发工具,上传3)中生成的配置文件到41)中的安卓测试平台;43)确定安卓测试框架和测试脚本;44)执行测试,收集测试结果;45)使用安卓开发工具,收集测试执行过程日志;46)分析测试结果和执行过程日志,重复3)和4),进行下一次测试。有益效果:通过本专利技术中的对安卓软件的字节码修改,结合原有的测试用例,可以有效地探索抛出外部资源相关异常对测试的不同影响,从而增强原有测试。附图说明图1为本专利技术实施例的资源相关代码所在的包。图2为本专利技术实施例的生成异常实例的流程图。图3为本专利技术实施例的被植入代码的执行流程。图4为本专利技术实施例的控制策略的接口代码。图5为本专利技术实施例的生成的软件包和植入报告。图6为本专利技术实施例的被控制策略的配置文件。具体实施方式下面结合附图和具体实施例对本专利技术做进一步详细说明。本实施例的基于字节码操作的安卓软件增强测试方法,首先测试人员基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法;通过字节码操作技术,将方法与异常的分析和触发代码植入中的安卓软件包,并生成修改过的软件包以及植入位置的报告;针对之前产生的软件包和报告,编写被植入代码的配置文件;然后确定安卓软件测试框架和测试用例,执行测试,收集测试用例报告以及执行过程中产生的日志,并进行下一次测试。步骤1)基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法。安卓开发人员都知道安卓应用是使用Java进行开发的,安卓软件包的字节码与Java也是对应的。安卓软件包的内部字节码的格式为Dalvik,通过S本文档来自技高网
...

【技术保护点】
1.一种基于字节码操作的安卓软件增强测试方法,其特征是,包括如下步骤:步骤一、基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法,具体为:步骤1.1确定安卓开发的版本和开发环境;步骤1.2确定目标安卓软件包;步骤1.3扫描安卓软件包,确定其中存在被调用的资源相关、可能抛出异常的方法;步骤1.4确定步骤1.3中每个方法对应的受检异常与不受检异常;步骤二、通过字节码操作技术,将方法与异常的分析和触发代码植入步骤一中的安卓软件包,并生成修改过的软件包以及植入位置的报告,具体为:步骤2.1对步骤一中检查出的所有资源相关的方法的调用点和对应的每个异常,植入生成异常实例的代码;步骤2.2在步骤2.1植入生成异常实例的代码之后,植入调用分析代码的入口代码;步骤2.3确定并记录下步骤2.2对应方法的调用位置和异常的类型;步骤2.4导出步骤2.3中的所有记录,生成植入位置的报告;步骤三、针对步骤二中产生的软件包和报告,编写被植入代码的配置文件,具体为:步骤3.1针对步骤二中产生的植入报告和软件包,确定运行时需要分析和触发的资源相关操作的包、类和方法;步骤3.2确定运行时需要分析和触发的资源相关操作的异常;步骤3.3确定步骤3.1和步骤3.2中的包、类、方法和异常的包含模式;步骤3.4确定步骤3.1和步骤3.2中的方法和异常,确定对应执行次数的触发模式;步骤3.5)=确定被植入代码的最大执行次数;步骤3.6导出上述所有配置,生成被植入代码的配置文件;步骤四、确定安卓软件测试框架和测试用例,执行测试,收集测试用例报告以及执行过程中产生的日志,用于下一次测试,具体为:步骤4.1确定安卓测试平台;步骤4.2使用安卓开发工具,上传步骤三中生成的配置文件到步骤4.1中的安卓测试平台;步骤4.3确定安卓测试框架和测试脚本;步骤4.4执行测试,收集测试结果;步骤4.5使用安卓开发工具,收集测试执行过程日志;步骤4.6分析测试结果和执行过程日志,重复步骤三和步骤四,进行下一次测试。...

【技术特征摘要】
1.一种基于字节码操作的安卓软件增强测试方法,其特征是,包括如下步骤:步骤一、基于安卓开发框架,确定一个安卓开发版本以及一个安卓软件包,扫描并确定其中存在的资源相关的可能抛出异常的方法,具体为:步骤1.1确定安卓开发的版本和开发环境;步骤1.2确定目标安卓软件包;步骤1.3扫描安卓软件包,确定其中存在被调用的资源相关、可能抛出异常的方法;步骤1.4确定步骤1.3中每个方法对应的受检异常与不受检异常;步骤二、通过字节码操作技术,将方法与异常的分析和触发代码植入步骤一中的安卓软件包,并生成修改过的软件包以及植入位置的报告,具体为:步骤2.1对步骤一中检查出的所有资源相关的方法的调用点和对应的每个异常,植入生成异常实例的代码;步骤2.2在步骤2.1植入生成异常实例的代码之后,植入调用分析代码的入口代码;步骤2.3确定并记录下步骤2.2对应方法的调用位置和异常的类型;步骤2.4导出步骤2.3中的所有记录,生成植入位置的报告;步骤三、针对步骤二中产生的软件包和报告,编写被植入代码的配置文件,具体为:步骤3.1针对步骤二中产生的植入报告和软件包,确定运行时需要分析和触发的资源相关操作的包、类和方法;步骤3.2确定运行时需要分析和触发的资源相关操作的异常;步骤3.3确定步骤3.1和步骤3.2中的包、类、方法和异常的包含模...

【专利技术属性】
技术研发人员:潘敏学裴玉张天丁顺杰陆璐李宣东
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

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

1