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

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

Info

Publication number
CN105512046B
CN105512046B CN201610069905.3A CN201610069905A CN105512046B CN 105512046 B CN105512046 B CN 105512046B CN 201610069905 A CN201610069905 A CN 201610069905A CN 105512046 B CN105512046 B CN 105512046B
Authority
CN
China
Prior art keywords
test
test case
modules
swarm optimization
optimization algorithm
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.)
Active
Application number
CN201610069905.3A
Other languages
English (en)
Other versions
CN105512046A (zh
Inventor
胡昌振
马锐
王达光
刘月
王赫晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201610069905.3A priority Critical patent/CN105512046B/zh
Publication of CN105512046A publication Critical patent/CN105512046A/zh
Application granted granted Critical
Publication of CN105512046B publication Critical patent/CN105512046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明一种基于粒子群优化算法的Android自动化测试方法,不仅能够模块化进行应用控件的触发,并且能够生成更高效的输入类测试数据,在便捷的同时能够更加高效的触发软件异常。步骤一、将app安装在模拟器上,viewer模块负责开启view server服务,通过hierarchy viewer获取app的控件层次树信息;步骤二、以获取到的控件层次树信息为输入,PSO模块的build tree方法将其组织成便于遍历的树结构;步骤三、遍历build tree构造的控件层次树,每遍历一个节点就去test case模块中查找是否有历史测试用例;步骤四、调用test case模块中存储的测试用例集,即可实现自动化测试。

Description

基于粒子群优化算法的Android自动化测试方法
技术领域
本发明属于软件自动化测试领域,涉及一种基于粒子群优化算法的Android自动化测试方法。
背景技术
目前的Android应用自动化测试依旧需要大量的测试人员的手动参与,测试周期长,效率和覆盖率都较低,以及使用现有测试工具会导致代码冗余的问题,关键字驱动的测试框架是通过使用测试指令来操作测试用例生成的方法。目前基于关键字的测试框架与测试方法在Android应用的自动化测试中应用较为广泛。Robotium是以对Instrumentation框架的封装为基础的开源测试框架,主要用于模仿用户的场景测试。使用Robotium能够简易地为Android应用编写强健而有效的自动化黑盒及白盒测试。将关键字思想与Robotium的结合有利于测试代码模块化与测试数据分离,提高便利性与健壮性。粒子群优化算法(Particle Swarm optimization,PSO)又称为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法,引入粒子群优化算法可以使生成的输入类测试用例更加高效。
Robotium框架:
Android应用的自动化测试领域最为重要的研究成果就是Google Android SDK研发的Instrumentation框架,是现阶段绝大多数的自动化测试工具的核心。Robotium是目前使用率最高的Android开源测试框架,主要用于模仿用户的场景测试。使用Robotium能够简易地为Android应用编写强健而有效的自动化黑盒及白盒测试。Robotium是对Android自带测试类Instrumentation的一个封装,是另一种通过InstrumentationTestRunner来完Android交互式测试的架构,方便于测试人员直接调用封装好的接口。
粒子群优化算法PSO(Particie Swarm Optimization)是由Eberhart博士和Kennedy博士发明的一种新的全局优化进化算法,它源于对鸟类捕食行为的模拟。与遗传算法类似,粒子群优化算法同样基于群体(这里称作粒子群)与适应度。粒子群的个体(这里称作粒子)代表问题的一个可能解。每个粒子具有位置和速度两个特征。粒子位置坐标对应的目标函数值即可作为该粒子的适应度。算法通过适应度来衡量粒子的优劣,从而能够对解空间进行有效的优化。
经过近十年的发展,针对Android自动化测试,已经有了很多方法,但是各种技术都有其优缺点和适用情况,目前还没有一种被公认的最为有效的方法,尤其是输入类测试用例生成方向。目前测试人员实现Android应用自动化测试往往是:通过UI检查工具从可视化的角度直观地获得UI布局设计结构和各种属性的信息,根据得到的属性信息结合自动化测试工具提供的方法对控件进行操作,从而触发应用程序的运行,在运行中监测每一步的输出信息和运行结果,从而发现应用程序的危险路径。首先,这样的Android应用自动化测试依旧需要大量的测试人员的手动参与,测试周期长,效率和覆盖率都较低。其次,现有的Android自动化测试框架在生成输入类的测试用例方面有极大的局限性,主要依靠经验判断,大大降低了自动化测试的效率与覆盖率。
发明内容
本发明一种基于粒子群优化算法的Android自动化测试方法,提供结合关键字、粒子群优化算法,以现有的Android自动化测试工具为基础,将粒子群优化算法引入到Android自动化测试中,不仅能够模块化进行应用控件的触发,并且能够生成更高效的输入类测试数据,在便捷的同时能够更加高效的触发软件异常。
本发明通过以下技术方案实现。
一种基于粒子群优化算法的Android自动化测试方法,包括以下步骤:
步骤一、将应用安装在模拟器上,viewer模块负责开启View Server服务,通过hierarchy viewer获取应用的控件层次树信息;
步骤二、以获取到的控件层次树信息为输入,在生成控件层次树的方法中将其组织成便于遍历的树结构;
步骤三、遍历build tree构造的控件层次树,每遍历一个节点就去存储测试用例模块test case中查找是否有历史测试用例,有则继续遍历下一个节点,没有则调用生成测试数据模块PSO的create test case方法进行生成;所述的生成过程如下:根据控件层次树中的控件信息调用测试方法模块test method,查询该控件的测试用例需要用到的测试方法并记录关键字method key,而后create test case调用pre-seed方法生成测试数据,其中pre-seed中为粒子群优化算法的具体实现,根据数据类型生成随机序列,粒子群优化算法通过调整序列中的粒子最终得到最优测试数据,将测试数据与测试方法信息结合即为测试用例,存放于在test case模块中;
步骤四、调用test case模块中存储的测试用例集,即可实现自动化测试。
本发明的有益效果:
本发明结合关键字与Robotium框架并且引入粒子群优化算法,使三者有效的结合起来,以自动化生成测试用例方法研究为重点,通过自动化的测试用例生成来避免低效的手动测试,进而通过对robotium的重新封装来避免代码冗余,最重要的是通过引入粒子群优化算法生成“最优”测试数据,这里的最优是指通过粒子群优化算法可以通过调整测试数据中粒子的选取和粒子的位置,使得以往一条测试触发一次或少数几次异常变为一条测试数据尽可能多的触发异常,进而能够以最少的测试用例达到理想的测试效果,提高测试效率和覆盖率。
具体实施方式
下面对本发明作进一步介绍。
本发明的基于粒子群优化算法的Android自动化测试方法主要分为viewer、testmethod、PSO、test case、report/log模块,其中PSO是整个方法的核心模块,负责粒子群优化算法对测试用例的生成,viewer负责获取被测应用的控件层次树信息,test method模块是对robotium中基本测试方法的的重新封装,负责减少代码冗余提供更高效的测试方法,report/log模块负责记录运行日志,方便查找异常信息、test case模块用于存储已经生成的测试用例,便于复用以提高测试用例生成效率。
当选定一个APK后,首先要连接其与viewer模块的通信,由于view server获得的控件层次树信息是纯文本的,所以需要将控件层次树信息传送给PSO模块的buildtree方法,将控件层次树信息整理成基于关键字的方便遍历的控件层次树,而后调用create testcase方法,这个过程中会不断查询test case中是否有可复用的测试用例,若没有则调用pre-seed生成,若有则跳过,最终生成的所有测试用例均存储于test case中。
(1)Viewer获取控件层次树
Viewer模块主要做下面3件事情:
1)把Android设备上的4939端口映射到PC的某端口上,这样,向PC的该端口号发包都会转发到Android设备的4939端口上;
2)打开ViewServer服务,连接ViewServer;
3)获取activity列表;
4)获取控件层次树信息。
通过上述方法可以获取Android应用每一个Activity的控件层次树信息。
(2)Robotium方法封装
自动化生成测试用例的前提是:需要的测试数据模型和测试方法需要预先定义在test data文件和test methods文件中。
Robotium提供一系列的基础测试方法用于定位控件和对控件进行操作。之所以以关键字为方法名封装Robotium提供的基础测试方法,是因为对于同一种控件的测试动作往往是相同的,尤其是按钮等以点击为触发条件的控件,测试人员在针对同一种控件所编写的自动化测试用例所要实现的往往是相同的动作,这便使得按照控件类型封装出小的功能组件成为可能。
test method中的封装好的自动化测试方法,实际上就是基于robotium提供的基础方法的常用测试代码段。
(3)PSO生成测试用例
首先PSO模块build tree部分会将viewer中获取的控件层次文本信息以树形逻辑结构组织起来,create test case部分遍历test method和test case,选用合适关键字标识其需要何种方法(方便调用test method)需要何种测试数据(这里指测试数据类型,如int、char)以及查询是否有可复用的历史测试用例,若有则跳过,若没有则调用pre-seed,pre-seed部分会遍历测试用例生成树使用粒子群优化算法生成测试用例,test case模块其中存储的是粒子群优化算法下生成的“最优”测试数据。
首先是PSO中build tree方法的设计,build tree方法主要实现将控件层次信息从文本中读取出后,按照树的数据结构将其组织起来,便于后续的遍历,每一个节点会有一个hashcode的唯一标识。
PSO模块中的create test case方法所要完成的工作如下:1)遍历基于关键字的测试用例生成树;2)每遍历一个节点,使用hashcode查找对应的test case(若已经存在最优粒子则跳转下一步,若没有则调用pre-seed。
pre-seed方法负责随机挑选测试数据序列内容(随机粒子),并根据已有信息(如text信息要求该输入框中数据最长不超过20个字符等)随机挑选序列长度,对其进行优化并求取最优解。
(4)粒子群优化算法
算法的目的是初始化一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己:一个是粒子本身所找到的最优解,即个体极值pBest;另一个是整个粒子群目前找到的最优解,称之为全局极值gBest。粒子在找到上述两个极值后,就根据下面两个公式来更新自己的速度与位置:
V=w*V+c1*rand*(pBest-Present)+c2*rand*(gBest-Present) (1)
Present=Present+V (2)
其中,V是粒子的速度,Present是粒子的当前位置.rand是[0,1]之间的随机数,c1和c2被称作学习因子,通常,c1=c2=2。w是加权系数,一般在0.1到0.9之间取值。大量相关实验证明,如果w随算法迭代的进行而线性减小,将显著改善算法的收敛性能。设wmax为最大加权系数,wmin为最小加权系数,run为当前迭代次数,runmax为算法迭代总次数,则:
w=wmax–run*(wmax-wmin)runmax
更新过程中,粒子每一维的最大速率限制在vmax,粒子每一维的坐标也被限制在允许范围之内。同时,pBest与gBest在迭代过程中不断更新,最后输出的gBest就是算法得到的最优解。粒子群优化算法无论是早熟收敛还是全局收敛,粒子群中的粒子都会出现“聚集”现象。要么所有粒子聚集在某一特定位置,要么聚集在某几个特定位置,这主要取决于问题本身的特性以及适应度函数的选择。
(5)test case模块
test case中是根据PSO模块得到的历史测试用例,每一个测试用例包含5个字段:hashcode、method key、data key、input、output。其中hashcode为唯一标识,method key标识其对应的test method中的测试方法,data key标识用于生成测试数据的数据类型,input标识最优粒子序列,output代表预期输出。data key字段采用分层关键字的设计,例如:String关键字下可能包含子关键字字段ASCLL、非ASCLL等。

Claims (7)

1.一种基于粒子群优化算法的Android自动化测试方法,其特征在于,包括以下步骤:
步骤一、将应用安装在模拟器上,viewer模块负责开启View Server服务,通过hierarchy viewer获取应用的控件层次树信息;
步骤二、以获取到的控件层次树信息为输入,在生成控件层次树的方法中,将控件层次树信息整理成基于关键字的方便遍历的控件层次树;
步骤三、遍历build tree构造的控件层次树,每遍历一个节点就去存储测试用例模块test case中查找是否有可复用的历史测试用例,有则继续遍历下一个节点,没有则调用生成测试数据模块PSO的create test case方法进行生成;所述的生成过程如下:根据控件层次树中的控件信息调用测试方法模块test method,查询该控件的测试用例需要用到的测试方法并记录关键字method key,而后create test case调用pre-seed方法生成测试数据,其中pre-seed中为粒子群优化算法的具体实现,根据数据类型生成随机序列,粒子群优化算法通过调整序列中的粒子最终得到最优测试数据,将测试数据与测试方法信息结合即为测试用例,存放于在test case模块中;
步骤四、调用test case模块中存储的测试用例集,即可实现自动化测试。
2.一种基于粒子群优化算法的Android自动化测试系统,其特征在于,包括viewer模块、test method模块、PSO模块、test case模块、report/log模块;其中:
PSO模块负责粒子群优化算法对测试用例的生成;
viewer模块负责获取被测应用的控件层次树信息;
test method模块是对Android自动化测试框架robotium中基本测试方法的的重新封装,负责减少代码冗余提供更高效的测试方法;
report/log模块负责记录运行日志,方便查找异常信息;
test case模块用于存储已经生成的测试用例,便于复用以提高测试用例生成效率;
当选定一个APK后,首先连接其与viewer模块的通信,将控件层次树信息传送给PSO模块的buildtree方法,将控件层次树信息整理成基于关键字的方便遍历的控件层次树,而后调用create test case方法,过程中不断查询test case中是否有可复用的历史测试用例,若没有则调用pre-seed生成,若有则跳过,最终生成的所有测试用例均存储于test case中。
3.如权利要求2所述的一种基于粒子群优化算法的Android自动化测试系统,其特征在于,进一步地,viewer模块获取控件层次树信息采用以下方法:
3.1将Android设备上的4939端口映射到PC的某端口上,使得向PC的该端口号发包转发到Android设备的4939端口上;
3.2打开ViewServer服务,连接ViewServer;
3.3获取activity列表;
3.4获取控件层次树信息;
通过上述方法可以获取Android应用每一个Activity的控件层次树信息。
4.如权利要求2或3所述的一种基于粒子群优化算法的Android自动化测试系统,其特征在于,进一步地,PSO模块生成测试用例采用以下方法:
首先PSO模块build tree部分会将viewer中获取的控件层次文本信息以树形逻辑结构组织起来,create test case部分遍历test method和test case,选用合适关键字标识其需要何种方法、需要何种测试数据以及查询是否有可复用的历史测试用例,若有则跳过,若没有则调用pre-seed,pre-seed部分会遍历测试用例生成树使用粒子群优化算法生成测试用例,test Case模块中存储的是粒子群优化算法下生成的“最优”测试数据。
5.如权利要求2或3所述的一种基于粒子群优化算法的Android自动化测试系统,其特征在于,进一步地,粒子群优化算法的步骤为:
初始化一群随机粒子,然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个“极值”来更新自己:一个是粒子本身所找到的最优解,即个体极值pBest;另一个是整个粒子群目前找到的最优解,称之为全局极值gBest,粒子在找到上述两个极值后,根据下面两个公式来更新自己的速度与位置:
V=w*V+c1*rand*(pBest-Present)+c2*rand*(gBest-Present) (1)
Present=Present+V (2)
其中,V是粒子的速度,Present是粒子的当前位置,rand是[0,1]之间的随机数,c1和c2被称作学习因子,c1=c2=2;w是加权系数;
pBest与gBest在迭代过程中不断更新,最后输出的gBest即是算法得到的最优解。
6.如权利要求2或3所述的一种基于粒子群优化算法的Android自动化测试系统,其特征在于,进一步地,test case模块根据PSO模块得到的历史测试用例,每一个测试用例包含5个字段:hashcode、method key、data key、input、output;其中hashcode为唯一标识,method key 标识其对应的test method中的测试方法,data key标识用于生成测试数据的数据类型,input标识最优粒子序列,output代表预期输出。
7.如权利要求5所述的一种基于粒子群优化算法的Android自动化测试系统,其特征在于,进一步地,w在0.1到0.9之间取值,w=wmax–run*(wmax-wmin)runmax
其中,wmax为最大加权系数,wmin为最小加权系数,run为当前迭代次数,runmax为算法迭代总次数。
CN201610069905.3A 2016-02-01 2016-02-01 基于粒子群优化算法的Android自动化测试方法 Active CN105512046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610069905.3A CN105512046B (zh) 2016-02-01 2016-02-01 基于粒子群优化算法的Android自动化测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610069905.3A CN105512046B (zh) 2016-02-01 2016-02-01 基于粒子群优化算法的Android自动化测试方法

Publications (2)

Publication Number Publication Date
CN105512046A CN105512046A (zh) 2016-04-20
CN105512046B true CN105512046B (zh) 2018-02-13

Family

ID=55720047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610069905.3A Active CN105512046B (zh) 2016-02-01 2016-02-01 基于粒子群优化算法的Android自动化测试方法

Country Status (1)

Country Link
CN (1) CN105512046B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108376116B (zh) * 2018-01-31 2021-06-11 浙江理工大学 基于改进粒子群算法的测试用例生成方法
CN109947649B (zh) * 2019-03-20 2021-03-23 北京邮电大学 一种回归测试用例的排序方法及装置
CN112241362A (zh) * 2019-07-19 2021-01-19 腾讯科技(深圳)有限公司 一种测试方法、装置、服务器及存储介质
CN110515845B (zh) * 2019-08-20 2022-12-30 义乌工商职业技术学院 基于改进ipo策略的组合测试用例优化生成方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5045666B2 (ja) * 2006-02-20 2012-10-10 富士通株式会社 プログラム解析方法、プログラム解析装置およびプログラム解析プログラム
CN101464831B (zh) * 2009-01-09 2010-12-01 西安邮电学院 一种测试用例集缩减方法
CN101976221B (zh) * 2010-10-14 2012-12-19 北京航空航天大学 一种基于粒子群禁忌组合的并行测试任务调度方法及平台
CN102063376B (zh) * 2011-02-16 2013-01-16 哈尔滨工程大学 一种测试用例选取方法
CN102135937B (zh) * 2011-03-15 2014-02-19 西安邮电大学 一种两两覆盖组合软件测试用例集生成方法
CN104699595B (zh) * 2013-12-06 2017-07-28 北京大学 一种面向软件升级的软件测试方法
CN104820636B (zh) * 2015-04-09 2017-11-07 北京轩宇信息技术有限公司 一种并行的基于蚁群算法的测试用例序列生成方法

Also Published As

Publication number Publication date
CN105512046A (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
CN105512046B (zh) 基于粒子群优化算法的Android自动化测试方法
CN103793467B (zh) 一种基于超图和动态规划的大数据实时查询优化方法
CN103631596B (zh) 业务对象数据录入及更新规则的配置装置和配置方法
CN106649878A (zh) 基于人工智能的物联网实体搜索方法及系统
CN102779037B (zh) 一种自动生成与统一维护java项目的可视化编程方法
WO1999060476A1 (en) The synthesis of an economic web and the identification of new market niches
CN104573184B (zh) 高速列车产品元模型构建方法和装置
CN113721892A (zh) 领域建模方法、装置、计算机设备和存储介质
Arasteh et al. Bölen: software module clustering method using the combination of shuffled frog leaping and genetic algorithm
CN110442620A (zh) 一种大数据探索和认知方法、装置、设备以及计算机存储介质
CN109933907A (zh) 一种装备管理业务模型的建立方法及装置
Naghavipour et al. Hybrid metaheuristics for QoS-aware service composition: A systematic mapping study
CN104598622A (zh) 一种数据修改日志的实现方法和系统及应用服务器
Cuevas et al. A swarm algorithm inspired by the collective animal behavior
Yu et al. Qos oriented sensor selection in iot system
CN101706840A (zh) 基于产品节点树的产品性能仿真信息的表示方法
Lee et al. Performance comparison of metaheuristic algorithms using a modified Gaussian fitness landscape generator
Li et al. Evolutionary organizational search
Thakore et al. Algorithms for asynchronous parallel processing of object-oriented databases
CN106383863A (zh) 一种同构子图查询优化方法
CN106201510A (zh) 一种ue4粒子系统与外部数据的通信方法
Wang et al. A graph based simulation of reorganization in multi-agent systems
Parry et al. Aphid population dynamics in agricultural landscapes: an agent-based simulation model
Eldrandaly et al. Grid quorum‐based spatial coverage in mobile wireless sensor networks using nature‐inspired firefly algorithm
Zeng et al. Data skyline query protocol based on parallel genetic improvement decision tree

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant