CN113778540A - 安卓应用自动化执行方法和装置 - Google Patents
安卓应用自动化执行方法和装置 Download PDFInfo
- Publication number
- CN113778540A CN113778540A CN202010507035.XA CN202010507035A CN113778540A CN 113778540 A CN113778540 A CN 113778540A CN 202010507035 A CN202010507035 A CN 202010507035A CN 113778540 A CN113778540 A CN 113778540A
- Authority
- CN
- China
- Prior art keywords
- component
- components
- android application
- controls
- manifest file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000009471 action Effects 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims abstract description 7
- 230000000694 effects Effects 0.000 claims description 15
- 230000006399 behavior Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 abstract description 2
- 239000000284 extract Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 241000282693 Cercopithecidae Species 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供一种安卓应用自动化执行方法和装置。安卓应用自动化执行装置提取安卓应用程序包中的清单文件,并对清单文件进行反编译;在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,组件包括活动组件、服务组件、广播接收器组件和内容提供器组件;安装安卓应用程序包,并根据提取出的组件标签,依次执行活动组件、服务组件、广播接收器组件和内容提供器组件;在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。本公开能够在测试过程中实现安卓应用的自动化执行。
Description
技术领域
本公开涉及计算机领域,特别涉及一种安卓应用自动化执行方法和装置。
背景技术
随着移动互联网的迅猛发展,智能手机的使用量逐年增加。安卓系统作为目前世界上最流行的手机操作系统之一,运行于其上的应用数量正与日俱增。伴随而来的是各方面需求也越来越多。
在相关技术中,在对开发的应用App进行性能测试、安全性检测、抓包分析等过程中,目前主要通过人工操作以执行安卓应用。
发明内容
发明人注意到,由于在对开发的应用App进行性能测试、安全性检测、抓包分析等过程中需要通过人工操作来完成,因此会增加人力成本,无法提升处理效率。
据此,本公开提供一种安卓应用自动化执行方案,有效提升处理效率。
根据本公开实施例的第一方面,提供一种安卓应用自动化执行方法,包括:提取安卓应用程序包中的清单文件,并对清单文件进行反编译;在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,所述组件包括活动组件、服务组件、广播接收器组件和内容提供器组件;安装所述安卓应用程序包,并根据提取出的组件标签,依次执行所述活动组件、服务组件、广播接收器组件和内容提供器组件;在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。
在一些实施例中,执行活动组件包括:获取当前正在执行的活动组件中的所有控件;依次触发所述控件;根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
在一些实施例中,所述行为包括滑动、点击、按压、截屏或输入中的至少一项。
在一些实施例中,总执行次数与所述页面中的控件数量成正比。
根据本公开实施例的第二方面,提供一种安卓应用自动化执行装置,包括:清单文件处理模块,被配置为提取安卓应用程序包中的清单文件,并对清单文件进行反编译;提取模块,被配置为在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,所述组件包括活动组件、服务组件、广播接收器组件和内容提供器组件;第一组件执行模块,被配置为安装所述安卓应用程序包,并根据提取出的组件标签,依次执行所述活动组件、服务组件、广播接收器组件和内容提供器组件;第二组件执行模块,被配置为在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。
在一些实施例中,第一组件执行模块在执行活动组件的过程中,获取当前正在执行的活动组件中的所有控件,依次触发所述控件,根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
在一些实施例中,所述行为包括滑动、点击、按压、截屏或输入中的至少一项。
在一些实施例中,总执行次数与所述页面中的控件数量成正比。
根据本公开实施例的第三方面,提供一种安卓应用自动化执行装置,包括:存储器,被配置为存储指令;处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如上述任一实施例所述的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上述任一实施例涉及的方法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是根据本公开一个实施例的安卓应用自动化执行方法的流程示意图;
图2是根据本公开一个实施例的安卓应用自动化执行装置的结构示意图;
图3是根据本公开另一个实施例的安卓应用自动化执行装置的结构示意图。
应当明白,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。此外,相同或类似的参考标号表示相同或类似的构件。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。对示例性实施例的描述仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本公开可以以许多不同的形式实现,不限于这里所述的实施例。提供这些实施例是为了使本公开透彻且完整,并且向本领域技术人员充分表达本公开的范围。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、材料的组分和数值应被解释为仅仅是示例性的,而不是作为限制。
本公开中使用的“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。
本公开使用的所有术语(包括技术术语或者科学术语)与本公开所属领域的普通技术人员理解的含义相同,除非另外特别定义。还应当理解,在诸如通用字典中定义的术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1是根据本公开一个实施例的安卓应用自动化执行方法的流程示意图。在一些实施例中,下面的安卓应用自动化执行方法步骤由安卓应用自动化执行装置执行。
在步骤101,提取APK(Android application package,安卓应用程序包)中的清单文件(AndroidManifest.xml),并对清单文件进行反编译。
在步骤102,在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,组件包括活动(Activity)组件、服务(Service)组件、广播接收器(Broadcast Receiver)组件和内容提供器(Content Provider)组件。
在步骤103,安装安卓应用程序包,并根据提取出的组件标签,依次执行活动组件、服务组件、广播接收器组件和内容提供器组件。
例如,用“adb shell am start–n APK包名/组件名”执行活动组件,用“adb shellam startservice–n APK包名/组件名”执行服务组件,用“adb shell am broadcast–n APK包名/组件名”执行广播接收器组件,用“adb shell content query+参数”执行内容提供器组件。
在一些实施例中,执行活动组件包括:获取当前正在执行的活动组件中的所有控件(例如文本框Text、按钮Button控件等)并依次触发,再根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
在一些实施例中,上述行为包括滑动、点击、按压、截屏或输入中的至少一项。
在一些实施例中,总执行次数与页面中的控件数量成正比。例如,总执行次数是页面中的控件数量的100倍。
例如,在每次执行到Activity组件的过程中,通过UIAutomator先获取正在执行的Activity组件中的所有控件并依次使用Appium触发,再根据页面中的控件情况,通过MonkeyRunner脚本在当前的Activity组件中调整触发各种行为的比例和总的执行次数(若控件数量为3,则该Activity组件里执行MonkeyRunner脚本300次。若文本框有2个,按钮有4个,则输入和点击操作的比例为1:2)。
在步骤104,在所有组件中查询具有动作(action)标签内容、种类(category)标签内容和数据(data)标签内容的组件,并依次执行查询出的组件,以执行动作标签内容、种类标签内容和数据标签内容。
由于在动作标签、种类标签和数据标签中会包括不同的参数信息,因此通过执行动作标签内容、种类标签内容和数据标签内容,能够对安卓应用中所包括的各项内容进行自动化执行。
在执行完上述步骤后,卸载APK,从而完成整个自动化执行流程。
图2是根据本公开一个实施例的安卓应用自动化执行装置的结构示意图。如图2所示,安卓应用自动化执行装置包括清单文件处理模块21、提取模块22、第一组件执行模块23和第二组件执行模块24。
清单文件处理模块21被配置为提取APK中的清单文件,并对清单文件进行反编译。
提取模块22被配置为在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,组件包括活动组件、服务组件、广播接收器组件和内容提供器组件。
第一组件执行模块23被配置为安装安卓应用程序包,并根据提取出的组件标签,依次执行活动组件、服务组件、广播接收器组件和内容提供器组件。
例如,用“adb shell am start–n APK包名/组件名”执行活动组件,用“adb shellam startservice–n APK包名/组件名”执行服务组件,用“adb shell am broadcast–n APK包名/组件名”执行广播接收器组件,用“adb shell content query+参数”执行内容提供器组件。
在一些实施例中,第一组件执行模块23在执行活动组件的过程中,获取当前正在执行的活动组件中的所有控件(例如文本框Text、按钮Button控件等)并依次触发,再根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
在一些实施例中,上述行为包括滑动、点击、按压、截屏或输入中的至少一项。
在一些实施例中,总执行次数与页面中的控件数量成正比。例如,总执行次数是页面中的控件数量的100倍。
例如,在每次执行到Activity组件的过程中,通过UIAutomator先获取正在执行的Activity组件中的所有控件并依次使用Appium触发,再根据页面中的控件情况,通过MonkeyRunner脚本在当前的Activity组件中调整触发各种行为的比例和总的执行次数(若控件数量为3,则该Activity组件里执行MonkeyRunner脚本300次。若文本框有2个,按钮有4个,则输入和点击操作的比例为1:2)。
第二组件执行模块24被配置为在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。
第一组件执行模块23还在第二组件执行模块24执行完上述操作后,卸载APK,从而完成整个自动化执行流程。
图3是根据本公开另一个实施例的安卓应用自动化执行装置的结构示意图。如图3所示,安卓应用自动化执行装置包括存储器31和处理器32。
存储器31用于存储指令。处理器32耦合到存储器31。处理器32被配置为基于存储器存储的指令执行实现如图1中任一实施例涉及的方法。
如图3所示,安卓应用自动化执行装置还包括通信接口33,用于与其它设备进行信息交互。同时,该安卓应用自动化执行装置还包括总线34,处理器32、通信接口33、以及存储器31通过总线34完成相互间的通信。
存储器31可以包含高速RAM(Random Access Memory,随机存取存储器),也可还包括NVM(Non-Volatile Memory,非易失性存储器)。例如至少一个磁盘存储器。存储器31也可以是存储器阵列。存储器31还可能被分块,并且块可按一定的规则组合成虚拟卷。
此外,处理器32可以是一个中央处理器,或者可以是ASIC(Application SpecificIntegrated Circuit,专用集成电路),或者是被配置成实施本公开实施例的一个或多个集成电路。
本公开还提供一种计算机可读存储介质。计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如图1中任一实施例涉及的方法。
在一些实施例中,上述功能模块可以实现为用于执行本公开所描述功能的通用处理器、可编程逻辑控制器(Programmable Logic Controller,简称:PLC)、数字信号处理器(Digital Signal Processor,简称:DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称:ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。
至此,已经详细描述了本公开的实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
Claims (10)
1.一种安卓应用自动化执行方法,包括:
提取安卓应用程序包中的清单文件,并对清单文件进行反编译;
在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,所述组件包括活动组件、服务组件、广播接收器组件和内容提供器组件;
安装所述安卓应用程序包,并根据提取出的组件标签,依次执行所述活动组件、服务组件、广播接收器组件和内容提供器组件;
在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。
2.根据权利要求1所述的方法,其中,执行活动组件包括:
获取当前正在执行的活动组件中的所有控件;
依次触发所述控件;
根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
3.根据权利要求2所述的方法,其中,
所述行为包括滑动、点击、按压、截屏或输入中的至少一项。
4.根据权利要求2所述的方法,其中,
总执行次数与所述页面中的控件数量成正比。
5.一种安卓应用自动化执行装置,包括:
清单文件处理模块,被配置为提取安卓应用程序包中的清单文件,并对清单文件进行反编译;
提取模块,被配置为在经过反编译的清单文件中进行遍历,以提取出所有组件的标签,所述组件包括活动组件、服务组件、广播接收器组件和内容提供器组件;
第一组件执行模块,被配置为安装所述安卓应用程序包,并根据提取出的组件标签,依次执行所述活动组件、服务组件、广播接收器组件和内容提供器组件;
第二组件执行模块,被配置为在所有组件中查询具有动作标签内容、种类标签内容和数据标签内容的组件,并依次执行查询出的组件。
6.根据权利要求5所述的装置,其中,
第一组件执行模块在执行活动组件的过程中,获取当前正在执行的活动组件中的所有控件,依次触发所述控件,根据页面中的控件种类和数量,通过脚本在当前的活动组件中调整触发各种行为的比例和总执行次数。
7.根据权利要求6所述的装置,其中,
所述行为包括滑动、点击、按压、截屏或输入中的至少一项。
8.根据权利要求6所述的装置,其中,
总执行次数与所述页面中的控件数量成正比。
9.一种安卓应用自动化执行装置,包括:
存储器,被配置为存储指令;
处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如权利要求1-4中任一项所述的方法。
10.一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010507035.XA CN113778540A (zh) | 2020-06-05 | 2020-06-05 | 安卓应用自动化执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010507035.XA CN113778540A (zh) | 2020-06-05 | 2020-06-05 | 安卓应用自动化执行方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113778540A true CN113778540A (zh) | 2021-12-10 |
Family
ID=78834233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010507035.XA Pending CN113778540A (zh) | 2020-06-05 | 2020-06-05 | 安卓应用自动化执行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778540A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224869A (zh) * | 2014-06-12 | 2016-01-06 | 腾讯科技(深圳)有限公司 | 组件测试方法和装置 |
KR20160009980A (ko) * | 2014-07-17 | 2016-01-27 | 주식회사 인프라웨어테크놀러지 | 안드로이드 어플리케이션 패키지의 자동 변환 방법 |
CN105868105A (zh) * | 2016-03-24 | 2016-08-17 | 厦门美图移动科技有限公司 | 一种应用遍历测试方法、设备及移动终端 |
CN107133519A (zh) * | 2017-05-15 | 2017-09-05 | 华中科技大学 | 一种安卓应用网络通信中隐私泄漏检测方法及系统 |
CN110888799A (zh) * | 2019-10-14 | 2020-03-17 | 京东数字科技控股有限公司 | 一种软件测试方法及装置 |
CN111124919A (zh) * | 2019-12-24 | 2020-05-08 | 浙江诺诺网络科技有限公司 | 一种用户界面的测试方法、装置、设备及存储介质 |
-
2020
- 2020-06-05 CN CN202010507035.XA patent/CN113778540A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224869A (zh) * | 2014-06-12 | 2016-01-06 | 腾讯科技(深圳)有限公司 | 组件测试方法和装置 |
KR20160009980A (ko) * | 2014-07-17 | 2016-01-27 | 주식회사 인프라웨어테크놀러지 | 안드로이드 어플리케이션 패키지의 자동 변환 방법 |
CN105868105A (zh) * | 2016-03-24 | 2016-08-17 | 厦门美图移动科技有限公司 | 一种应用遍历测试方法、设备及移动终端 |
CN107133519A (zh) * | 2017-05-15 | 2017-09-05 | 华中科技大学 | 一种安卓应用网络通信中隐私泄漏检测方法及系统 |
CN110888799A (zh) * | 2019-10-14 | 2020-03-17 | 京东数字科技控股有限公司 | 一种软件测试方法及装置 |
CN111124919A (zh) * | 2019-12-24 | 2020-05-08 | 浙江诺诺网络科技有限公司 | 一种用户界面的测试方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10699061B2 (en) | Application page quick access | |
CN109189682B (zh) | 一种脚本录制方法和装置 | |
CN108804299B (zh) | 应用程序异常处理方法及装置 | |
US20130117855A1 (en) | Apparatus for automatically inspecting security of applications and method thereof | |
CN107239392B (zh) | 一种测试方法、装置、终端及存储介质 | |
CN104049986A (zh) | 插件加载方法及装置 | |
CN103839005A (zh) | 移动操作系统的恶意软件检测方法和恶意软件检测系统 | |
CN103246578A (zh) | 应用软件进行崩溃处理的方法及进行崩溃处理的浏览器 | |
CN106843901B (zh) | 一种页面渲染和验证的方法和装置 | |
CN112394908A (zh) | 埋点页面自动生成的方法、装置、计算机设备及存储介质 | |
CN111177113A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN103246594A (zh) | 一种基于Linux内核的用户态网卡自动探测方法 | |
CN104899203B (zh) | 一种网页页面的生成方法、装置及终端设备 | |
CN105404574A (zh) | 一种智能卡与移动终端一致性测试方法及装置 | |
CN106341731B (zh) | 一种智能电视的遥控按键响应方法及装置 | |
CN103365672A (zh) | 一种处理应用程序的描述信息的方法和系统 | |
CN109684156B (zh) | 基于混合模式应用的监控方法、装置、终端及存储介质 | |
CN113778540A (zh) | 安卓应用自动化执行方法和装置 | |
CN110727576A (zh) | 一种web页面测试方法、装置、设备及存储介质 | |
CN104834589A (zh) | 一种网页检测方法及装置 | |
CN108037914B (zh) | 一种安卓原生系统结合js开发的方法及装置 | |
CN111046308A (zh) | 一种页面加载方法及装置 | |
CN108133123B (zh) | 一种应用程序的识别方法及系统 | |
CN110262856B (zh) | 一种应用程序数据采集方法、装置、终端及存储介质 | |
CN108563578A (zh) | Sdk兼容性检测方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |