基于粒子群优化算法的Android自动化测试方法

文档序号:9750727阅读:588来源:国知局
基于粒子群优化算法的Android自动化测试方法
【技术领域】
[0001 ]本发明属于软件自动化测试领域,涉及一种基于粒子群优化算法的Android自动化测试方法。
【背景技术】
[0002]目前的Android应用自动化测试依旧需要大量的测试人员的手动参与,测试周期长,效率和覆盖率都较低,以及使用现有测试工具会导致代码冗余的问题,关键字驱动的测试框架是通过使用测试指令来操作测试用例生成的方法。目前基于关键字的测试框架与测试方法在Android应用的自动化测试中应用较为广泛。Robotium是以对Instrumentat1n框架的封装为基础的开源测试框架,主要用于模仿用户的场景测试。使用Robotium能够简易地为Android应用编写强健而有效的自动化黑盒及白盒测试。将关键字思想与Robotium的结合有利于测试代码模块化与测试数据分离,提高便利性与健壮性。粒子群优化算法(Particle Swarm optimizat1n,PSO)又称为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法,引入粒子群优化算法可以使生成的输入类测试用例更加高效。
[0003]Robotium 框架:
[0004]Android应用的自动化测试领域最为重要的研究成果就是GoogleAndroid SDK研发的Instrumentat1n框架,是现阶段绝大多数的自动化测试工具的核心。Robotium是目前使用率最高的Android开源测试框架,主要用于模仿用户的场景测试。使用Robotium能够简易地为Android应用编写强健而有效的自动化黑盒及白盒测试。Robotium是对Android自带测试类Instrumentat 1n的一个封装,是另一种通过Instrumentat1nTestRunner来完Android交互式测试的架构,方便于测试人员直接调用封装好的接口。
[0005]粒子群优化算法PSO(ParticieSwarm Optimizat1n)是由Eberhart博士和Kennedy博士发明的一种新的全局优化进化算法,它源于对鸟类捕食行为的模拟。与遗传算法类似,粒子群优化算法同样基于群体(这里称作粒子群)与适应度。粒子群的个体(这里称作粒子)代表问题的一个可能解。每个粒子具有位置和速度两个特征。粒子位置坐标对应的目标函数值即可作为该粒子的适应度。算法通过适应度来衡量粒子的优劣,从而能够对解空间进行有效的优化。
[0006]经过近十年的发展,针对Android自动化测试,已经有了很多方法,但是各种技术都有其优缺点和适用情况,目前还没有一种被公认的最为有效的方法,尤其是输入类测试用例生成方向。目前测试人员实现Android应用自动化测试往往是:通过UI检查工具从可视化的角度直观地获得UI布局设计结构和各种属性的信息,根据得到的属性信息结合自动化测试工具提供的方法对控件进行操作,从而触发应用程序的运行,在运行中监测每一步的输出信息和运行结果,从而发现应用程序的危险路径。首先,这样的Android应用自动化测试依旧需要大量的测试人员的手动参与,测试周期长,效率和覆盖率都较低。其次,现有的Android自动化测试框架在生成输入类的测试用例方面有极大的局限性,主要依靠经验判断,大大降低了自动化测试的效率与覆盖率。

【发明内容】

[0007]本发明一种基于粒子群优化算法的Android自动化测试方法,提供结合关键字、粒子群优化算法,以现有的Android自动化测试工具为基础,将粒子群优化算法引入到Android自动化测试中,不仅能够模块化进行应用控件的触发,并且能够生成更高效的输入类测试数据,在便捷的同时能够更加高效的触发软件异常。
[0008]本发明通过以下技术方案实现。
[0009]—种基于粒子群优化算法的Android自动化测试方法,包括以下步骤:
[00?0] 步骤一、将应用安装在模拟器上,viewer模块负责开启View Server服务,通过hierarchy viewer获取应用的控件层次树信息;
[0011]步骤二、以获取到的控件层次树信息为输入,在生成控件层次树的方法中将其组织成便于遍历的树结构;
[0012]步骤三、遍历build tree构造的控件层次树,每遍历一个节点就去存储测试用例模块test case中查找是否有历史测试用例,有则继续遍历下一个节点,没有则调用生成测试数据模块PSO的create test case方法进行生成;所述的生成过程如下:根据控件层次树中的控件信息调用测试方法模块test method,查询该控件的测试用例需要用到的测试方法并记录关键字method key,而后create test case调用pre-seed方法生成测试数据,其中pre-seed中为粒子群优化算法的具体实现,根据数据类型生成随机序列,粒子群优化算法通过调整序列中的粒子最终得到最优测试数据,将测试数据与测试方法信息结合即为测试用例,存放于在test case模块中;
[0013]步骤四、调用testcase模块中存储的测试用例集,即可实现自动化测试。
[0014]本发明的有益效果:
[0015]本发明结合关键字与Robotium框架并且引入粒子群优化算法,使三者有效的结合起来,以自动化生成测试用例方法研究为重点,通过自动化的测试用例生成来避免低效的手动测试,进而通过对robotium的重新封装来避免代码冗余,最重要的是通过引入粒子群优化算法生成“最优”测试数据,这里的最优是指通过粒子群优化算法可以通过调整测试数据中粒子的选取和粒子的位置,使得以往一条测试触发一次或少数几次异常变为一条测试数据尽可能多的触发异常,进而能够以最少的测试用例达到理想的测试效果,提高测试效率和覆盖率。
【具体实施方式】
[0016]下面对本发明作进一步介绍。
[0017]本发明的基于粒子群优化算法的Android自动化测试方法主要分为viewer、testmethod、PSO、test case、report/log模块,其中PSO是整个方法的核心模块,负责粒子群优化算法对测试用例的生成,viewer负责获取被测应用的控件层次树信息,test method模块是对robot ium中基本测试方法的的重新封装,负责减少代码冗余提供更高效的测试方法,report/log模块负责记录运行日志,方便查找异常信息、test case模块用于存储已经生成的测试用例,便于复用以提高测试用例生成效率。
[0018]当选定一个APK后,首先要连接其与viewer模块的通信,由于viewserver获得的控件层次树信息是纯文本的,所以需要将控件层次树信息传送给PSO模块的buildtree方法,将控件层次树信息整理成基于关键字的方便遍历的控件层次树,而后调用create testcase方法,这个过程中会不断查询test case中是否有可复用的测试用例,若没有则调用preseed生成,若有则跳过,最终生成的所有测试用例均存储于test case中。
[0019](I)Viewer获取控件层次树[°02°] Viewer模块主要做下面3件事情:
[0021 ] I)把Android设备上的4939端口映射到PC的某端口上,这样,向PC的该端口号发包都会转发到Android设备的4939端口上;
[0022]2)打开 ViewServer服务,连接 ViewServer ;
[0023]3)获取 activity 列表;
[0024]4)获取控件层次树信息。
[°°25] 通过上述方法可以获取Android应用每一个Activity的控件层次树信息。
[0026](2)Robotium 方法封装
[0027]自动化生成测试用例的前提是:需要的测试数据模型和测试方法需要预先定义在test data文件和test methods文件中。
[0028]Robotium提供一系列的基础测试方法用于定位控件和对控件进行操作。之所以以关键字为方法名封装Robotium提供的基础测试方法,是因为对于同一种控件的测试动作往往是相同的,尤其是按钮等以点击为触发条件的控件,测试人员在针对同一种控件所编写的自动化测试用例所要实现的往往是相同的动作,这便使得按照控件类型封装出小的功能组件成为可能。
[0029]test method中的封装好的自动化测试方法,实际上就是基于robotium提供的基础方法的常用测试代码段。
[0030](3)PS0生成测试用例
[0031 ]首先PSO模块build tree部分会将viewer中获取的控件层次文本信息以树形逻辑结构组织起来,create test case部分遍历test method和test case,选用合适关键字标识其需要何种方法(方便调用test method)需要何种测试数据(这里指测试数据类型,如int、char)以及查询是否有可复用的历史测试用例,若有则跳过,若没有则调用PreSeed,PreSeed部分会遍历测试用例生成树使用粒子群优化算法生成测试用例,Test Case模块其中存储的是粒子群优化算法下生成的“最优”测试数据。
[0032]首先是PSO中build tree方法的设计,build tree方法主要实现将控件层次信息从文本中读取出后,按照树的数据结构将其组织起来,便于后续的遍历,每一个节点会有一个hashcode的唯一标识。
[0033]PSO
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1