CN113220564A - 页面的自动化测试方法、装置、设备以及存储介质 - Google Patents
页面的自动化测试方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN113220564A CN113220564A CN202110452427.5A CN202110452427A CN113220564A CN 113220564 A CN113220564 A CN 113220564A CN 202110452427 A CN202110452427 A CN 202110452427A CN 113220564 A CN113220564 A CN 113220564A
- Authority
- CN
- China
- Prior art keywords
- page
- control
- controls
- application
- graph model
- 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
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种页面的自动化测试方法、装置、设备以及存储介质,该方法中,在对应用的页面进行测试之前,根据应用的源代码文件获取到包括待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系的图模型,然后采用深度优先方式遍历测试该图模型中每个页面以及每个页面上的每个控件,即实现了自动化测试,也不会出现遗漏页面和控件,能够全面覆盖应用的所有场景和页面,以及控件,得到准确度较高的测试结果。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种页面的自动化测试方法、装置、设备以及存储介质。
背景技术
随着计算机技术以及智能终端设备的普及,各种各样的应用程序也普遍的应用在用户生活的各个领域中,在应用程序的开发过程中,则需要对应用程序进行测试,包括对页面的测试。
目前,在对页面的自动化测试过程中,主要动过两种方式来进行自动化的执行以便更多的覆盖应用程序的页面和场景,包括:随机策略,从当前页面中随机选取一个空间进行交互(例如安卓自带工具monkey,在当前页面的随机位置进行点击,触发页面控件)。固定策略,基于规则的选取页面上的特定控件进行交互(例如安卓图形用户界面(GraphicalUser Interface,简称:GUI)自动化工具Appium,是基于用户对特定的控件进行点击操作,触发页面控件)。
然而,对于使用随机策略来进行自动化测试是不能够全面的来覆盖整个应用程序的所有场景,对于使用固定策略来进行自动化测试,弊端是用户主观设计对特定的控件,进行操作的,而触发控件,也会导致一些场景设计疏漏,覆盖不全面。综上所述,现有的进行页面测试的方案存在覆盖不全面,导致测试准确度较低的问题。
发明内容
本发明实施例提供一种页面的自动化测试方法、装置、设备以及存储介质,用于解决现有的应用程序的页面测试方案存在覆盖不全面,导致测试准确度较低的问题。
第一方面,本发明实施例提供一种页面的自动化测试方法,包括:
获取待测试应用对应的图模型,所述图模型中包括所述待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系;
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
在一种具体实现方式中,所述采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告,包括:
进入所述图模型中所述待测试应用的初始页面,采用深度优先方式,选择所述初始页面上任一个未被执行的控件执行进入下级页面;
在所述下级页面中选择任一未被执行的控件执行并进入所述下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到所述测试报告。
在一种具体实现方式中,所述进入所述图模型中所述待测试应用的初始页面之前,所述方法还包括:
若检测到所述初始页面依赖于系统事件触发,则触发所述初始页面对应的系统事件。
在一种具体实现方式中,所述方法还包括:
在所述图模型的每一个页面中选择未被执行的控件后,检测所述控件是否存在控件间依赖关系;
若所述控件存在控件间依赖关系,则对所述控件依赖的依赖控件进行状态设置,再执行所述控件。
在一种具体实现方式中,所述获取待测试应用对应的图模型之前,所述方法还包括:
启动所述待测试应用,并根据用户的操作设置动态测试的时长阈值;
相应的,所述采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告,包括:
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到所述时长阈值,得到所述测试报告。
在一种具体实现方式中,所述获取待测试应用对应的图模型,包括:
获取所述待测试应用的源代码文件;
从所述源代码文件中获取所述待测试应用的所有页面,构建页面集合;
从所述源代码文件中获取所述待测试应用的所有控件,构建控件集合;
从所述源代码文件中获取所述待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系;
根据所述页面集合,所述控件集合,所述控件对应事件的回调关系,所述页面之间的跳转关系以及所述控件之间的依赖关系生成所述图模型。
第二方面,本发明实施例提供一种页面的自动化测试装置,包括:
第一处理模块,用于获取待测试应用对应的图模型,所述图模型中包括所述待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系;
第二处理模块,用于采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
在一种具体实现方式中,所述第二处理模块具体用于:
进入所述图模型中所述待测试应用的初始页面,采用深度优先方式,选择所述初始页面上任一个未被执行的控件执行进入下级页面;
在所述下级页面中选择任一未被执行的控件执行并进入所述下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到所述测试报告。
在一种具体实现方式中,所述第二处理模块还用于:
若检测到所述初始页面依赖于系统事件触发,则触发所述初始页面对应的系统事件。
在一种具体实现方式中,所述装置还包括:第三处理模块,用于:
在所述图模型的每一个页面中选择未被执行的控件后,检测所述控件是否存在控件间依赖关系;
若所述控件存在控件间依赖关系,则对所述控件依赖的依赖控件进行状态设置,再执行所述控件。
在一种具体实现方式中,所述装置还包括:
第四处理模块,用于启动所述待测试应用,并根据用户的操作设置动态测试的时长阈值;
相应的,所述第二处理模块具体用于:
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到所述时长阈值,得到所述测试报告。
在一种具体实现方式中,所述第一处理模块具体用于:
获取所述待测试应用的源代码文件;
从所述源代码文件中获取所述待测试应用的所有页面,构建页面集合;
从所述源代码文件中获取所述待测试应用的所有控件,构建控件集合;
从所述源代码文件中获取所述待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系;
根据所述页面集合,所述控件集合,所述控件对应事件的回调关系,所述页面之间的跳转关系以及所述控件之间的依赖关系生成所述图模型。
第三方面,本发明实施例提供一种电子设备,包括:
处理器,存储器,交互接口;
所述存储器用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行第一方面任一项所述的页面的自动化测试方法。
第四方面,本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的页面的自动化测试方法。
第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面任一项所述的页面的自动化测试方法。
本发明实施例提供的页面的自动化测试方法、装置、设备以及存储介质,在对应用的页面进行测试之前,根据应用的源代码文件获取到包括待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系的图模型,然后采用深度优先方式遍历测试该图模型中每个页面以及每个页面上的每个控件,即实现了自动化测试,也不会出现遗漏页面和控件,能够全面覆盖应用的所有场景和页面,以及控件,得到准确度较高的测试结果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的页面的自动化测试方法实施例一的流程图;
图2为本发明提供的页面的自动化测试方法实施例二的流程图;
图3a为本发明提供的页面的自动化测试方法实施例三的流程图;
图3b为本发明提供的一种图模型示意图;
图4为本发明提供的页面的自动化测试方法实施例四的流程图;
图5为本发明提供的页面的自动化测试装置实施例一的结构示意图;
图6为本发明提供的页面的自动化测试装置实施例二的结构示意图;
图7为本发明提供的页面的自动化测试装置实施例三的结构示意图;
图8为本发明提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术中的对于应用的两种测试方法随机策略或者固定策略,至少存在以下问题:
(1)对于使用随机策略来进行自动化测试是不能够全面的来覆盖整个应用的所有场景,因为随机性导致部分场景覆盖不到;
(2)对于使用固定策略来进行自动化测试,弊端是用户主观设计对特定的控件,进行操作的,而触发控件,这样也会导致一些场景设计疏漏,覆盖不全面。
针对上述存在的问题,本发明旨在提高一种解决在应用程序的测试过程中,对UI页面以及页面上按钮的覆盖率低,或者覆盖不够全面的问题。
发明人在对应用程序的过程中发现,如果通过用户主管设置固定的策略,在应用到各种不同的应用时,或者应用改进之后无论如何都没法对所有的页面上所有的按钮都测试到,如果随机测试也没法测试到所有的按钮,因此,发明人考虑是否可以通过遍历应用程序的每一个页面,遍历每一个按钮,从而保证在测试过程中全面覆盖,据此则需要对应用进行静态分析,从而实现全面覆盖的应用测试方案。
本方案提供的页面的自动化测试方法可以应用在电脑,笔记本电脑,服务器,智能终端等具有处理能力的电子设备中,本次本方案不做限制。
在本方案中,涉及到的图模型和深度优先方案的解释如下:
图模型,类似用于数据结构里的树模型,每一层都有节点,每个节点都有头和尾,头部指向下一层的节点。
深度优先:深度优先属于图算法的一种,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。
下面通过几个具体实施方式对本发明提供的页面的自动化测试方法进行详细说明。
图1为本发明提供的页面的自动化测试方法实施例一的流程图,如图1所示,该页面的自动化测试方法包括以下步骤:
S101:获取待测试应用对应的图模型,图模型中包括待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系。
在本步骤中,在对应用的页面进行测试之前,需要首选获取待测试应用的图模型,该图模型用于表示应用的页面之间的关系,页面上所有控件,以及控件操作后页面的跳转情况,控件之间的依赖关系等,该图模型相当于将应用中的页面,控件相关的操作和跳转等进行表示,从应用的初始页面一直到最后一级页面均可以通过节点进行表示,每个节点中包括关联页面,控件的信息。
具体的实现中,可以对应用的源代码文件进行分析处理,以得到该应用的图模型。
S102:采用深度优先方式,遍历测试图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
在本步骤中,在获取到待测试应用的图模型之后,可以基于图模型中表示的各种信息和关系,对应用的每个页面和页面上的空间进行测试,该测试过程中需要基于深度优先方式,遍历对每个页面以及每个页面上的每个控件都进行测试,也就是说按照深度优先方式将每个页面执行一遍,每个控件都执行测试过之后得到最终的测试报告,这种测试方案没有优先或者特定的策略,而是对所有的页面和控件进行了普遍测试覆盖。
本实施例提供的页面的自动化测试方法,在对应用的页面进行测试之前,根据应用的源代码文件获取到包括待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系的图模型,然后采用深度优先方式遍历测试该图模型中每个页面以及每个页面上的每个控件,即实现了自动化测试,也不会出现遗漏页面和控件,能够全面覆盖应用的所有场景和页面,以及控件,得到准确度较高的测试结果。
图2为本发明提供的页面的自动化测试方法实施例二的流程图,如图2所示,该页面的自动化测试方法在前述步骤S102之前,还包括:
S103:启动待测试应用,并根据用户的操作设置动态测试的时长阈值。
相应的,前述步骤S102可以具体实现为:
S1020:采用深度优先方式,遍历测试图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到时长阈值,得到测试报告。
在上述步骤中,在测试应用之前,首先还需要启动待测试应用,由于对应用的测试是不断的根据图模型的循环执行,因此在完成页面和控件的遍历执行后可能不会结束,因此需要根据测试人员的操作设置对该待测试应用的测试时间,以便在测试过程执行到预设的该时长阈值时结束该测试过程。
一般来说,该时长阈值可以根据经验和实验确定,该范围的时长至少要保证能够将待测试应用的所有页面和每个页面上的所有控件都执行测试一遍。
在设置完时长阈值之后,再采用深度优先方式,遍历图模型中的每个页面以及每个控件,直至测试时长达到了时长阈值之后,输出测试报告,该测试报告中包括所有执行数据,如果其中出现页面或者控件执行失败或者出错,也该测试报告中也会包括报错的数据,以便后续能够根据该测试报告对应用的测试结果进行分析。
图3a为本发明提供的页面的自动化测试方法实施例三的流程图,如图3所示,在上述两个实施例的基础上,该页面的自动化测试方法中S102可以具体实现为以下步骤:
S1021:进入图模型中待测试应用的初始页面,采用深度优先方式,选择初始页面上任一个未被执行的控件执行进入下级页面。
S1022:在下级页面中选择任一未被执行的控件执行并进入下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到测试报告。
在本方案中,根据图模型对待测试应用进行测试的过程中,首先会进入应用的初始页面,然后在对不同的控件的操作可能会跳转至不同的二级页面,再在二级页面上进行操作,则可以跳转至不同的三级页面。在该过程中,存在下一级页面需要在上一级页面上的多个控件进行操作才能进入,这种被称为控件间依赖,例如:在电商应用中,点击购买进入结算页面的前提是需要选中产品型号和数量等;也存在页面需要系统事件的触发才能进入,这种情况被称为依赖于系统事件触发,例如,在游戏应用中需要横屏后才能进入一些页面等。
该过程中,在进入应用的初始页面之后,可以任选一个未被执行的控件进行执行,跳转至下一级页面;再在下一级页面上继续选择未被执行的控件,执行,了能会跳转至下一级页面,也可以留在当前页面上,如果跳转至下一级页面,则可以重复该步骤,再进一步选择未被执行的控件进行执行,直至最后一级页面,如果留在了当前页面则选择下一个未被执行的控件进行执行,直至在当前页面上的所有控件被执行完成,记录执行数据,并返回上一级页面,再上一级页面上选择未被执行的控件继续重复本步骤,直至每个页面上的每个控件均被执行完,可以得到最后的测试报告。
在该过程中,存在两种特殊情况,一种是页面依赖于系统时间出发,则无论该页面是初始页面,还是任一级的页面,若检测到页面依赖于系统事件触发,则电子设备可以触发该页面对应的系统事件,以使该页面能够按照上面的深度优先方式完成测试。
另一种是存在控件之间存在依赖关系,则需要在图模型的任意一个页面上,在选中未被执行的控件后,检测一下该控件是否存在控件间依赖关系,若该控件存在控件间依赖关系,则需要对该控件依赖的一个或者多个依赖控件进行状态设置(也就是对依赖控件进行自动操作),再执行当前的该控件,以完成测试。
基于上述实施例,为了更清楚的解释该页面的自动化测试方法,下面进行举例说明。
图3b为本发明提供的一种图模型示意图,如图3b所示,举例来说,该应用的图模型中包括了初始页面,二级页面(页面A和页面B),以及三级页面(页面C,页面D以及页面E),该方案中以三级页面为最后一级为例,对该页面的自动化测试过程中,进行说明。
在依据图中的图模型进行测试时,以图模型作为引导,使用深度优先的探测策略执行自动化探测。
采用深度优先方式,遍历整个图模型,例如:初始页面上选定任一未操作的控件跳转至页面A,页面A可以通过不同的控件的操作跳转到页面C、D、E;页面B也可以通过不同的控件的操作跳转到页面C、D、E,然后对每一个页面的上的控件也逐个遍历,直到所有页面,所有控件都遍历完成。
具体步骤如下:
1,启动目标应用,并设置动态探测的上限时间(例如1小时)。
2,通过查询图模型检测应用的当前页面是否存在系统事件依赖,若存在则触发相应的系统事件。
3,从当前页面中选择一个在图模型中存在且未被执行的控件,同时检测该控件是否存在控件间依赖,若存在则对依赖控件的状态进行设置,随后模拟对该控件的操作。
4,当页面所对应的图模型中的控件均被操作过一次后,从当前页面的剩余控件中选择一个未执行的控件对其进行模拟操作。
5,如果当前页面所有的控件都已被执行则回退至上一页面,重复执行步骤2-5直至超时。
本实施例提供的页面的自动化测试方法,通过对应用的图模型中的每个页面以及每个控件,采用深度优先方式自动化的遍历测试,将会覆盖页面所有的控件和页面跳转,大大提高了测试覆盖率。
本发明提供的页面的自动化测试包括两个阶段,一个是图模型构建阶段,一个是动态测试阶段,前述的各个实施例对动态测试阶段进行了说明。然而能够实现前述动态测试阶段的前提是,对待测试应用构建了图模型,下面,对图模型构建阶段进行详细阐述。
图4为本发明提供的页面的自动化测试方法实施例四的流程图,如图4所示,在上述任一实施例的基础上,该页面的自动化测试方法获取待测试应用的图模型可以具体实现为以下步骤:
S201:获取待测试应用的源代码文件。
在本步骤中,首选电子设备需要获取待测试应用的源代码文件,研发人员可以直接将该源代码文件导入或者拷贝至实现测试的电子设备中,也可以通过下载的方式获取到该源代码文件,例如:下载得到APK安装包。
S202:从源代码文件中获取待测试应用的所有页面,构建页面集合。
S203:从源代码文件中获取待测试应用的所有控件,构建控件集合。
在前述步骤中,在获取到待测试应用的源代码文件之后,电子设备通过静态依赖分析思想对应用的源代码文件进行分析处理,从该源代码文件中抽取出所有的页面,构建出页面集合。并从源代码文件中抽取出所有的控件,构建出控件集合。
S204:从源代码文件中获取待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系。
进一步地,电子设备还需要对源代码文件中页面以及控件之间的跳转关系进行分析,得到一个跳转集合,对控件之间的依赖关系进行分析,同时对控件对应的事件的回调关系,页面之间的跳转关系等进行分析,确定这些关联关系和依赖关系。
S205:根据页面集合,控件集合,控件对应事件的回调关系,页面之间的跳转关系以及控件之间的依赖关系生成图模型。
在本步骤中,在根据对源代码文件的分析之后,可以将得到的页面集合,控件集合,控件对应的事件回调关系,页面之间的跳转关系,控件之间的依赖关系,将页面作为节点,其他的关系和控件集合作为节点中的信息和节点之间的联系,构建生成图模型。
综合来说,在该图模型的构建过程中,主要是通过静态依赖分析思想抽取并构造集成了依赖信息的页面跳转模型(简称为图模型)。这个图模型其中节点表示页面,边表示页面间跳转,两种依赖关系蕴含在模型中(参考本方案的原理图)。这个静态依赖分析技术过程分为:1、页面抽取,2、控件抽取,3、跳转分析,4、控件间依赖分析这四个步骤。
1、页面抽取,构建页面集合,通过查看app应用的源代码,把整个应用中的所有页面都抽离出来(包括首页的Activity,购物车的Activity,提单页的Activity),同时找到,某些特定的系统事件的触发(例如旋转手机屏幕的时候,某一个控件的功能才可以使用)需要依赖特定生命周期回调方法(例如onSaveInstanceState,onRestoreInstanceState)。
2、控件抽取,构建控件集合,通过查看app应用的源代码,把每一页面内所有已绑定事件的控件都抽离出来(例如:电商应用中,在详情页面绑定点击加车按钮的事件,购物车页面绑定了去结算的按钮)。
3、跳转分析,跳转集合,通过查看app应用的源代码中,找到控件事件回调的跳转方法(如startActivity)从而找出页面间的跳转关联(例如加入购物车事件addCartActivity),会跳转到购物车页面)。
4、控件间依赖分析,控件依赖集合,通过查看app应用的源代码,然后找到控件事件回调和控件状态选择有相互依赖的方法(如复选框方法CheckBox.isChecked)。
根据以上这四个步骤得到的各个集合进行模型构建,则可以完成对应用的图模型构建过程,得到应用对应的图模型。
本实施例提供的页面的自动测试方法中,对于这个图模型的构建,就是整合整个抽取的页面、抽取的控件、跳转的分析和控件间的依赖分析,为后续的执行自动化打好基础。以便在对应用进行页面的测试时,可以依据该图模型按照深度优化的探测策略执行自动化测试,完成对应用程序的所有页面以及每个页面上的所有控件的覆盖,提高页面自动化测试的覆盖率以及测试结果的准确度。
图5为本发明提供的页面的自动化测试装置实施例一的结构示意图;如图5所示,该页面的自动化测试装置10包括:
第一处理模块11,用于获取待测试应用对应的图模型,所述图模型中包括所述待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系;
第二处理模块12,用于采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
本实施例提供的页面的自动化测试装置,用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在对应用的页面进行测试之前,根据应用的源代码文件获取到包括待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系的图模型,然后采用深度优先方式遍历测试该图模型中每个页面以及每个页面上的每个控件,即实现了自动化测试,也不会出现遗漏页面和控件,能够全面覆盖应用的所有场景和页面,以及控件,得到准确度较高的测试结果。
在上述实施例的基础上,在一种具体的实施方式中,所述第二处理模块12具体用于:
进入所述图模型中所述待测试应用的初始页面,采用深度优先方式,选择所述初始页面上任一个未被执行的控件执行进入下级页面;
在所述下级页面中选择任一未被执行的控件执行并进入所述下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到所述测试报告。
可选的,所述第二处理模块12还用于:
若检测到所述初始页面依赖于系统事件触发,则触发所述初始页面对应的系统事件。
图6为本发明提供的页面的自动化测试装置实施例二的结构示意图;如图6所示,该页面的自动化测试装置10还包括:
第三处理模块13,用于:
在所述图模型的每一个页面中选择未被执行的控件后,检测所述控件是否存在控件间依赖关系;
若所述控件存在控件间依赖关系,则对所述控件依赖的依赖控件进行状态设置,再执行所述控件。
图7为本发明提供的页面的自动化测试装置实施例三的结构示意图;如图7所示,该页面的自动化测试装置10还包括:
第四处理模块14,用于启动所述待测试应用,并根据用户的操作设置动态测试的时长阈值;
相应的,所述第二处理模块12具体用于:
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到所述时长阈值,得到所述测试报告。
可选的,所述第一处理模块11具体用于:
获取所述待测试应用的源代码文件;
从所述源代码文件中获取所述待测试应用的所有页面,构建页面集合;
从所述源代码文件中获取所述待测试应用的所有控件,构建控件集合;
从所述源代码文件中获取所述待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系;
根据所述页面集合,所述控件集合,所述控件对应事件的回调关系,所述页面之间的跳转关系以及所述控件之间的依赖关系生成所述图模型。
上述任一实施例提供的页面的自动化测试装置,用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。
图8为本发明提供的一种电子设备的结构示意图。如图8所示,该电子设备20包括:
处理器21,存储器22,以及交互接口23;
所述存储器22用于存储所述处理器21的可执行指令;
其中,所述处理器21配置为经由执行所述可执行指令来执行前述任一方法实施例提供的页面的自动化测试方法。
可选的,存储器22既可以是独立的,也可以跟处理器21集成在一起。
可选的,当所述存储器22是独立于处理器21之外的器件时,所述电子设备20还可以包括:
总线24,用于将上述器件连接起来。
该电子设备用于执行前述任一方法实施例提供的页面的自动化测试方法,其实现原理和技术效果类似,在此不再赘述。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一实施例提供的页面的自动化测试方法。
本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现前述任一方法实施例提供的页面的自动化测试方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种页面的自动化测试方法,其特征在于,包括:
获取待测试应用对应的图模型,所述图模型中包括所述待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系;
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
2.根据权利要求1所述的方法,其特征在于,所述采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告,包括:
进入所述图模型中所述待测试应用的初始页面,采用深度优先方式,选择所述初始页面上任一个未被执行的控件执行进入下级页面;
在所述下级页面中选择任一未被执行的控件执行并进入所述下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到所述测试报告。
3.根据权利要求2所述的方法,其特征在于,所述进入所述图模型中所述待测试应用的初始页面之前,所述方法还包括:
若检测到所述初始页面依赖于系统事件触发,则触发所述初始页面对应的系统事件。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述图模型的每一个页面中选择未被执行的控件后,检测所述控件是否存在控件间依赖关系;
若所述控件存在控件间依赖关系,则对所述控件依赖的依赖控件进行状态设置,再执行所述控件。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述获取待测试应用对应的图模型之前,所述方法还包括:
启动所述待测试应用,并根据用户的操作设置动态测试的时长阈值;
相应的,所述采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告,包括:
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到所述时长阈值,得到所述测试报告。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述获取待测试应用对应的图模型,包括:
获取所述待测试应用的源代码文件;
从所述源代码文件中获取所述待测试应用的所有页面,构建页面集合;
从所述源代码文件中获取所述待测试应用的所有控件,构建控件集合;
从所述源代码文件中获取所述待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系;
根据所述页面集合,所述控件集合,所述控件对应事件的回调关系,所述页面之间的跳转关系以及所述控件之间的依赖关系生成所述图模型。
7.一种页面的自动化测试装置,其特征在于,包括:
第一处理模块,用于获取待测试应用对应的图模型,所述图模型中包括所述待测试应用的每个页面,每个页面上的所有控件,每个控件对应事件的回调关系,控件之间的依赖关系,以及页面之间的跳转关系;
第二处理模块,用于采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,得到测试报告。
8.根据权利要求7所述的装置,其特征在于,所述第二处理模块具体用于:
进入所述图模型中所述待测试应用的初始页面,采用深度优先方式,选择所述初始页面上任一个未被执行的控件执行进入下级页面;
在所述下级页面中选择任一未被执行的控件执行并进入所述下级页面的下级页面,重复本步骤直至当前页面的所有控件执行完成,则返回上一级页面并进行控件遍历执行,得到所述测试报告。
9.根据权利要求8所述的装置,其特征在于,所述第二处理模块还用于:
若检测到所述初始页面依赖于系统事件触发,则触发所述初始页面对应的系统事件。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:第三处理模块,用于:
在所述图模型的每一个页面中选择未被执行的控件后,检测所述控件是否存在控件间依赖关系;
若所述控件存在控件间依赖关系,则对所述控件依赖的依赖控件进行状态设置,再执行所述控件。
11.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:
第四处理模块,用于启动所述待测试应用,并根据用户的操作设置动态测试的时长阈值;
相应的,所述第二处理模块具体用于:
采用深度优先方式,遍历测试所述图模型中的每个页面以及每个页面上的每个控件,直至测试时长达到所述时长阈值,得到所述测试报告。
12.根据权利要求7至10任一项所述的装置,其特征在于,所述第一处理模块具体用于:
获取所述待测试应用的源代码文件;
从所述源代码文件中获取所述待测试应用的所有页面,构建页面集合;
从所述源代码文件中获取所述待测试应用的所有控件,构建控件集合;
从所述源代码文件中获取所述待测试应用中控件对应事件的回调关系,页面之间的跳转关系,控件之间的依赖关系;
根据所述页面集合,所述控件集合,所述控件对应事件的回调关系,所述页面之间的跳转关系以及所述控件之间的依赖关系生成所述图模型。
13.一种电子设备,其特征在于,包括:
处理器,存储器,交互接口;
所述存储器用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至6任一项所述的页面的自动化测试方法。
14.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的页面的自动化测试方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时用于实现权利要求1至6任一项所述的页面的自动化测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110452427.5A CN113220564A (zh) | 2021-04-26 | 2021-04-26 | 页面的自动化测试方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110452427.5A CN113220564A (zh) | 2021-04-26 | 2021-04-26 | 页面的自动化测试方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220564A true CN113220564A (zh) | 2021-08-06 |
Family
ID=77089068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110452427.5A Pending CN113220564A (zh) | 2021-04-26 | 2021-04-26 | 页面的自动化测试方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220564A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641578A (zh) * | 2021-08-10 | 2021-11-12 | 广域铭岛数字科技有限公司 | 基于业务层面精准测试方法、系统、设备及介质 |
CN114968687A (zh) * | 2022-06-09 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 遍历测试方法、装置、电子设备、程序产品以及存储介质 |
-
2021
- 2021-04-26 CN CN202110452427.5A patent/CN113220564A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641578A (zh) * | 2021-08-10 | 2021-11-12 | 广域铭岛数字科技有限公司 | 基于业务层面精准测试方法、系统、设备及介质 |
CN114968687A (zh) * | 2022-06-09 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 遍历测试方法、装置、电子设备、程序产品以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442511B (zh) | 可视化埋点测试方法及装置 | |
CN105468529B (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
CN113220564A (zh) | 页面的自动化测试方法、装置、设备以及存储介质 | |
CN105740144B (zh) | 一种Android移动终端的自动化测试方法及系统 | |
CN104598380A (zh) | 一种基于控件的自动化测试方法及系统 | |
CN111008154B (zh) | 一种基于强化学习的Android应用自动测试方法及系统 | |
CN109240666B (zh) | 基于调用栈和依赖路径的函数调用代码生成方法及系统 | |
CN114328173B (zh) | 软件模糊测试方法和装置、电子设备及存储介质 | |
CN106055479A (zh) | 一种基于强制执行的Android应用软件测试方法 | |
CN106933642B (zh) | 应用程序的处理方法及处理装置 | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
CN107038117B (zh) | 一种基于事件处理函数间定义-引用的web自动化测试方法 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN114238154B (zh) | 一种符号执行方法、单元测试方法、电子设备及存储介质 | |
CN112783764B (zh) | 应用程序的自动化测试方法及装置、存储介质、终端 | |
CN109558307B (zh) | 一种游戏程序的测试方法及系统 | |
US20170308379A1 (en) | Evaluating documentation coverage | |
CN104008056A (zh) | 软件测试方法及装置 | |
CN105701004B (zh) | 一种应用测试方法和装置 | |
CN116383054A (zh) | 一种静态分析和动态探索结合的移动应用模型构建方法 | |
CN113127868A (zh) | 脚本识别方法、装置、设备及存储介质 | |
CN110889116A (zh) | 一种广告拦截方法、装置及电子设备 | |
KR20150038983A (ko) | 객체 추출 기반의 어플리케이션 검증 방법 및 그 장치 | |
CN112765041B (zh) | 游戏自动化测试方法、装置及电子设备 | |
CN112069508B (zh) | 机器学习框架漏洞api参数定位方法、系统、设备及介质 |
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 |