掌桥专利:专业的专利平台
掌桥专利
首页

用户界面测试方法、装置、存储介质和电子设备

文献发布时间:2023-06-19 11:44:10


用户界面测试方法、装置、存储介质和电子设备

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种用户界面测试方法,用户界面测试装置,以及实现用户界面测试方法的计算机可读存储介质和电子设备。

背景技术

随着现代信息技术的飞速发展,移动设备如手机应用程序行业竞争日趋激烈,应用程序系统日益复杂,对于应用程序功能、性能的要求不断提高,因此需要对应用程序进行测试。

目前,用户界面UI(User Interface)的测试占了应用程序测试中很大一部分比重,传统使用人工来测试UI,操作比较麻烦。因此相关技术中提供一些自动化UI测试方案,如Monkey测试。Monkey测试可以进行自动化UI测试,提高了测试效率。

但是,Monkey测试具有随机性,这导致Monkey测试拥有一些缺点,例如,目前用户界面上的控件不一定支持所有的可执行操作如点击、长按、滑动、点选等,有些控件可能一个操作都不支持,有些控件可能支持其中的一个或多个操作。而Monkey测试由于具有随机性,所以针对某个控件的很大一部分操作可能都是无效操作,因此无法准确有效地覆盖应用界面中控件所支持的操作,导致测试效率有所降低。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种用户界面测试方法,用户界面测试装置,以及实现用户界面测试方法的计算机可读存储介质和电子设备。

第一方面,本申请实施例提供了一种用户界面测试方法,包括:

选择应用程序用户界面中的目标控件;

确定所述目标控件支持的所有测试操作;

在所述目标控件支持的所有测试操作中选择一个测试操作对所述目标控件执行测试,重复执行测试直至所述目标控件支持的所有测试操作全部被执行。

在一个实施例中,所述选择应用程序用户界面中的目标控件,包括:

获取所述用户界面中所有控件之间的第一层次关系;

基于所述第一层次关系随机选择一第一目标层,并获取所述第一目标层的所有控件;

在所述第一目标层的所有控件中随机选择一个控件作为目标控件。

在一个实施例中,所述方法还包括:

在所述目标控件支持的所有测试操作中随机选择一个测试操作对所述目标控件执行测试,重复执行测试直至所述目标控件支持的所有测试操作全部被执行;

当所述目标控件支持的所有测试操作全部被执行后,在所述第一目标层的所有控件中随机选择另一个控件作为目标控件;

返回所述确定所述目标控件支持的所有测试操作的步骤,直至所述第一目标层的所有控件各自支持的所有测试操作全部被执行;

当所述第一目标层的所有控件各自支持的所有测试操作全部被执行后,基于所述第一层次关系随机选择另一目标层,并获取所述另一目标层的所有控件;

在所述另一目标层的所有控件中随机选择一个控件作为目标控件;

返回所述确定所述目标控件支持的所有测试操作的步骤,直至所述用户界面中的所有控件各自支持的所有测试操作全部被执行。

在一个实施例中,所述方法还包括:

获取所述用户界面的第一标识信息;

在所述目标控件支持的所有测试操作全部被执行后,获取所述目标控件当前所在用户界面的第二标识信息;

基于所述第一标识信息和所述第二标识信息判断所述目标控件执行测试前后的用户界面是否为同一用户界面;

在是同一用户界面时,判断所述目标控件执行前后的用户界面上的控件是否变化,若是,则更新所述第一层次关系。

在一个实施例中,所述方法还包括:

在不是同一用户界面时,获取所述目标控件当前所在用户界面中所有控件之间的第二层次关系;

基于所述第二层次关系随机选择一第二目标层,并获取所述第二目标层的所有控件;

在所述第二目标层的所有控件中随机选择一个控件作为目标控件;

返回确定所述目标控件支持的所有测试操作的步骤,直至所述应用程序的所有不同用户界面全被测试完而结束测试。

在一个实施例中,所述确定所述目标控件支持的所有测试操作,包括:

获取所述目标控件的属性信息,所述属性信息包含所述目标控件所支持的测试操作的指示信息;

基于所述目标控件所支持的测试操作的指示信息,确定所述目标控件支持的所有测试操作。

在一个实施例中,所述方法还包括:

选择所述应用程序用户界面中的目标控件之前,设置测试时长;

在所述测试时长到达时,结束测试;

结束测试之后,基于测试结果生成用户界面测试报告;

或者,接收到停止测试指令时,停止测试。

第二方面,本申请实施例提供一种用户界面测试装置,包括:

控件选择模块,用于选择应用程序用户界面中的目标控件;

操作确定模块,用于确定所述目标控件支持的所有测试操作;

测试执行模块,用于在所述目标控件支持的所有测试操作中选择一个测试操作对所述目标控件执行测试,重复执行测试直至所述目标控件支持的所有测试操作全部被执行。

第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请任意实施例所提供的用户界面测试方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请任意实施例所提供的用户界面测试方法的步骤。

本申请实施例提供的技术方案与现有技术相比具有如下优点:

本申请实施例所提供的用户界面测试方法、装置、电子设备和计算机可读存储介质,其在用户界面测试时选择应用程序用户界面中的目标控件,接着确定目标控件支持的所有测试操作,最后在目标控件支持的所有测试操作中选择一个测试操作对目标控件执行测试,重复执行测试直至该目标控件支持的所有测试操作全部被执行。如此,本实施例方案在用户界面测试时,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一选择测试操作对目标控件执行测试,这样可以较准确有效地覆盖应用界面中控件所支持的所有操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例用户界面测试方法应用场景示意图;

图2为本申请实施例用户界面测试方法流程图;

图3为本申请实施例不同用户界面及控件关系示意图;

图4为本申请另一实施例用户界面测试方法流程图;

图5为本申请又一实施例用户界面测试方法流程图;

图6为本申请实施例用户界面测试装置示意图;

图7为本申请实施例实现用户界面测试方法的电子设备示意图。

具体实施方式

为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。

应当理解,在下文中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

本申请提供的用户界面测试方法,可以应用于如图1所示的应用场景中,该应用场景包括电子设备如智能手机,以及安装于电子设备中的UIAtomator测试软件。由UIAtomator测试软件执行对应用程序的UI自动化测试。UIAtomator是安卓(Android)UI自动化测试框架,其具体内容可以参考现有技术理解,此处不再赘述。其中,电子设备可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。

在一个实施例中,如图2所示,提供了一种用户界面测试方法。本实施例主要以该方法应用于图1中的电子设备如智能手机来举例说明。

步骤S201:选择应用程序用户界面中的目标控件。

示例性的,目标控件可以是例如智能手机中安装的一个应用程序的当前用户界面中的任一个控件。控件具体可以是文本框、单选按钮、复选框、滚动条等,但不限于此。

具体的,在一个示例场景下,软件测试人员使用UIAtomator测试软件进行测试,如启动智能手机中安装的UIAtomator测试软件进入如图1所示测试界面,该测试界面中可以包含智能手机中安装的待测试的每个应用程序的标识如应用名称以及对应的点选框103。当该点选框103被选中时,即确定了对应的应用程序如应用名称2标识的应用程序进行测试,测试人员可输入待测应用程序的测试时长如100分钟。测试界面同时可以包含开始测试按钮101以及返回主菜单按钮102,当该开始测试按钮101被点击时,自动生成测试脚本,并开始自动化测试。测试脚本可包括但不限于此测试命令、应用包名、测试时长如100分钟等,这些可以参考现有技术理解,此处不再赘述。具体的,UIAtomator测试软件可启动之前确定的应用程序如应用名称2标识的应用程序打开主界面,主界面可能包括一个或多个控件,UIAtomator可自动选择主界面中的任意一个控件如单选按钮作为目标控件。

步骤S202:确定目标控件支持的所有测试操作。

示例性的,测试操作包括但不限于点击、长按、滑动、点选等。结合图3中所示,一个应用程序运行时一般包括多个用户界面,作为示例的用户界面1和用户界面2,用户界面1如主界面可包括控件1和控件2,而用户界面2如子界面可包括控件3和控件4,一个控件不一定支持所有的测试操作,有些控件如控件3可能一个测试操作都不支持,有些控件如控件1、控件2和控件4可能支持其中的一个或多个测试操作,具体支持什么测试操作,是由控件实现的功能决定的。

具体的,在一个实施例中,步骤S202确定目标控件支持的所有测试操作,具体可以包括:获取目标控件的属性信息,属性信息包含目标控件所支持的测试操作的指示信息。基于目标控件所支持的测试操作的指示信息,确定目标控件支持的所有测试操作。

示例性的,目标控件的属性信息可以包括但不限于目标控件所归属的用户界面的包名、类名,以及控件ID、父控件信息、子控件信息、支持的可执行操作指示信息等。其中可执行操作指示信息可以是参数值,不同参数值标识不同的测试操作。解析属性信息中的支持的可执行操作指示信息即可确定目标控件支持的所有测试操作。

作为示例,UIAtomator测试软件若选择上述主界面中的一个控件如单选按钮作为目标控件,则可确定该目标控件支持的所有测试操作仅是点选。

步骤S203:在目标控件支持的所有测试操作中选择一个测试操作对目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行。

示例性的,当目标控件如单选按钮支持的所有测试操作仅有一个点选操作时,则基于点选操作对目标控件如单选按钮执行测试。

当目标控件支持的所有测试操作包括多个测试操作时,从多个测试操作中选择一个测试操作对目标控件执行测试,然后从多个测试操作中再选择另一个测试操作对目标控件执行测试,重复执行测试直至目标控件支持的多个测试操作全部被执行。

在一个实施例中,当对目标控件执行一次测试操作后,标记该目标控件的该测试操作已执行,然后再重复执行直至目标控件支持的所有测试操作全部被执行了,标记该目标控件为已执行状态。处于已执行状态的目标控件在当前的用户界面上其它目标控件测试时将不会被选取,当应用程序当前的用户界面如主界面上的所有控件都标记为已执行执行状态时,测试可以结束。

本实施例的上述用户界面测试方法中,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一选择测试操作对目标控件执行测试,这样可以较准确有效地覆盖应用界面中控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

在一个实施例中,结合图4中所示,步骤S201中选择应用程序用户界面中的目标控件,具体可以包括以下步骤:

步骤S401:获取用户界面中所有控件之间的第一层次关系。

示例性的,第一层次关系即当前的用户界面中所有控件之间的关联关系。

具体的,UIAutomator测试软件在打开应用程序的主界面时,可以获取主界面的根节点控件信息rootNodeInfo,rootNodeInfo可以是一个树状结构图,通过递归循环,可以获取该主界面的所有节点控件之间的层次关系如树状结构层次关系。

步骤S402:基于第一层次关系随机选择一第一目标层,并获取第一目标层的所有控件。

示例性的,第一目标层可以是第一层次关系如树状结构层次关系中任一层,随机选择其中一层作为第一目标层后,可获取该第一目标层的所有控件如点选框、滚动条等。

步骤S403:在第一目标层的所有控件中随机选择一个控件作为目标控件。

具体的,获取该第一目标层的所有控件如点选框、滚动条等之后,在该所有控件如点选框、滚动条中随机选择一个控件作为目标控件,然后可以跳转执行上述步骤S202,以对选择的目标控件进行测试。

本实施例的方案中,通过获取用户界面中所有控件之间的层次关系进而实现目标控件的随机选择测试,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一随机选择测试操作对目标控件执行测试,可以准确有效的覆盖应用界面中所有控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。另外,目前的Monkey测试无法有效覆盖应用程序的全部控件,需要针对待测的不同应用程序做适配以定制Monkey测试方案,耦合度高。本实施例中通过获取用户界面中所有控件之间的层次关系进而实现目标控件的随机选择测试,无需针对不同应用程序做具体适配定制相应不同的测试方案,从而可以兼容大部分待测应用程序,且测试逻辑和应用程序本身逻辑完全解耦,具有高度的独立性,可以直接在例如手机上操作,使用简单方便。

在一个实施例中,在上述实施例的基础上,所述方法还包括以下步骤:

步骤i):在目标控件支持的所有测试操作中随机选择一个测试操作对目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行。

具体的,该步骤i)可以参考前述步骤S203的具体描述,此处不同在于,每次随机选择一个测试操作对目标控件执行测试直至目标控件支持的所有测试操作全部被执行。

步骤ii):当目标控件支持的所有测试操作全部被执行后,在第一目标层的所有控件中随机选择另一个控件作为目标控件。

步骤iii):返回确定目标控件支持的所有测试操作的步骤,直至第一目标层的所有控件各自支持的所有测试操作全部被执行。

示例性的,当前的上述主界面的所有控件之间的层次关系如树状结构层次关系例如有6个层级,但不限于此。每个层级包含至少一个控件,相邻层级的控件映射关联,如一对一映射关联,或者一对多映射关联等,但也不限于此。

具体的,例如当前随机选择的的是第1层级的一个控件进行测试,则该控件测试完其支持的所有测试操作后,再次随机选择第1层级的另一个控件作为目标控件进行测试,重复上述步骤直至第1层级的所有控件各自支持的所有测试操作全部被执行。

步骤iiii):当第一目标层的所有控件各自支持的所有测试操作全部被执行后,基于第一层次关系随机选择另一目标层,并获取另一目标层的所有控件。

步骤v):在另一目标层的所有控件中随机选择一个控件作为目标控件,返回确定目标控件支持的所有测试操作的步骤,直至用户界面中的所有控件各自支持的所有测试操作全部被执行。

具体的,例如第1层级的所有控件各自支持的所有测试操作全部被执行后,基于上述主界面的所有控件之间的第一层次关系如树状结构层次关系再次随机选择另一目标层例如第3层级,随机选择该第3层级的所有控件中的一个控件作为目标控件,跳转执行上述步骤S202,以对选择的目标控件进行测试,直至当前的主界面各层级的所有控件各自支持的所有测试操作全部被执行,则可以结束测试。

本实施例的上述方案,通过一个用户界面中所有控件之间的层次关系循环执行测试,可准确有效的覆盖应用界面中所有控件的测试,避免遗漏一些控件,使得测试结果更为全面准确。

可选的,在上述实施例的基础上,在一个实施例中,结合图5中所示,所述方法还可以包括以下步骤:

步骤S501:获取用户界面的第一标识信息。

示例性的,第一标识信息可以是当前的用户界面如主界面的包名和/或类名等,但不限于此。具体的,UIAtomator测试软件可以在打开应用程序的主界面时,获取主界面的第一包名和/或第一类名。

步骤S502:在目标控件支持的所有测试操作全部被执行后,获取目标控件当前所在用户界面的第二标识信息。

示例性的,第二标识信息可以是目标控件当前所在用户界面的包名和/或类名等,但也不限于此。需要说明的是,在例如上述步骤S203执行前后,目标控件所在的用户界面可能发生变化,如从当前的用户界面1如主界面跳转到不同的用户界面2如子界面,或者当前的主界面上的所有控件也可能发生变化,如新增或减少控件,所以需要对比执行前后的界面信息进行判断。

具体的,UIAtomator测试软件可以在主界面上的一个目标控件支持的所有测试操作全部被执行后时,获取该目标控件当前所在用户界面的第二包名和/或第二类名。

步骤S503:基于第一标识信息和第二标识信息判断目标控件执行测试前后的用户界面是否为同一用户界面。

具体的,UIAtomator测试软件可以基于获取的上述主界面的第一包名和/或第一类名,与目标控件当前所在用户界面的第二包名和/或第二类名进行匹配,例如第一包名与第二包名相同,和/或,第一类名与第二类名相同,则可以判定目标控件执行测试前后的用户界面是同一用户界面。类似的,第一包名与第二包名不相同,和/或,第一类名与第二类名不相同,则可以判定目标控件执行测试前后的用户界面不是同一用户界面,即用户界面发生了变化。

步骤S504:在是同一用户界面时,判断目标控件执行前后的用户界面上的控件是否变化,若是,则更新第一层次关系。

具体的,UIAtomator测试软件判定目标控件执行测试前后的用户界面是同一用户界面时,如目标控件目前一直在主界面上,可再次判断目标控件执行前后主界面上的控件是否发生变化,如增加了一个新控件,或者减少了一个控件,若发生变化则更新主界面上当前所有控件的层次关系。可以理解的是,步骤S504之后可以返回上述步骤S402执行。

本实施例的上述方案中,可及时更新用户界面的所有控件的层次关系,以便于下一时刻选择新的目标控件测试时,基于更新的层次关系随机选择该用户界面上的一个控件作为目标控件,这样可以更准确地选择用户界面上的控件进行测试,提高测试结果的准确性。

可选的,在上述实施例的基础上,在一个实施例中,所述方法还可以包括以下步骤:

步骤a):在不是同一用户界面时,获取目标控件当前所在用户界面中所有控件之间的第二层次关系。

示例性的,第二层次关系是目标控件当前所在用户界面中所有控件之间的关联关系。

具体的,UIAtomator测试软件判定目标控件执行测试前后的用户界面不是同一用户界面时,如从主界面跳转到了子界面,则可以获取子界面中所有控件之间的层次关系。具体可获取子界面的根节点控件信息rootNodeInfo,rootNodeInfo可以是一个树状结构图,通过递归循环,可以获取该子界面的所有节点控件之间的层次关系如树状结构层次关系。

步骤b):基于第二层次关系随机选择一第二目标层,并获取第二目标层的所有控件。

步骤c):在第二目标层的所有控件中随机选择一个控件作为目标控件。

可以理解的是,步骤b)和步骤c)的具体实施与上述步骤S402和步骤S403的实施是一样的,具体可以参考前述实施例中的详细描述,此处不再赘述。

步骤d):返回确定目标控件支持的所有测试操作的步骤,直至应用程序的所有不同用户界面全被测试完而结束测试。

示例性的,确定子界面中的目标控件后,可返回步骤S202执行,进而执行步骤S203,直至应用程序的所有不同用户界面全被测试完而结束测试。

本实施例中,判定目标控件执行测试前后的用户界面不是同一用户界面时,即可触发对执行测试后的新用户界面的测试,直至应用程序的所有不同用户界面全被测试完而结束测试。这样可以通过获取不同用户界面中所有控件之间的层次关系进而实现目标控件的随机选择测试,可以准确有效的覆盖应用程序所有应用界面中所有控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

另外,本实施例中通过获取各个用户界面中所有控件之间的层次关系进而实现目标控件的随机选择测试,无需针对不同应用程序做具体适配定制相应不同的测试方案,从而可以兼容大部分待测应用程序,且测试逻辑和应用程序本身逻辑完全解耦,具有高度的独立性,可以直接在例如手机上操作,使用简单方便。

可选的,在一个实施例中,所述方法还包括:选择应用程序用户界面中的目标控件之前,设置测试时长;在测试时长到达时,结束测试。

示例性的,执行测试前测试人员可以通过例如定时器设置一个测试时长,测试时长达到时则可以结束测试。这样,可以由测试人员自定义测试结束条件,方便测试人员根据需要来灵活结束用户界面测试。

可选的,在一个实施例中,所述方法还包括:接收到停止测试指令时,停止测试。例如测试人员通过点击停止按钮而触发生成停止测试指令,进而实现停止用户界面测试,方便测试人员根据需要来灵活控制用户界面测试过程。

可选的,在一个实施例中,上述方法还可包括:结束测试之后,基于测试结果生成用户界面测试报告。

示例性的,可根据测试结果生成例如可扩展标记语言(Extensible MarkupLanguage,XML)文件,XML文件可存储测试命令,测试结果,测试开始时间、结束时间、UI覆盖率、异常信息等。具体的,可以将XML文件中的测试结果数据转换为超级文本标记语言(Hyper Text Markup Language,HTML)格式的测试报告,但也不限于于此。本实施例中生成测试报告,方便测试人员了解测试过程,评估测试结果。

应该理解的是,虽然图2、图4和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图4和图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

基于同一构思,在一个实施例中,本申请实施例还提供一种用户界面测试装置,如图6所示用户界面测试装置可包括控件选择模块601、操作确定模块602和测试执行模块603,其中:

控件选择模块601,用于选择应用程序用户界面中的目标控件。

操作确定模块602,用于确定目标控件支持的所有测试操作。

测试执行模块603,用于在目标控件支持的所有测试操作中选择一个测试操作对目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行。

本实施例的上述用户界面测试装置中,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一选择测试操作对目标控件执行测试,这样可以较准确有效地覆盖应用界面中控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

在一个实施例中,控件选择模块601选择应用程序选用户界面中的目标控件,具体可包括:获取用户界面中所有控件之间的第一层次关系;基于第一层次关系随机选择一第一目标层,并获取第一目标层的所有控件;在第一目标层的所有控件中随机选择一个控件作为目标控件。

在一个实施例中,测试执行模块603还用于:在目标控件支持的所有测试操作中随机选择一个测试操作对所述目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行;当目标控件支持的所有测试操作全部被执行后,在第一目标层的所有控件中随机选择另一个控件作为目标控件;返回确定目标控件支持的所有测试操作的步骤,直至第一目标层的所有控件各自支持的所有测试操作全部被执行。当第一目标层的所有控件各自支持的所有测试操作全部被执行后,基于第一层次关系随机选择另一目标层,并获取另一目标层的所有控件,在另一目标层的所有控件中随机选择一个控件作为目标控件,返回确定目标控件支持的所有测试操作的步骤,直至用户界面中的所有控件各自支持的所有测试操作全部被执行。

在一个实施例中,所述装置还可包括界面判断模块,用于:获取用户界面的第一标识信息;在目标控件支持的所有测试操作全部被执行后,获取目标控件当前所在用户界面的第二标识信息;基于第一标识信息和第二标识信息判断目标控件执行测试前后的用户界面是否为同一用户界面;在是同一用户界面时,判断目标控件执行前后的用户界面上的控件是否变化,若是,则更新第一层次关系。

在一个实施例中,控件选择模块601还可用于:在界面判断模块判定不是同一用户界面时,获取目标控件当前所在用户界面中所有控件之间的第二层次关系;基于第二层次关系随机选择一第二目标层,并获取第二目标层的所有控件;在第二目标层的所有控件中随机选择一个控件作为目标控件;返回操作确定模块602以确定目标控件支持的所有测试操作,直至应用程序的所有不同用户界面全被测试完而结束测试。

在一个实施例中,操作确定模块602确定目标控件支持的所有测试操作,具体可包括:获取目标控件的属性信息,属性信息包含目标控件所支持的测试操作的指示信息;基于目标控件所支持的测试操作的指示信息,确定目标控件支持的所有测试操作。

在一个实施例中,所述装置还可包括测试控制模块,用于在选择应用程序用户界面中的目标控件之前,设置测试时长;在测试时长到达时,结束测试。或者,测试控制模块用于在接收到停止测试指令时,停止测试。

在一个实施例中,所述装置还可包括测试报告生成模块,用于结束测试之后,基于测试结果生成用户界面测试报告。

关于用户界面测试装置的具体限定可以参见上文中对于用户界面测试方法的限定,在此不再赘述。上述用户界面测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种电子设备,该电子设备可以是终端,其内部结构图可以如图7所示。该电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该计算机程序被处理器执行时以实现一种用户界面测试方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的用户界面测试装置可以实现为一种计算机程序的形式,计算机程序可在如图7所示的电子设备上运行。电子设备的存储器中可存储组成该用户界面测试装置的各个程序模块,比如,图6所示的控件选择模块601、操作确定模块602和测试执行模块603。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的用户界面测试方法中的步骤。

例如,图7所示的电子设备可以通过如图6所示的用户界面测试装置中的控件选择模块601执行步骤S201。电子设备可通过操作确定模块602执行步骤S202。电子设备可通过测试执行模块603执行步骤S203。

在一个实施例中,提供了一种电子设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

步骤S201:选择应用程序用户界面中的目标控件。

步骤S202:确定所述目标控件支持的所有测试操作。

步骤S203:在所述目标控件支持的所有测试操作中选择一个测试操作对所述目标控件执行测试,重复执行测试直至所述目标控件支持的所有测试操作全部被执行。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取所述用户界面中所有控件之间的第一层次关系。

基于所述第一层次关系随机选择一第一目标层,并获取所述第一目标层的所有控件。

在所述第一目标层的所有控件中随机选择一个控件作为目标控件。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

在目标控件支持的所有测试操作中随机选择一个测试操作对所述目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行。

当目标控件支持的所有测试操作全部被执行后,在第一目标层的所有控件中随机选择另一个控件作为目标控件。

返回确定目标控件支持的所有测试操作的步骤,直至第一目标层的所有控件各自支持的所有测试操作全部被执行。

当第一目标层的所有控件各自支持的所有测试操作全部被执行后,基于第一层次关系随机选择另一目标层,并获取另一目标层的所有控件,在另一目标层的所有控件中随机选择一个控件作为目标控件。

返回确定目标控件支持的所有测试操作的步骤,直至用户界面中的所有控件各自支持的所有测试操作全部被执行。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取所述用户界面的第一标识信息。

在所述目标控件支持的所有测试操作全部被执行后,获取所述目标控件当前所在用户界面的第二标识信息。

基于所述第一标识信息和所述第二标识信息判断所述目标控件执行测试前后的用户界面是否为同一用户界面。

在是同一用户界面时,判断所述目标控件执行前后的用户界面上的控件是否变化,若是,则更新所述第一层次关系。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

在不是同一用户界面时,获取所述目标控件当前所在用户界面中所有控件之间的第二层次关系。

基于所述第二层次关系随机选择一第二目标层,并获取所述第二目标层的所有控件。

在所述第二目标层的所有控件中随机选择一个控件作为目标控件;

返回确定所述目标控件支持的所有测试操作的步骤,直至所述应用程序的所有不同用户界面全被测试完而结束测试。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取所述目标控件的属性信息,所述属性信息包含所述目标控件所支持的测试操作的指示信息。

基于所述目标控件所支持的测试操作的指示信息,确定所述目标控件支持的所有测试操作。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

选择所述应用程序用户界面中的目标控件之前,设置测试时长。

在所述测试时长到达时,结束测试;

结束测试之后,基于测试结果生成用户界面测试报告。

或者,处理器执行计算机程序时还实现以下步骤:接收到停止测试指令时,停止测试。

本实施例执行上述用户界面测试方法时,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一选择测试操作对目标控件执行测试,这样可以较准确有效地覆盖应用界面中控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

步骤S201:选择应用程序用户界面中的目标控件。

步骤S202:确定所述目标控件支持的所有测试操作。

步骤S203:在所述目标控件支持的所有测试操作中选择一个测试操作对所述目标控件执行测试,重复执行测试直至所述目标控件支持的所有测试操作全部被执行。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述用户界面中所有控件之间的第一层次关系;

基于所述第一层次关系随机选择一第一目标层,并获取所述第一目标层的所有控件;

在所述第一目标层的所有控件中随机选择一个控件作为目标控件。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在目标控件支持的所有测试操作中随机选择一个测试操作对所述目标控件执行测试,重复执行测试直至目标控件支持的所有测试操作全部被执行。

当目标控件支持的所有测试操作全部被执行后,在第一目标层的所有控件中随机选择另一个控件作为目标控件。

返回确定目标控件支持的所有测试操作的步骤,直至第一目标层的所有控件各自支持的所有测试操作全部被执行。

当第一目标层的所有控件各自支持的所有测试操作全部被执行后,基于第一层次关系随机选择另一目标层,并获取另一目标层的所有控件,在另一目标层的所有控件中随机选择一个控件作为目标控件。

返回确定目标控件支持的所有测试操作的步骤,直至用户界面中的所有控件各自支持的所有测试操作全部被执行。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述用户界面的第一标识信息;

在所述目标控件支持的所有测试操作全部被执行后,获取所述目标控件当前所在用户界面的第二标识信息;

基于所述第一标识信息和所述第二标识信息判断所述目标控件执行测试前后的用户界面是否为同一用户界面;

在是同一用户界面时,判断所述目标控件执行前后的用户界面上的控件是否变化,若是,则更新所述第一层次关系。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在不是同一用户界面时,获取所述目标控件当前所在用户界面中所有控件之间的第二层次关系;

基于所述第二层次关系随机选择一第二目标层,并获取所述第二目标层的所有控件;

在所述第二目标层的所有控件中随机选择一个控件作为目标控件;

返回确定所述目标控件支持的所有测试操作的步骤,直至所述应用程序的所有不同用户界面全被测试完而结束测试。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述目标控件的属性信息,所述属性信息包含所述目标控件所支持的测试操作的指示信息;

基于所述目标控件所支持的测试操作的指示信息,确定所述目标控件支持的所有测试操作。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

选择所述应用程序用户界面中的目标控件之前,设置测试时长;

在所述测试时长到达时,结束测试;

结束测试之后,基于测试结果生成用户界面测试报告。

或者,计算机程序被处理器执行时还实现以下步骤:接收到停止测试指令时,停止测试。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

本实施例执行上述用户界面测试方法时,先确定目标控件支持的所有测试操作,然后可在目标控件支持的所有测试操作逐一选择测试操作对目标控件执行测试,这样可以较准确有效地覆盖应用界面中控件所支持的操作,避免Monkey测试的随机性导致的针对某个控件可能出现的大量无效测试操作,进而在一定程度上提高应用程序用户界面测试效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,比如静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 用户界面测试方法、装置、存储介质和电子设备
  • 用户界面测试方法、装置、电子设备及存储介质
技术分类

06120113034503