CN111459802B - 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 - Google Patents
一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 Download PDFInfo
- Publication number
- CN111459802B CN111459802B CN202010159110.8A CN202010159110A CN111459802B CN 111459802 B CN111459802 B CN 111459802B CN 202010159110 A CN202010159110 A CN 202010159110A CN 111459802 B CN111459802 B CN 111459802B
- Authority
- CN
- China
- Prior art keywords
- page
- component model
- webview
- tag
- gui component
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- 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/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书一个或多个实施例提供一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备,包括:基于动静态结合分析的方式进行WebView页面识别,获取WebView页面,动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;对WebView页面进行组件化拆分,获得HTML页面;构建基于HTML页面的标签的GUI组件模型,标签包括:标签特征和标签事件;触发标签事件并收集HTML页面和GUI组件模型的变化反馈,根据变化反馈调整GUI组件模型,获得优化GUI组件模型;采用DFS遍历策略和贪心遍历策略相结合的探索方式对优化GUI组件模型进行遍历,触发标签事件以进行自动化测试。本发明解决混合应用中WebView页面的自动化测试。
Description
技术领域
本说明书一个或多个实施例涉及软件安全技术领域,尤其涉及一种基于 GUI的Android应用程序WebView页面的测试方法、装置及设备。
背景技术
现有技术中混合应用开发是由Native通过JSBridge等方法提供统一的 API,然后用HTML5和JavaScript来编写实际逻辑,调用API,在这种模式下,Android和iOS的API具有一致性,在Android中最终的页面也是在 WebView组件中显示,针对原生应用的GUI测试手段是基于原生组件构造组件模型,进行组件模型自动化遍历,近年来,在程序中使用WebView的混合应用程序(Hybrid App)数量快速增长,原有的测试手段对WebView 组件的相关测试技术并不是很成熟,导致Hybrid APP的自动化测试只能覆盖原生应用部分,这给程序的自动化测试造成极大的影响。混合应用程序相较于原有应用更为复杂,用户在使用过程中需要与应用进行交互,这涉及到不同的输入模式是事件触发,为确保使用过程中的稳定性,减少应用崩溃和故障的出现,测试应用程序GUI(Graphical User Interfaces)测试应是相关自动化测试重点。WebView组件本身是GUI测试模型中的最小细粒度划分,这也就意味着原有GUI测试手段并不能对WebView中页面内容进行自动化测试。现有技术只能自动化测试原生应用部分,无法自动化测试WebView 组件,测试环境不安全且不稳定。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种基于GUI 的Android应用程序WebView页面的测试方法、装置及设备,以解决现有技术无法自动化测试WebView组件,测试环境不安全且不稳定的问题。
基于上述目的,本说明书一个或多个实施例提供了一种基于GUI的 Android应用程序WebView页面的测试方法,包括:
基于动静态结合分析的方式进行WebView页面识别,获取WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;
对所述WebView页面进行组件化拆分,获得HTML页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件;
触发所述标签事件并收集所述HTML页面和GUI组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型;
采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化GUI 组件模型进行遍历,触发所述标签事件以进行自动化测试。
可选的,所述获取WebView页面,包括:
爬取使用WebView组件的应用;
基于所述使用WebView组件的应用获得所述WebView页面。
可选的,所述静态二进制文件分析方式,包括:
所述WebView页面包括:APK文件,对所述APK文件进行解析,获得解析文件;
所述解析文件包括:dex文件,对所述dex文件进行静态分析,获取 Activity代码结构;
识别所述Activity代码结构中的WebView控件相关代码,完成静态的所述WebView页面识别。
可选的,所述解析文件,包括:assets目录文件,被配置为存放打包到所述APK文件中的静态文件;
lib目录文件,被配置为应用程序依赖的native库;
res目录文件,被配置为存放所述应用程序的资源;
META-INF目录文件,被配置为存放所述应用程序的签名和证书;
AndroidManifest.xml文件,被配置为所述应用程序的配置文件;
classes.dex文件,被配置为dex可执行文件;
resources.arsc文件,被配置为资源配置文件。
可选的,所述动态标记分析方式,包括:
检测新的Activity组件;
使用UIAutomator工具对所述Activity组件进行分析;
获取与所述Activity组件相关的WebView页面的信息,并标记所述 Activity组件,完成动态的所述WebView页面识别。
可选的,所述HTML页面包括不同的标签,所述标签之间通过层次树状结构链接,每个所述标签包括:所述标签特征和标签事件,基于所述标签构建所述GUI组件模型。
可选的在获得所述优化GUI组件模型的过程中,所述标签被所述GUI 组件模型分组,基于所述变化反馈动态调整所述标签的分组,最终得到优化标签分组,避免产生冗余的所述标签事件。
可选的,所述优化标签分组包括:权值,所述权值越大,所述标签事件被触发的概率越大。
基于同一发明构思,本说明书一个或多个实施例还提出了一种基于GUI 的Android应用程序WebView页面的测试装置,包括:
获取模块:基于动静态结合分析的方式进行WebView页面识别,获取 WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;
构建模块,被配置为对所述WebView页面进行组件化拆分,获得HTML 页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件;
优化模块,被配置为触发所述标签事件并收集所述HTML页面和GUI 组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型;
测试模块,被配置为采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化GUI组件模型进行遍历,触发所述标签事件以进行自动化测试。
基于同一发明构思,本说明书一个或多个实施例还提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上任意一中所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的一种基于GUI 的Android应用程序WebView页面的测试方法、装置及设备,通过文字识别的方式,对常用的文字(例如登录、注册)进行相似度分析,并结合后台捕获的页面数据包,分析HTML页面的节点信息,将WebView页面进行组件化拆分,从而构造基于WebView页面特征的GUI测试模型,每个屏幕都是由各种各样的组件构成的,每个组件都有一系列特征属性和可触发的标签事件;组件之间都是通过层次树状结构连接起来,本说明书一个或多个实施例同时关注组件的布局结构和属性特征,对相似的组件进行分组处理,大大优化GUI组件模型。本说明书一个或多个实施例基于标签建立的GUI模型,在标签事件触发之后收集HTML和GUI状态的变化反馈,作为测试中的要点来调整模型,动态的调整标签分组的结构和优先级。根据不断的动态优化分组模型,指导后续时间的选择,避免冗余的事件,优化测试过程,探索到更多新的GUI状态以及充分测试探索到的后续状态,实现了自动化测试 WebView组件,提供了安全稳定的测试环境。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例中测试方法的流程示意图;
图2为本说明书一个或多个实施例中实施平台示意图;
图3为本说明书一个或多个实施例中测试装置示意图;
图4为本说明书一个或多个实施例中电子设备示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
本说明书一个或多个实施例提供了一种基于GUI的Android应用程序 WebView页面的测试方法、装置及设备。
参考图1,本说明书一个或多个实施例提供的方法,包括以下步骤:
S101基于动静态结合分析的方式进行WebView页面识别,获取WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式。
本实施例中,构建基于反编译的应用数据集具体包括:
爬取使用WebView组件的应用;
基于所述使用WebView组件的应用获得所述WebView页面。
在爬取使用WebView组件的应用时,本实施例选择带有包含WebView 页面的Android混合应用程序,本实施例需要大量的使用WebView组件的应用,从而获得需要进行自动化测试的WebView页面,通过使用WebView 组件的应用获得WebView页面。
本实施例中,通过动态标记分析方式和静态二进制文件分析方式并行的方式,对WebView页面进行识别,其中静态二进制文件分析方式具体包括:
所述WebView页面包括:APK文件,对所述APK文件进行解析,获得解析文件;
所述解析文件包括:dex文件,对所述dex文件进行静态分析,获取 Activity代码结构;
识别所述Activity代码结构中的WebView控件相关代码,完成静态的所述WebView页面识别。
Activity代码结构是静态二进制文件分析方式对获取到的应用进行逆向操作得到的代码,用逆向后得出的代码与WebView类中的常用函数字符进行匹配,如果匹配到对应的WebView的代码,则筛选出包含WebView页面的应用。其中WebView页面中的APK文件被解析后,得到的解析文件包括: assets目录文件,被配置为存放打包到所述APK文件中的静态文件;lib目录文件,被配置为应用程序依赖的native库;res目录文件,被配置为存放所述应用程序的资源;META-INF目录文件,被配置为存放所述应用程序的签名和证书;AndroidManifest.xml文件,被配置为所述应用程序的配置文件; classes.dex文件,被配置为dex可执行文件;resources.arsc文件,被配置为资源配置文件。由于静态二进制文件分析的方式需要分析二进制文件,在解析文件中classes.dex文件为二进制文件,所以通过解析APK文件后,静态二进制文件分析方式根据dex文件中的字节码信息来筛选使用了WebView 组件的应用。
本实施例中,动态标记分析方式具体包括:
检测新的Activity组件;
使用UIAutomator工具对所述Activity组件进行分析;
获取与所述Activity组件相关的WebView页面的信息,并标记所述 Activity组件,完成动态的所述WebView页面识别。
本实施例中,Activity的页面信息可以由UIAutomator工具获取,该工具输出的是一个XML文件,文件中的节点代表着一个Widget,所述Widget 对应于标签,而鉴于XML文件和HTML的结构相似性,发明人采用相同的方式,将WebView空间中的HTML页面看做一个Activity,所述Activity 对应于一个页面,页面中由不同的标签组成,由于HTML页面是由各种各样的标签构成,所以本实施例将HTML页面的标签看做widget,因此使用UIAutomator工具对Activity组件进行分析得到了与Activity组件相关的 WebView页面的信息,WebView页面的信息包括不同的组件,例如按钮组件和图标组件,如果被分析的应用包含WebView页面的信息,则该应用被筛选出来。动态标记分析方式时基于GUI测试的测试方式,每当检测到一个新的Activity的出现,则使用动态标记分析方式进行WebView页面的识别。
S102对所述WebView页面进行组件化拆分,获得HTML页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件。
本实施例中,HTML页面包括不同的标签,所述标签之间通过层次树状结构链接,每个所述标签包括:所述标签特征,每个页面都是由各种各样的标签构成,每个标签都有一系列标签特征和可触发的标签事件,标签和标签之间都是通过层次树状结构连接起来,因此在对WebView页面的GUI进行建模需要关注标签的布局结构和属性特征,在动态运行应用时,当判断出当前页面包含WebView组件后,需要对WebView组件中的HTML页面进行控件识别,并输入控件的触发条件以触发标签事件。作为一个可选的实施例,例如当页面中含有“用户名”、“密码”和“登录”等字符串时,“用户名”、“密码”和“登录”对应于三个不同的标签,以“登录”标签为例,“登录”标签是一个按钮标签,按钮标签对应的代码为:<buttontype="button">Click Me!</button>,标签特征对应为button,如果是“用户名”对应的需要输入用户名信息的输入框标签,对应的输入框标签的标签特征为 input,简单来说一个标签的标签特征对应于这个标签的功能,而标签事件在这个例子中对应于点击“登录”之后,网页向服务区发送登录信息的过程。
S103触发所述标签事件并收集所述HTML页面和GUI组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型。
本实施例中,GUI组件模型在触发标签事件后收集HTML页面和GUI 组件模型的变化反馈,并以变化反馈作为自动化测试中的要点对GUI组件模型本身做调整,在获得所述优化GUI组件模型的过程中,所述标签被所述GUI组件模型分组,基于所述变化反馈动态调整所述标签的分组,最终得到优化标签分组,避免产生冗余的所述标签事件,提高自动化测试的覆盖率。对标签的分组是由于在开发者开发过程中,很多不同Activity中的组件实现了近似的功能,对这些相似的组件进行分组处理,可以大大优化GUI 组件模型。
S104采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化 GUI组件模型进行遍历,触发所述标签事件以进行自动化测试。
本实施例中,优化标签分组包括:权值,采用DFS遍历策略和贪心遍历策略相结合的探索方式,根据状态探索的充分程度来调整标签分组的权值,权值越大的标签分组,它能发现的GUI状态被测试的充分程度就更低,该标签分组中的标签对应的可触发的标签事件被触发的概率就越大,就能够以更大的概率重新进入优化GUI组件模型,进行更充分的测试。参考图2,作为一个可选的实施例,本发明的测试方法可以加入到软件安全监测平台中,对入库的应用进行自动化测试,即对入库的应用的APK文件进行解析,对二进制文件进行静态二进制文件分析,并同时对入库的应用中的WebView 页面进行动态标记分析,通过将WebView页面中的HTML页面组件化,基于HTML页面中的标签特征建立GUI组件模型,并通过触发标签对应的标签事件,使得GUI组件模型收集HTML页面和GUI组件模型的变化反馈,对GUI组件模型本身做自我调整,从而得到优化GUI组件模型,最终采用 DFS遍历策略和贪心遍历策略相结合的探索方式对优化GUI组件模型进行遍历,通过触发优化GUI组件模型中的标签事件,对入库的应用进行自动化测试,在软件安全检测平台可以通过本发明的自动化测试得到入库应用对应的测试报告,最终将测试报告输入至结果数据库做记录。
本说明书一个或多个实施例提供的一种基于GUI的Android应用程序 WebView页面的测试方法、装置及设备,通过文字识别的方式,对常用的文字(例如登录、注册)进行相似度分析,并结合后台捕获的页面数据包,分析HTML页面的节点信息,将WebView页面进行组件化拆分,从而构造基于WebView页面特征的GUI测试模型,每个屏幕都是由各种各样的组件构成的,每个组件都有一系列特征属性和可触发的标签事件;组件之间都是通过层次树状结构连接起来,本说明书一个或多个实施例同时关注组件的布局结构和属性特征,对相似的组件进行分组处理,大大优化GUI组件模型。本说明书一个或多个实施例基于标签建立的GUI模型,在标签事件触发之后收集HTML和GUI状态的变化反馈,作为测试中的要点来调整模型,动态的调整标签分组的结构和优先级。根据不断的动态优化分组模型,指导后续时间的选择,避免冗余的事件,优化测试过程,探索到更多新的GUI状态以及充分测试探索到的后续状态,实现了自动化测试WebView组件,提供了安全稳定的测试环境。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,本说明书一个或多个实施例还提供了一种基于GUI 的Android应用程序WebView页面的测试装置,包括:获取模块、构建模块、优化模块和测试模块。
参考图3,本装置中包括:
获取模块:基于动静态结合分析的方式进行WebView页面识别,获取 WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;
构建模块,被配置为对所述WebView页面进行组件化拆分,获得HTML 页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件;
优化模块,被配置为触发所述标签事件并收集所述HTML页面和GUI 组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型;
测试模块,被配置为采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化GUI组件模型进行遍历,触发所述标签事件以进行自动化测试。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,本说明书一个或多个实施例还提供了一种电子设备,该电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一实施例所述的方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器401、存储器402、输入/输出接口403、通信接口404和总线405。其中处理器401、存储器402、输入/输出接口403和通信接口404通过总线405实现彼此之间在设备内部的通信连接。
处理器401可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器402可以采用ROM(Read Only Memory,只读存储器)、RAM (Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器402可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器402中,并由处理器401来调用执行。
输入/输出接口403用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口404用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等) 实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线405包括一通路,在设备的各个组件(例如处理器401、存储器402、输入/输出接口403和通信接口404)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器401、存储器402、输入/ 输出接口403、通信接口404以及总线405,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种基于GUI的Android应用程序WebView页面的测试方法,其特征在于,包括:
基于动静态结合分析的方式进行WebView页面识别,获取WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;
对所述WebView页面进行组件化拆分,获得HTML页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件;
触发所述标签事件并收集所述HTML页面和GUI组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型;所述HTML页面包括不同的标签,所述标签之间通过层次树状结构链接,每个所述标签包括:所述标签特征和标签事件,基于所述标签构建所述GUI组件模型;GUI组件模型在触发标签事件后收集HTML页面和GUI组件模型的变化反馈,并以变化反馈作为自动化测试中的要点对GUI组件模型本身做调整,在获得所述优化GUI组件模型的过程中,所述标签被所述GUI组件模型分组,基于所述变化反馈动态调整所述标签的分组,最终得到优化标签分组;
采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化GUI组件模型进行遍历,触发所述标签事件以进行自动化测试。
2.根据权利要求1所述的方法,其特征在于,所述获取WebView页面,包括:
爬取使用WebView组件的应用;
基于所述使用WebView组件的应用获得所述WebView页面。
3.根据权利要求1所述的方法,其特征在于,所述静态二进制文件分析方式,包括:
所述WebView页面包括:APK文件,对所述APK文件进行解析,获得解析文件;
所述解析文件包括:dex文件,对所述dex文件进行静态分析,获取Activity代码结构;
识别所述Activity代码结构中的WebView控件相关代码,完成静态的所述WebView页面识别。
4.根据权利要求3所述的方法,其特征在于,所述解析文件,包括:
assets目录文件,被配置为存放打包到所述APK文件中的静态文件;
lib目录文件,被配置为应用程序依赖的native库;
res目录文件,被配置为存放所述应用程序的资源;
META-INF目录文件,被配置为存放所述应用程序的签名和证书;
AndroidManifest.xml文件,被配置为所述应用程序的配置文件;
classes.dex文件,被配置为dex可执行文件;
resources.arsc文件,被配置为资源配置文件。
5.根据权利要求1所述的方法,其特征在于,所述动态标记分析方式,包括:
检测新的Activity组件;
使用UIAutomator工具对所述Activity组件进行分析;
获取与所述Activity组件相关的WebView页面的信息,并标记所述Activity组件,完成动态的所述WebView页面识别。
6.根据权利要求1所述的方法,其特征在于,所述优化标签分组包括:权值,所述权值越大,所述标签事件被触发的概率越大。
7.一种基于GUI的Android应用程序WebView页面的测试装置,其特征在于,包括:
获取模块:基于动静态结合分析的方式进行WebView页面识别,获取WebView页面,所述动静态结合分析的方式包括:静态二进制文件分析方式和动态标记分析方式;
构建模块,被配置为对所述WebView页面进行组件化拆分,获得HTML页面;构建基于所述HTML页面的标签的GUI组件模型,所述标签包括:标签特征和标签事件;
优化模块,被配置为触发所述标签事件并收集所述HTML页面和GUI组件模型的变化反馈,根据所述变化反馈调整所述GUI组件模型,获得优化GUI组件模型;所述HTML页面包括不同的标签,所述标签之间通过层次树状结构链接,每个所述标签包括:所述标签特征和标签事件,基于所述标签构建所述GUI组件模型;GUI组件模型在触发标签事件后收集HTML页面和GUI组件模型的变化反馈,并以变化反馈作为自动化测试中的要点对GUI组件模型本身做调整,在获得所述优化GUI组件模型的过程中,所述标签被所述GUI组件模型分组,基于所述变化反馈动态调整所述标签的分组,最终得到优化标签分组;
测试模块,被配置为采用DFS遍历策略和贪心遍历策略相结合的探索方式对所述优化GUI组件模型进行遍历,触发所述标签事件以进行自动化测试。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010159110.8A CN111459802B (zh) | 2020-03-09 | 2020-03-09 | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010159110.8A CN111459802B (zh) | 2020-03-09 | 2020-03-09 | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459802A CN111459802A (zh) | 2020-07-28 |
CN111459802B true CN111459802B (zh) | 2022-04-15 |
Family
ID=71678397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010159110.8A Active CN111459802B (zh) | 2020-03-09 | 2020-03-09 | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459802B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360406B (zh) * | 2021-07-01 | 2022-08-02 | 上海哔哩哔哩科技有限公司 | 应用程序的JSBridge方法的测试方法及装置 |
CN117076290B (zh) * | 2023-07-07 | 2024-03-19 | 天津大学 | 一种基于深度页面探索的细粒度普适性问题检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323418B2 (en) * | 2011-04-29 | 2016-04-26 | The United States Of America As Represented By Secretary Of The Navy | Method for analyzing GUI design affordances |
CN110287088A (zh) * | 2019-01-14 | 2019-09-27 | 南京大学 | 一种基于动态ui模型的自动化测试方法 |
-
2020
- 2020-03-09 CN CN202010159110.8A patent/CN111459802B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323418B2 (en) * | 2011-04-29 | 2016-04-26 | The United States Of America As Represented By Secretary Of The Navy | Method for analyzing GUI design affordances |
CN110287088A (zh) * | 2019-01-14 | 2019-09-27 | 南京大学 | 一种基于动态ui模型的自动化测试方法 |
Non-Patent Citations (2)
Title |
---|
基于GUI的Android应用自动化定向测试方法研究;叶延玲;《中国优秀硕士学位论文全文数据库信息科技辑》;20180415;正文第7-52页 * |
规则驱动的Android应用DFS测试技术;葛红军;《CNKI》;20181231;正文第1-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459802A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868231B2 (en) | System and method for evaluating code by a hybrid of local and cloud-based computers | |
CN110688307B (zh) | JavaScript代码检测方法、装置、设备和存储介质 | |
US20190303269A1 (en) | Methods and systems for testing visual aspects of a web page | |
US9037965B2 (en) | Browser and operating system compatibility | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
Hallé et al. | Runtime Verification of Web Service Interface Contracts. | |
CN106559438A (zh) | 一种基于目标网络平台的程序上传方法和装置 | |
US11294799B2 (en) | Plugin for multi-module code coverage in web applications | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
CN105786455B (zh) | 一种数据处理方法、装置及终端 | |
CN111459802B (zh) | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 | |
CN113535587B (zh) | 目标应用检测方法、装置及计算机设备 | |
CN114297700B (zh) | 动静态结合的移动应用隐私协议提取方法及相关设备 | |
CN109460546A (zh) | 表单生成方法、装置及电子设备 | |
Hallé et al. | Declarative layout constraints for testing web applications | |
KR20130097252A (ko) | 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치 | |
CN111694550A (zh) | 一种页面显示控制方法、装置及系统 | |
US20160292067A1 (en) | System and method for keyword based testing of custom components | |
CN114020589B (zh) | 埋点处理方法、装置、计算机设备和存储介质 | |
US11288442B2 (en) | Managing extended schemas | |
CN115618363B (zh) | 漏洞路径的挖掘方法及相关设备 | |
US8924924B2 (en) | Representing the structure of a data format using a class-based representation | |
CN113986768A (zh) | 应用程序稳定性测试方法、装置、设备及介质 | |
CN111414525B (zh) | 小程序的数据获取方法、装置、计算机设备和存储介质 | |
KR101684454B1 (ko) | 하이브리드 애플리케이션 및 이의 이벤트 처리 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |