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

好奇心驱动的安卓应用自动化测试方法技术

技术编号:38893227 阅读:15 留言:0更新日期:2023-09-22 14:16
本发明专利技术提供了一种好奇心驱动的安卓应用自动化测试方法,包括以下步骤:1)左边部分表示预处理组件,它基于Android界面结构实现安卓应用状态的抽象;2)右边部分是好奇心驱动的强化学习模块,该强化学习模块维护一个历史访问状态集合,以基于好奇心思想的奖励函数为指导,不断优化探索策略,引导测试发现更多的新状态;3)中间部分表示DFA高级指导模块,在运行时构建一个确定性有限状态自动机DFA,记录所有访问状态及其频率,如果在给定的时间预算内无法探索到新的状态,AndroidExplore会根据DFA的全局信息选取一个最好奇的状态作为下一次探索的起点,以避免陷入局部最优和提高深层功能的探索概率。应用本技术方案可实现更高的代码覆盖率、故障暴露数和测试效率。故障暴露数和测试效率。故障暴露数和测试效率。

【技术实现步骤摘要】
好奇心驱动的安卓应用自动化测试方法


[0001]本专利技术涉及安卓应用自动化测试
,特别是好奇心驱动的安卓应用自动化测试方法。

技术介绍

[0002]随着移动设备的普及,应用程序的数量也呈现出爆炸式的增长,日常生活对其的依赖性也在不断的提高。数据显示,平均每位用户每天花在移动应用上的时间超过2小时,所以如何保证应用程序的正确性就显得尤为重要。一般来说,高质量测试是保障应用程序正确性的重要途径。然而,Android应用程序的测试仍然是一个挑战:(1)一个应用程序可能包含了许多复杂的业务功能,并且这些功能通常包含大量的接口和可执行事件,这就会导致可能的事件和转换的组合空间是巨大的;(2)应用程序还存在只有在特定条件下才能访问的功能;(3)Android应用程序以移动设备为载体,还存其特有的系统级事件(例如音量增加或减少等)。

技术实现思路

[0003]有鉴于此,本专利技术的目的在于提供一种好奇心驱动的安卓应用自动化测试方法,实现更高的代码覆盖率、故障暴露数和测试效率。
[0004]为实现上述目的,本专利技术采用如下技术方案:好奇心驱动的安卓应用自动化测试方法,包括以下步骤:
[0005]1)左边部分表示预处理组件,它基于Android界面结构实现安卓应用状态的抽象;预处理组件使用自动化框架UIautomator提取Android界面结构,将其映射成一个Android应用状态并提取可执行事件集合;
[0006]2)右边部分是好奇心驱动的强化学习模块,该强化学习模块维护一个历史访问状态集合,以基于好奇心思想的奖励函数为指导,不断优化探索策略,引导测试发现更多的新状态;
[0007]3)中间部分表示DFA高级指导模块,该DFA高级指导模块在运行时构建一个确定性有限状态自动机DFA,记录所有访问状态及其频率,如果在给定的时间预算内无法探索到新的状态,AndroidExplore会根据DFA的全局信息选取一个最好奇的状态作为下一次探索的起点,以避免陷入局部最优和提高深层功能的探索概率。
[0008]在一较佳的实施例中,以被测试Android应用程序AUT、测试时间、动作序列的最大步骤数和相似度阈值作为输入;然后,在给定的测试时间内持续探索Android应用程序AUT,设置动作序列的最大步骤数,步骤数达到最大时,将应用程序AUT重启,开始新一轮的测试;测试开始后,AndroidExplore维护一个状态集合M存储已经探索的状态,以此引导AndroidExplore去探索一些不同的状态,即好奇的状态;预处理模块从应用程序AUT中抽象出初始Android应用状态s
t
和可执行动作集合A
t
;每一轮测试开始于初始状态s
t
,根据策略选取动作a
t
并执行,AUT将响应它并转换到另一个状态;若应用程序AUT转换到一个故障状
态,将当前动作序列添加到故障用例集合,并结束这一轮的测试;否则预处理模块抽象出下一状态s
t+1
和动作集合A
t+1
;在给定的时间预算内,AndroidExplore没有探索到新的状态,将由运行时构建的DFA提供高级指导,选取一个最好奇的状态作为下一次探索的起点,并更新动作序列;
[0009]当状态s
t+1 is到达时,AndroidExplore根据本专利技术所提出的Android应用状态相似度计算方法,将状态s
t+1
与历史状态集合M中已探索状态进行比较,并根据他们的相似度值计算奖励r
t
,更新状态集合M;然后,AndroidExplore根据转换(s
t, a
t
,s
t+1
)和r
t
训练策略π;此外,在运行时根据转换(s
t
,a
t
,s
t+1
)动态构建确定性有限状态自动机DFA,并更新每个转换的访问次数;最后,测试结束时解析AUT生成此次探索的代码覆盖率。
[0010]在一较佳的实施例中,使用自动化框架UIAutomator来分析当前Android应用的界面结构,获取Activity和各种视图组件的信息,以此抽象出Android应用状态s
t
=(act,e1,e2,...,e
n
),其中act表示当前Android应用界面的Activity,e
i
={path
i
,classname
i
,x
i
,y
i
,width
i
,height
i
}表示界面中的视图组件,它们以树形结构排列,其中path
i
表示元素e
i
在Android界面结构中的所在路径,classname
i
表示e
i
的类名,x
i
表示e
i
在界面中的横坐标,y
i
表示e
i
在界面中的纵坐标,width
i
表示e
i
在界面中的宽度,height
i
表示e
i
在界面中的高度;
[0011]Pre

processing将AUT作为输入,并输出当前状态s
t
和动作集合A
t
;在测试期间,AndroidExplore维护一个状态集合M存储已经访问的状态;首先pre

processing使用自动化框架UIAutomator来获取当前Android界面结构,分析它所包含的Activity和各种视图控件的信息,根据这些信息生成状态s
t
;然后,Pre

processing遍历并分析每一个视图控件的属性(e.g.,clickable,scrollable),以此推断并生成可执行动作集合;此外,添加移动设备的系统级事件到动作集合中,来暴露更多的应用程序故障;最后采用Android应用状态相似度计算方法,将当前状态与已访问状态比较,如果相似度大于所设定阈值则合并状态,否则将以新状态s
t
返回。
[0012]在一较佳的实施例中,在Android应用测试中,目标是学习一个有效的探索策略来生成高质量的测试用例;这些测试用例的执行能够探索应用程序不同的行为,进一步提高发现应用程序中隐藏故障的概率,需要进一步定义一个有效的奖励函数。
[0013]在一较佳的实施例中,提出一个Android应用状态相似度计算方法,并基于好奇心的思想将其融入到奖励函数的设计之中,以此引导Android应用测试向发现更多不同状态的方向前进。
[0014]在一较佳的实施例中,给定两个Android应用状态RT
k
和RT
j
,首先判断它们所属本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.好奇心驱动的安卓应用自动化测试方法,其特征在于,包括以下步骤:1)左边部分表示预处理组件,它基于Android界面结构实现安卓应用状态的抽象;预处理组件使用自动化框架UIautomator提取Android界面结构,将其映射成一个Android应用状态并提取可执行事件集合;2)右边部分是好奇心驱动的强化学习模块,该强化学习模块维护一个历史访问状态集合,以基于好奇心思想的奖励函数为指导,不断优化探索策略,引导测试发现更多的新状态;3)中间部分表示DFA高级指导模块,该DFA高级指导模块在运行时构建一个确定性有限状态自动机DFA,记录所有访问状态及其频率,如果在给定的时间预算内无法探索到新的状态,AndroidExplore会根据DFA的全局信息选取一个最好奇的状态作为下一次探索的起点,以避免陷入局部最优和提高深层功能的探索概率。2.根据权利要求1所述的好奇心驱动的安卓应用自动化测试方法,其特征在于,以被测试Android应用程序AUT、测试时间、动作序列的最大步骤数和相似度阈值作为输入;然后,在给定的测试时间内持续探索Android应用程序AUT,设置动作序列的最大步骤数,步骤数达到最大时,将应用程序AUT重启,开始新一轮的测试;测试开始后,AndroidExplore维护一个状态集合M存储已经探索的状态,以此引导AndroidExplore去探索一些不同的状态,即好奇的状态;预处理模块从应用程序AUT中抽象出初始Android应用状态s
t
和可执行动作集合A
t
;每一轮测试开始于初始状态s
t
,根据策略选取动作a
t
并执行,AUT将响应它并转换到另一个状态;若应用程序AUT转换到一个故障状态,将当前动作序列添加到故障用例集合,并结束这一轮的测试;否则预处理模块抽象出下一状态s
t+1
和动作集合A
t+1
;在给定的时间预算内,AndroidExplore没有探索到新的状态,将由运行时构建的DFA提供高级指导,选取一个最好奇的状态作为下一次探索的起点,并更新动作序列;当状态s
t+1
is到达时,AndroidExplore根据本发明所提出的Android应用状态相似度计算方法,将状态s
t+1
与历史状态集合M中已探索状态进行比较,并根据他们的相似度值计算奖励r
t
,更新状态集合M;然后,AndroidExplore根据转换(s
t
,a
t
,s
t+1
)和r
t
训练策略π;此外,在运行时根据转换(s
t
,a
t
,s
t+1
)动态构建确定性有限状态自动机DFA,并更新每个转换的访问次数;最后,测试结束时解析AUT生成此次探索的代码覆盖率。3.根据权利要求1所述的好奇心驱动的安卓应用自动化测试方法,其特征在于,使用自动化框架UIAutomator来分析当前Android应用的界面结构,获取Activity和各种视图组件的信息,以此抽象出Android应用状态s
t
=(act,e1,e2,

,e
n
),其中act表示当前Android应用界面的Activity,e
i
={path
i
,classname
i
,x
i
,y
i
,width
i
,height
i
}表示界面中的视图组件,它们以树形结构排列,其中payh
i
表示元素e
i
在Android界面结构中的所在路径,classname
i
表示e
i
的类名,x
i
表示e
i
在界面中的横坐标,y
i
表示e
i
在界面中的纵坐标,width
i
表示e
i
在界面中的宽度,height
i
表示e
i
在界面中的高度;Pre

processing将AUT作为输入,并输出当前状态s
t
和动作集合A
t
;在测试期间,AndroidExplore维护一个状态集合M存储已经访问的状态;首先pre

processing使用自动化框架UIAutomator来获取当前Android界面结构,分析它所包含的Activity和各种视图控件的信息,根据这些信息生成状态s
t
;然后,Pre

processing遍历并分析每一个视图控件的属性(e.g.,clickable,scrollable),以此推断并生成可执行动作集合;此外,添加移动设
备的系统级事件到动作集合中,来暴露更多的应用程序故障;最后采用Android应用状态相似度计算方法,将当前状态与已访问状态比较,如果相似度大于所设定阈值则合并状态,否则将以新状态s
t
返回。4.根据权利要求1所述的好奇心驱动的安卓应用自动化测试方法,其特征在于,在Android应用测试中,目标是学习一个有效的探索策略来生成高质量的测试用例;这些测试用例的执行能够探索应用程序不同的行为,进一步提高发现应用程序中隐藏故障的概率,需要进一步定义一个有效的奖励函数。5.根据权利要求4所述的好奇心驱动的安卓应用自动化测试方法,其特征在于,提出一个Android应用状态相似度计算方法,并基于好奇心的思想将其融入到奖励函数的设计之中,以此引导Android应用测试向发现更多不同状态的方向前进。6.根据权利要求5所述的好奇心驱动的安卓应用自动化测试方法,其特征在于,给定两个Android应用状态RT
k
和RT
j
,首先判断它们所属的Activity是否相同,如果不同,它们可能关注的是不同的功能场景,则被认为是不同的状态;否则进一步基于界面结构信息计算两个Android应用状态的界面相似度,见公式1,如果大于一个预定义的阈值则被认为是相同状态;其中,l表示元素所在的层数,e
k,l,q
表示RT
k
中第l层的第q个元素,e
j,l,r
表示RT
j
的第l层节点的第r个元素;函数equalE()用于判断两个元素是否相同;逐层计算RT
k
和...

【专利技术属性】
技术研发人员:陈星陈迎仁宋日荣
申请(专利权)人:福州大学
类型:发明
国别省市:

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

1