一种并行化安卓应用UI自动探索方法转让专利
申请号 : CN201910248660.4
文献号 : CN110096323B
文献日 : 2022-03-18
发明人 : 曹春 , 邓靖 , 余萍 , 马晓星
申请人 : 南京大学
摘要 :
权利要求 :
1.一种并行化安卓应用UI自动探索方法,其特征在于,应用于互相通信连接的控制设备和一个以上测试设备,所述一个以上测试设备中均安装有待测应用,所述方法包括:所述控制设备从任务队列中取出待执行的探索任务,其中,该探索任务为所述待测应用的待探测activity的UI探索任务;
所述控制设备从所述一个以上测试设备中确定当前未执行探索任务的空闲测试设备,将所述待执行的探索任务分配给所述空闲测试设备;
所述空闲测试设备接收到所述待执行的探索任务后,进入待探索activity,在待探索activity内持续根据所述待测应用当前的UI执行输入事件直至达到预设条件,以完成待探索activity的UI探索任务;
所述控制设备记录所述空闲测试设备在完成待探索activity的UI探索任务的过程中的UI跳转图,并在该过程中触发新的activity后生成所述新的activity的UI探索任务并将其作为新的待执行的探索任务放入所述任务队列中;
当所述任务队列中不存在待执行的探索任务且执行探索任务的测试设备均已完成各自的探索任务时,所述控制设备拼接记录的各activity的UI跳转图。
2.根据权利要求1所述的一种并行化安卓应用UI自动探索方法,其特征在于,所述探索任务包括所述待测应用的启动activity的初始UI探索任务;
在所述控制设备从任务队列中取出待执行的探索任务之前,所述方法还包括:所述控制设备分析所述待测应用的安装包,确定所述待测应用的启动activity,生成所述初始UI探索任务并将其作为待执行的探索任务放入所述任务队列中。
3.根据权利要求1所述的一种并行化安卓应用UI自动探索方法,其特征在于,所述方法还包括:
针对每个activity,所述控制设备记录从所述待测应用启动到该activity被触发的过程中的所有输入事件的序列,得到该activity的重现序列。
4.根据权利要求1所述的一种并行化安卓应用UI自动探索方法,其特征在于,在待探索activity内持续根据所述待测应用当前的UI执行输入事件直至达到预设条件,包括:执行预设数量的输入条件;
若当前执行的预设数量的输入条件触发新的UI,则继续执行预设数量的输入条件;
若当前执行的预设数量的输入条件未触发新的UI,则停止执行输入事件;
其中,若当前执行的输入条件触发新的activity,则执行BACK事件,以跳转回待探索activity。
5.根据权利要求1所述的一种并行化安卓应用UI自动探索方法,其特征在于,所述方法还包括:
所述控制设备记录各activity触发的先后顺序;
将所述待执行的探索任务分配给所述空闲测试设备,包括:针对一个以上待执行的探索任务,根据与所述一个以上待执行的探索任务一一对应的一个以上activity触发的先后顺序,优先将与先触发的activity对应的待执行的探索任务分配给所述空闲测试设备。
6.一种并行化安卓应用UI自动探索方法,其特征在于,包括互相通信连接的控制设备和一个以上测试设备;其中,所述一个以上测试设备中均安装有待测应用所述控制设备从任务队列中取出待执行的探索任务,其中,该探索任务为所述待测应用的待探测activity的UI探索任务;
所述控制设备从所述一个以上测试设备中确定当前未执行探索任务的空闲测试设备,将所述待执行的探索任务分配给所述空闲测试设备;
所述空闲测试设备接收到所述待执行的探索任务后,进入待探索activity,在待探索activity内持续根据所述待测应用当前的UI执行输入事件直至达到预设条件,以完成待探索activity的UI探索任务;
所述控制设备记录所述空闲测试设备在完成待探索activity的UI探索任务的过程中的UI跳转图,并在该过程中触发新的activity后生成所述新的activity的UI探索任务并将其作为新的待执行的探索任务放入所述任务队列中;
当所述任务队列中不存在待执行的探索任务且执行探索任务的测试设备均已完成各自的探索任务时,所述控制设备拼接记录的各activity的UI跳转图。
说明书 :
一种并行化安卓应用UI自动探索方法
技术领域
背景技术
发、完善应用。
行到无法发现新的UI时,应用需要回溯以回到之前的UI继续探索未探索新的UI,而应用的
回溯往往需要重新启动应用,重新执行之前执行的输入事件,这个过程十分繁琐,导致UI遍
历效率低下。
发明内容
所述方法包括:
件,以完成所述待探索activity的UI探索任务;
任务并将其作为新的待执行的探索任务放入所述任务队列中;
用,
件,以完成所述待探索activity的UI探索任务;
任务并将其作为新的待执行的探索任务放入所述任务队列中;
空闲测试设备;空闲测试设备接收到该探索任务后,进入待探索activity,在待探索
activity内持续执行输入事件直至达到预设条件;控制设备记录完成待探索activity的UI
探索任务的过程中的UI跳转图,并在该过程中触发新的activity后生成新的activity的UI
探索任务并将其放入所述任务队列中;当任务队列中无待执行的探索任务且各测试设备均
已完成各自的探索任务时,控制设备拼接记录的各activity的UI跳转图。如此,极大提高了
UI遍历的效率。
附图说明
范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这
些附图获得其他相关的附图。
具体实施方式
本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施
例的组件可以以各种不同的配置来布置和设计。
技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范
围。
采用下文将要描述的应用UI自动探索方法,将待测应用输入所述控制设备后,可以得到待
测应用的UI遍历图作为输出。
IOS应用等等)。可选地,所述控制设备和所述一个以上测试设备之间通信连接的方式可以
如图1所示:所述控制设备可以是中心主机,每个测试设备与通信连接于该中心主机的从主
机连接,连接的方式可以是USB连接。
述控制设备分析所述待测应用的安装包,确定所述待测应用的启动activity,生成并储存
所述初始UI探索任务。在后续的步骤中,被分配到所述初始UI探索任务的测试设备启动所
述待测应用,即进入所述待测应用的启动activity。
闲状态;当测试设备当前在执行被分配到的探索任务时,该测试设备的工作状态为忙碌状
态。
到预设条件,以完成所述待探索activity的UI探索任务。
设备根据所述待测应用当前的UI随机生成的。执行的任一输入事件可能不会触发新的UI,
也可能触发新的UI。进一步地,所触发的新的UI可能属于所述待探索activity,也可能属于
新的activity(即,触发了新的activity)。当触发新的activity后,所述空闲测试设备继续
执行输入条件(例如,Android系统的BACK事件)以跳转回所述待探索的activity,进而继续
探索所述待探索activity的UI。
在测试设备上显示的Activity,而上一个Activity(即,所述待探索activity)则进入睡眠
状态。当输入BACK事件后,测试设备显示的Activity(即,所述新的activity)将被退出,从
回退栈栈顶出栈,出栈后将被销毁,而上一个Activity(即,所述待探索activity)又重新成
为栈顶的Activity,成为显示在测试设备上的Activity。
Activity,只需要输入Android系统内的BACK事件,就可以退出当前Activity。
输入条件,若当前执行的预设数量的输入条件触发新的UI,则继续执行预设数量的输入条
件,若当前执行的预设数量的输入条件未触发新的UI(即,达到所述预设条件),则停止执行
输入事件。
列。如此,测试设备通过执行所述控制设备记录的所述待探索activity的重现序列,即可进
入所述待探索activity。
UI探索任务并将其作为新的待执行的探索任务放入所述任务队列中。
个待执行的探索任务并将其放入所述任务队列中。在开始测试时,各测试设备均处于空闲
状态,所述控制设备可以将A的UI探索任务从所述任务队列中取出并分配给任一测试设备
执行。进一步地,如图4所示,假设在A的UI探索任务的执行过程中触发了新的activity B和
C,则所述控制设备生成B的UI探索任务和C的UI探索任务并将其放入所述任务队列中。若此
时所述控制设备检测到两台测试设备处于空闲状态,则可以将B的UI探索任务和C的UI探索
任务分别从所述任务队列中取出并分配给这两台测试设备执行。更进一步地,如图4所示,
若B被分配到空闲的测试设备被执行的过程中又触发了新的 activity D和E,则所述控制
设备生成D的UI探索任务和E的UI探索任务放入所述任务序列中。若此时所述控制设备检测
到两台测试设备(例如,A和C)处于空闲状态,则可以将D的UI探索任务和E的UI探索任务分
别从所述任务队列中取出并分配给这两台测试设备执行。
探索。
触发的先后顺序,优先将与先触发的activity对应的待执行的探索任务分配给所述空闲测
试设备。
接记录的各activity的UI跳转图,实现对所述待测应用的UI遍历。
盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。