CN109840201A - Ui测试方法、装置、电子设备及计算机可读存储介质 - Google Patents

Ui测试方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN109840201A
CN109840201A CN201811537815.8A CN201811537815A CN109840201A CN 109840201 A CN109840201 A CN 109840201A CN 201811537815 A CN201811537815 A CN 201811537815A CN 109840201 A CN109840201 A CN 109840201A
Authority
CN
China
Prior art keywords
terminal
data
sdk
control
test
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.)
Granted
Application number
CN201811537815.8A
Other languages
English (en)
Other versions
CN109840201B (zh
Inventor
李灵能
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201811537815.8A priority Critical patent/CN109840201B/zh
Publication of CN109840201A publication Critical patent/CN109840201A/zh
Application granted granted Critical
Publication of CN109840201B publication Critical patent/CN109840201B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

本发明涉及一种UI测试方法、装置、电子设备及计算机可读存储介质。所述方法包括:建立第一终端与第二终端之间的通信连接;所述第二终端通过用户界面发出调试指令,并确定与所述调试指令对应的应用;所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据;将获取的UI数据发送给所述第一终端;所述第一终端接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本;所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK;及所述第二终端根据所述SDK接收的UI测试脚本对所述应用进行测试。本案无需连接Xcode就能实现UI的调试,并避免对测试脚本重新编译造成测试时间过长的问题。

Description

UI测试方法、装置、电子设备及计算机可读存储介质
技术领域
本发明涉及计算机软件测试领域,具体涉及一种UI测试方法、装置、电子设备及计算机可读存储介质。
背景技术
现有技术中通常使用Xcode测试工具对用户界面(UI)进行脚本测试。然而Xcode进行UI的脚本测试不支持即插即调。而且当脚本代码有改动时,为实现UI测试都需要重新编译并运行代码。因而对于一些大型的应用来说,通过脚本测试使得脚本重新编译的时间过长。
发明内容
鉴于以上内容,有必要提出一种UI测试方法、装置、电子设备和计算机可读存储介质,使得进行UI测试时无需连接Xcode就能实现UI的调试,并避免对测试脚本重新编译造成测试时间过长的问题。
本申请的第一方面提供一种UI测试方法,所述方法包括:
建立第一终端与第二终端之间的通信连接;
所述第二终端通过用户界面发出调试指令,并确定与所述调试指令对应的应用;
所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据;
将获取的UI数据发送给所述第一终端;
所述第一终端接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本;
所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK;及
所述第二终端根据所述SDK接收的UI测试脚本对所述应用进行测试。
优选地,所述建立第一终端与第二终端之间的通信连接包括:
基于所述第一终端上的浏览器地址栏中输入的所述第二终端的IP地址,建立所述第一终端与所述第二终端的SDK通信连接。
优选地,所述应用的UI数据包括所述应用的当前显示页面的视图控制器控件、视图控件及子视图控件信息。
优选地,所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据包括:
配置SDK标准,其中,所述SDK标准包括通用SDK接口;及
利用所述SDK接口获取包括多个UI控件的UI数据。
优选地,所述对UI数据的操作事件包括对所述视图控制器控件、视图控件、子视图控件的属性进行设定的操作。
优选地,所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK包括:
根据接收的UI数据所包含的应用的显示页面的视图控制器、视图、子视图信息还原出所述应用的当前页面状态;
接收用户对所述视图控制器控件、所述视图控件、所述子视图控件的属性进行设定的操作;及
根据对所述视图控制器控件、所述视图控件、所述子视图控件的属性设定的操作生成UI测试脚本。
优选地,所述方法还包括:
所述第一终端根据测试结果生成一测试报告并显示给用户查看。
本申请的第二方面提供一种UI测试装置,所述装置包括:
通信建立模块,用于建立第一终端与第二终端之间的通信连接;
应用确定模块,用于控制所述第二终端通过用户界面发出调试指令,并确定与所述调试指令对应的应用;
UI数据获取模块,用于控制所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据;
UI数据发送模块,用于控制所述第二终端将获取的UI数据发送给所述第一终端;
脚本生成模块,用于控制所述第一终端接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本;
脚本发送模块,用于控制所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK;及
测试模块,用于控制所述第二终端根据所述SDK接收的UI测试脚本对所述应用进行测试。
本申请的第三方面提供一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述UI测试方法。
本申请的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述UI测试方法。
本发明中第二终端配置SDK接口并通过SDK接口获取所确定的应用的UI数据,第一终端从第二终端接收UI数据及接收用户对UI数据的操作事件并根据所述操作事件生成UI测试脚本,所述第二终端通过SDK从第一终端接收UI测试脚本并根据UI测试脚本进行测试。从而避免对测试脚本重新编译造成UI测试时间过长的问题。
附图说明
图1是本发明一实施方式中UI测试方法的应用环境示意图。
图2是本发明一实施方式中UI测试方法的流程图。
图3是本发明一实施方式中UI测试装置的示意图。
图4是为本发明一实施方式中脚本生成模块的结构示意图。
图5是本发明电子设备较佳实施例的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明UI测试方法应用在一个或者多个电子设备中。所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital SignalProcessor,DSP)、嵌入式设备等。
所述电子设备可以是桌上型计算机、笔记本电脑、平板电脑及云端服务器等计算设备。所述设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例1
图1是本发明一实施方式中UI测试方法的应用环境示意图。
参阅图1所示,所述UI测试方法应用在第一终端1及第二终端2上。所述第一终端1通过网络3与第二终端2连接。所述第二终端2从与其相通信连接的第一终端1获取应用的可执行文件,并根据所述可执行文件运行应用进行调试。本实施方式中,所述网络3可以是有线网络,例如电缆、光纤等,也可以是无线网络,例如无线电、无线保真(WirelessFidelity,WIFI)、蜂窝、卫星、广播等。在一实施方式中,所述第一终端1可以是笔记本电脑、台式电脑、平板电脑等装置。所述第二终端2可以是笔记本电脑、台式电脑、手机等装置。
图2是本发明一实施方式中UI测试方法的流程图。根据不同的需求,所述流程图中步骤的顺序可以改变,某些步骤可以省略。
参阅图2所示,所述UI测试方法具体包括以下步骤:
步骤S201,建立第一终端与第二终端之间的通信连接,其中,所述第一终端安装有开发工具、保存有应用的工程文件,所述第二终端安装有待测的应用。
本实施方式中,应用的开发过程中会通过终端的开发工具创建一个应用的工程文件,所述工程文件包含应用的源代码。通过编译所述应用的源代码可以得到应用的可执行文件,通过运行所述可执行文件来运行应用,以显示应用界面,以便后续对应用进行调试。本发明实施例主要涉及应用界面的调试,也即UI(User Interface,用户界面)调试。在具体实施方式中,所述第一终端1与所述第二终端2连接在同一个局域网内。所述第二终端2安装的多个应用集成有SDK(Software Development Kit,软件工具开发包)。所述第一终端1与所述第二终端2的SDK通信连接。本实施方式中,基于所述第一终端1上的浏览器地址栏中输入的所述第二终端2的IP地址,建立所述第一终端1与所述第二终端2的SDK通信连接。也即,在所述第一终端1安装的浏览器的地址栏中输入所述第二终端2的IP地址后,所述第一终端1可与所述第二终端2的SDK相通信。本发明提供的UI测试方法采用应用的真机调试。其中,应用的真机的调试是指直接在第二终端2上运行应用的可执行文件,并显示应用界面以便测试。当采用真机调试时,第二终端2可从与其相通信连接的第一终端1获取应用的可执行文件,进而运行应用进行调试。
步骤S202,所述第二终端2通过用户界面发出调试指令,并确定与所述调试指令对应的应用。
在一实施方式中,在所述第二终端2的用户界面上显示有指令调试虚拟按钮,当用户操作所述指令调试虚拟按钮时,所述第二终端2发出所述调试指令。在另一实施方式中,在所述第二终端2的用户界面上显示有调试指令编辑栏位,所述调试指令编辑栏位用于接收用户输入的调试指令并在检测到用户完成调试指令的编辑时发出所述调试指令。
步骤S203,所述第二终端2配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据。
本实施方式中,所述应用的UI数据包括应用当前显示页面的视图控制器控件、视图控件及子视图控件信息。
在一具体实施方式中,步骤S203还包括:
步骤S2031,配置SDK标准,其中,所述SDK标准可以包括通用SDK接口。
本实施方式中,根据SDK标准,使得所述SDK接口以及SDK基本模型可以在不同的引擎上做相应的实现,不同的编程语言只需要遵循相同的接口和模型规范既可以实现。其中,SDK在第二终端2的应用内通过引擎接口获取UI数据。本实施方式中,SDK基本模型可以包括AbstractNode(控件节点的抽象模型)、AbstractDumper(控件节点遍历的抽象模型)、Selector(控件节点定位的抽象模型)以及DefaultMatcher(默认匹配的抽象模型)。其中,AbstractNode中包含父子层级访问方法以及属性枚举方法;进一步的,通过父子层级访问接口方法可以访问到所述控件节点所有关联的对象,实现遍历的功能;通过属性枚举的接口方法可以获取所述节点的名称、路径、文本等属性。AbstractDumper可以采用实现控件节点的dump算法。dump算法通过迭代遍历,将控件节点数据及层级关系,按照想要的数据格式进行导出。dump算法实现步骤可以包括:首先,所有控件节点的层次结构是树状结构,每个节点都是AbstractNode类型;获取根节点,通过根节点中的属性枚举接口方法获取所述节点的所有属性;然后,通过根节点中的父子层级访问方法获取所述节点直接下属的子节点;如果子节点数量不为0,则依次把每个子节点作为一个根节点,重复步骤上一步骤,并储存返回值;最后,按照固定的格式组织好根节点信息和子节点信息。Selector可以基于AbstractNode的方法实现通用的Select算法,Select算法即为遍历所有节点,返回满足给定条件的节点(可能会返回多个节点);进一步的,select算法的核心步骤与dump算法类似,遍历控件时对节点进行条件判定(判定时会用到DefaultMatcher类的方法),如果某节点满足所给的条件,则加入到返回结果中。DefaultMatcher中提供了默认的match方法,所述方法应用在Select算法中,Select算法根据match得到的结果,决定是否要包含此node到返回结果中。
步骤S2032,利用SDK接口获取包括多个UI控件的UI数据。
本实施方式中,所述第二终端2通过利用所述SDK接口获取包括多个UI控件的UI数据,可以对所述UI数据的数据结构进行统一,实现跨引擎进行测试,提高了UI测试方法的适用范围。
步骤S204,将获取的UI数据发送给所述第一终端1。
步骤S205,所述第一终端1接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本。
本实施方式中,所述UI数据包括应用的显示页面的视图控制器、视图、子视图信息,所述对UI数据的操作事件包括对视图控制器、视图、子视图等控件的属性进行设定的操作。
步骤S205“第一终端接收用户对UI数据的操作事件并根据所述操作事件生成UI测试脚本”包括:
(S2051)根据接收的UI数据所包含的应用的显示页面的视图控制器控件、视图控件、子视图控件信息还原出应用的当前页面状态。
(S2052)接收用户对视图控制器控件、视图控件、子视图控件的属性进行设定的操作。
本实施方式中,所述第一终端1在视图控制器控件、视图控件、子视图控件被选中为目标控件的状态下显示编辑栏。用户通过所述目标控件的编辑栏可以修改或设定控件的各个属性的参数。在具体实施方式中,在第一终端1还原出的应用的当前页面中,用户如果发现其中某个控件的显示不符合预期效果,则可以通过调试蒙层来选取所述控件(即待调整的目标控件),以便后续对所述控件的属性信息进行调整。其中,所述选中操作可以为点击操作(如单击操作、双击操作等),框选操作等。本实施方式中,调试蒙层可以是一个半透明的可操作浮层,其覆盖的应用的页面的全部内容可以透过所述调试蒙层显示出来。其中,调试蒙层的透明度可以进行预先设置或修改,以能同时显示出其应用页面的内容和调试蒙层上的内容的效果为佳,本发明实施例对此不作限定。在一具体实施方式中,第一终端1根据在调试蒙层中的选中操作,从多个控件中确定被选中的第一控件,将所述第一控件确定为目标控件。其中,确定第一控件的过程可以为:当第一终端1在调试蒙层中检测到选中操作时,可以确定选中操作对应的坐标区域。其中,当所述选中操作为点击操作时,所述坐标区域可以为用户与第一终端1接触的触点所在区域。第一终端1还在多个控件中获取显示区域包含所述坐标区域的至少一个第二控件。将所述至少一个第二控件中不包含子控件的控件确定为第一控件。具体地,在确定第一控件的过程中,第一终端1可以根据所述坐标区域对应用界面中的多个控件进行遍历,对于所述多个控件中的每个控件,遍历的过程可以包括如下步骤a至步骤d:
(a)判断所述控件的显示区域是否包含所述坐标区域,如果包含执行步骤b,否则执行步骤d;
(b)如果所述控件的显示区域包含所述坐标区域,则判断所述控件是否包含子控件,如果包含则执行步骤c,否则执行步骤d;
(c)如果所述控件包含子控件,则对所述控件的子控件执行步骤a,否则将所述控件确定为第一控件;
(d)按照预设顺序获取所述控件的下一个控件。
其中,预设顺序可以由应用界面上多个控件的排布规则确定,例如,当应用界面的多个控件按照树形结构排列时,则所述预设顺序可以为树形结构的遍历顺序。
(S2053)根据对所述视图控制器控件、所述视图控件、所述子视图控件的属性设定的操作生成UI测试脚本。
在另一实施方式中,所述UI数据包括应用的触摸数据。所述对UI数据的操作事件包括MotionEvent及KeyEvent。其中MotionEvent是指所有在显示有应用的第二终端2的屏幕触摸相关的操作,每个触摸点有三个动作,按下、移动、抬起,多个点一起作用即为多点触控,所有的点的事件集合即为MotionEvent。所述KeyEvent是指按键事件,对应键盘、HOME、BACK等操作,一般有两个动作,按下和抬起。本实施方式中,所述第一终端1根据所述触控操作判断用户在第一终端上对UI数据的模拟操作。例如,当第一触控操作为按下后抬起时,可以判断用户在第一终端对UI数据的第二触控操作为点击一次;当第一触控操作为按下、移动再抬起时,可以判断用户在第一终端1对UI数据的第二触控操作为移动应用。
本实施方式中,步骤S205“第一终端接收用户对UI数据的操作事件并根据所述操作事件生成UI测试脚本”包括:
(S2051’)确定模拟操作对应的UI控件的位置信息。
本实施方式中,确定模拟操作对应的UI控件的位置信息可以包括:将所述模拟操作对应的UI控件的位置信息以预设标识的形式进行标记。
(S2052’)根据所述位置信息以及所述模拟操作生成UI测试脚本。
在一实施方式中,第一终端1还可以在所述预设标识的预设位置添加与所述UI控件对应的注释框,并将所述注释框呈现至所述第一界面上。其中,所述注释框中包括所述UI控件对应的图标、控件类型以及控件名中的多种。
步骤S206,第一终端1将所述UI测试脚本发送给第二终端2的SDK。
步骤S207,所述第二终端2根据所述SDK接收的UI测试脚本对所述应用进行测试。
本实施方式中,当得到上述UI测试脚本后,第二终端2运行所述U测试脚本,以对应用进行调试,从而实现对所述UI控件的自动化测试。
步骤S208,第一终端2根据测试结果生成一测试报告并显示给用户查看。
本发明中第二终端2配置SDK接口并通过SDK接口获取所确定的应用的UI数据,第一终端1从第二终端2接收UI数据及接收用户对UI数据的操作事件并根据所述操作事件生成UI测试脚本,所述第二终端2通过SDK从第一终端1接收UI测试脚本并根据UI测试脚本进行测试。从而避免对测试脚本重新编译造成UI测试时间过长的问题。
实施例2
图3为本发明一实施方式中UI测试装置40的示意图。
在一些实施例中,所述UI测试装置40运行于电子设备中。所述UI测试装置40可以包括多个由程序代码段所组成的功能模块。所述UI测试装置40中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行UI测试的功能。
本实施例中,所述UI测试装置40根据其所执行的功能,可以被划分为多个功能模块。参阅图3所示,所述UI测试装置40可以包括通信建立模块401、应用确定模块402、UI数据获取模块403、UI数据发送模块404、脚本生成模块405、脚本发送模块406、测试模块407、测试报告生产模块408。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。
所述通信建立模块401建立第一终端与第二终端之间的通信连接,其中,所述第一终端安装有开发工具、保存有应用的工程文件,所述第二终端安装有待测的应用。
本实施方式中,应用的开发过程中会通过终端的开发工具创建一个应用的工程文件,所述工程文件包含应用的源代码。通过编译所述应用的源代码可以得到应用的可执行文件,通过运行所述可执行文件来运行应用,以显示应用界面,以便后续对应用进行调试。本发明实施例主要涉及应用界面的调试,也即UI(User Interface,用户界面)调试。在具体实施方式中,所述第一终端1与所述第二终端2连接在同一个局域网内。所述第二终端2安装的多个应用集成有SDK(Software Development Kit,软件工具开发包)。所述第一终端1与所述第二终端2的SDK通信连接。本实施方式中,基于所述第一终端1上的浏览器地址栏中输入的所述第二终端2的IP地址,建立所述第一终端1与所述第二终端2的SDK通信连接。也即,在所述第一终端1安装的浏览器的地址栏中输入所述第二终端2的IP地址后,所述第一终端1可与所述第二终端2的SDK相通信。本发明提供的UI测试方法采用应用的真机调试。其中,应用的真机的调试是指直接在第二终端2上运行应用的可执行文件,并显示应用界面以便测试。当采用真机调试时,第二终端2可从与其相通信连接的第一终端1获取应用的可执行文件,进而运行应用进行调试。
所述应用确定模块402用于控制第二终端2通过用户界面发出调试指令,并确定与所述调试指令对应的应用。
在一实施方式中,所述应用确定模块402在所述第二终端2的用户界面上显示有指令调试虚拟按钮,当用户操作所述指令调试虚拟按钮时,所述所述应用确定模块402控制所述第二终端2发出所述调试指令。在另一实施方式中,所述应用确定模块402在所述第二终端2的用户界面上显示有调试指令编辑栏位,所述调试指令编辑栏位用于接收用户输入的调试指令并在检测到用户完成调试指令的编辑时发出所述调试指令。
所述UI数据获取模块403用于控制第二终端2配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据。
本实施方式中,所述应用的UI数据包括应用当前显示页面的视图控制器控件、视图控件及子视图控件信息。在一具体实施方式中,所述UI数据获取模块403控制第二终端2配置包括SDK接口的SDK标准,及利用SDK接口获取包括多个UI控件的UI数据。
本实施方式中,所述UI数据获取模块403根据SDK标准,使得所述SDK接口以及SDK基本模型可以在不同的引擎上做相应的实现,不同的编程语言只需要遵循相同的接口和模型规范既可以实现。其中,SDK在第二终端2的应用内通过引擎接口获取UI数据。本实施方式中,SDK基本模型可以包括AbstractNode(控件节点的抽象模型)、AbstractDumper(控件节点遍历的抽象模型)、Selector(控件节点定位的抽象模型)以及DefaultMatcher(默认匹配的抽象模型)。其中,AbstractNode中包含父子层级访问方法以及属性枚举方法;进一步的,通过父子层级访问接口方法可以访问到所述控件节点所有关联的对象,实现遍历的功能;通过属性枚举的接口方法可以获取所述节点的名称、路径、文本等属性。AbstractDumper可以采用实现控件节点的dump算法。dump算法通过迭代遍历,将控件节点数据及层级关系,按照想要的数据格式进行导出。dump算法实现步骤可以包括:首先,所有控件节点的层次结构是树状结构,每个节点都是AbstractNode类型;获取根节点,通过根节点中的属性枚举接口方法获取所述节点的所有属性;然后,通过根节点中的父子层级访问方法获取所述节点直接下属的子节点;如果子节点数量不为0,则依次把每个子节点作为一个根节点,重复步骤上一步骤,并储存返回值;最后,按照固定的格式组织好根节点信息和子节点信息。Selector可以基于AbstractNode的方法实现通用的Select算法,Select算法即为遍历所有节点,返回满足给定条件的节点(可能会返回多个节点);进一步的,select算法的核心步骤与dump算法类似,遍历控件时对节点进行条件判定(判定时会用到DefaultMatcher类的方法),如果某节点满足所给的条件,则加入到返回结果中。DefaultMatcher中提供了默认的match方法,所述方法应用在Select算法中,Select算法根据match得到的结果,决定是否要包含此node到返回结果中。
本实施方式中,所述UI数据获取模块403控制第二终端2通过利用所述SDK接口获取包括多个UI控件的UI数据,可以对所述UI数据的数据结构进行统一,实现跨引擎进行测试,提高了UI测试方法的适用范围。
所述UI数据发送模块404用于控制所述第二终端2将获取的UI数据发送给所述第一终端1。
所述脚本生成模块405用于控制第一终端1接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本。
本实施方式中,所述UI数据包括应用的显示页面的视图控制器、视图、子视图信息,所述对UI数据的操作事件包括对视图控制器、视图、子视图等控件的属性进行设定的操作。请参考图4,所示为本发明一实施方式中脚本生成模块405的结构示意图。所述脚本生成模块405包括页面状态还原子模块4051、接收子模块4052、测试脚本生成子模块4053。
所述页面状态还原子模块4051用于根据接收的UI数据所包含的应用的显示页面的视图控制器控件、视图控件、子视图控件信息还原出应用的当前页面状态。
所述接收子模块4052用于接收用户对视图控制器控件、视图控件、子视图控件的属性进行设定的操作。
本实施方式中,所述接收子模块4052在视图控制器控件、视图控件、子视图控件被选中为目标控件的状态下显示编辑栏。用户通过所述目标控件的编辑栏可以修改或设定控件的各个属性的参数。在具体实施方式中,在所述页面状态还原子模块4051还原出的应用的当前页面中,用户如果发现其中某个控件的显示不符合预期效果,则可以通过调试蒙层来选取所述控件(即待调整的目标控件),以便后续对所述控件的属性信息进行调整。其中,所述选中操作可以为点击操作(如单击操作、双击操作等),框选操作等。本实施方式中,调试蒙层可以是一个半透明的可操作浮层,其覆盖的应用的页面的全部内容可以透过所述调试蒙层显示出来。其中,调试蒙层的透明度可以进行预先设置或修改,以能同时显示出其应用页面的内容和调试蒙层上的内容的效果为佳,本发明实施例对此不作限定。在一具体实施方式中,所述接收子模块4052根据在调试蒙层中的选中操作,从多个控件中确定被选中的第一控件,将所述第一控件确定为目标控件。其中,确定第一控件的过程可以为:当第一终端1在调试蒙层中检测到选中操作时,可以确定选中操作对应的坐标区域。其中,当所述选中操作为点击操作时,所述坐标区域可以为用户与第一终端1接触的触点所在区域。所述接收子模块4052还在多个控件中获取显示区域包含所述坐标区域的至少一个第二控件。将所述至少一个第二控件中不包含子控件的控件确定为第一控件。具体地,在确定第一控件的过程中,所述接收子模块4052可以根据所述坐标区域对应用界面中的多个控件进行遍历,对于所述多个控件中的每个控件,遍历的过程可以包括如下步骤a至步骤d:
(a)判断所述控件的显示区域是否包含所述坐标区域,如果包含执行步骤b,否则执行步骤d;
(b)如果所述控件的显示区域包含所述坐标区域,则判断所述控件是否包含子控件,如果包含则执行步骤c,否则执行步骤d;
(c)如果所述控件包含子控件,则对所述控件的子控件执行步骤a,否则将所述控件确定为第一控件;
(d)按照预设顺序获取所述控件的下一个控件。
其中,预设顺序可以由应用界面上多个控件的排布规则确定,例如,当应用界面的多个控件按照树形结构排列时,则所述预设顺序可以为树形结构的遍历顺序。
测试脚本生成子模块4053根据对所述视图控制器控件、所述视图控件、所述子视图控件的属性设定的操作生成UI测试脚本。
在另一实施方式中,所述UI数据包括应用的触摸数据。所述对UI数据的操作事件包括MotionEvent及KeyEvent。其中MotionEvent是指所有在显示有应用的第二终端2的屏幕触摸相关的操作,每个触摸点有三个动作,按下、移动、抬起,多个点一起作用即为多点触控,所有的点的事件集合即为MotionEvent。所述KeyEvent是指按键事件,对应键盘、HOME、BACK等操作,一般有两个动作,按下和抬起。本实施方式中,所述第一终端1根据所述触控操作判断用户在第一终端上对UI数据的模拟操作。例如,当第一触控操作为按下后抬起时,可以判断用户在第一终端对UI数据的第二触控操作为点击一次;当第一触控操作为按下、移动再抬起时,可以判断用户在第一终端1对UI数据的第二触控操作为移动应用。
在另一实施方式中,所述脚本生成模块405还用于确定模拟操作对应的UI控件的位置信息,及根据所述位置信息以及所述模拟操作生成UI测试脚本。
在一实施方式中,确定模拟操作对应的UI控件的位置信息可以包括:将所述模拟操作对应的UI控件的位置信息以预设标识的形式进行标记。
在一实施方式中,所述脚本生成模块405还可以在所述预设标识的预设位置添加与所述UI控件对应的注释框,并将所述注释框呈现至所述第一界面上。其中,所述注释框中包括所述UI控件对应的图标、控件类型以及控件名中的多种。
所述脚本发送模块406用于控制所述第一终端1将所述UI测试脚本发送给第二终端2的SDK。
所述测试模块407用于控制所述第二终端2根据所述SDK接收的UI测试脚本对所述应用进行测试。
本实施方式中,当得到上述UI测试脚本后,所述测试模块407控制第二终端2运行所述U测试脚本,以对应用进行调试,从而实现对所述UI控件的自动化测试。
所述测试报告生产模块408用于控制所述第一终端2根据测试结果生成一测试报告并显示给用户查看。
本发明中第二终端2配置SDK接口并通过SDK接口获取所确定的应用的UI数据,第一终端1从第二终端2接收UI数据及接收用户对UI数据的操作事件并根据所述操作事件生成UI测试脚本,所述第二终端2通过SDK从第一终端1接收UI测试脚本并根据UI测试脚本进行测试。从而避免对测试脚本重新编译造成UI测试时间过长的问题。
实施例三
图5为本发明电子设备7较佳实施例的示意图。
所述电子设备7包括存储器71、处理器72以及存储在所述存储器71中并可在所述处理器72上运行的计算机程序73。所述处理器72执行所述计算机程序73时实现上述UI测试方法实施例中的步骤,例如图2所示的步骤S201~S208。或者,所述处理器72执行所述计算机程序73时实现上述UI测试装置实施例中各模块/单元的功能,例如图4中的模块401~408。
示例性的,所述计算机程序73可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器72执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述计算机程序73在所述电子设备7中的执行过程。例如,所述计算机程序73可以被分割成图4中的通信建立模块401、应用确定模块402、UI数据获取模块403、UI数据发送模块404、脚本生成模块405、脚本发送模块406、测试模块407、测试报告生产模块408,各模块具体功能参见实施例二。
所述电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图仅仅是电子设备7的示例,并不构成对电子设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备7还可以包括输入输出设备、网络接入设备、总线等。
所称处理器72可以是中央处理模块(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器72也可以是任何常规的处理器等,所述处理器72是所述电子设备7的控制中心,利用各种接口和线路连接整个电子设备7的各个部分。
所述存储器71可用于存储所述计算机程序73和/或模块/单元,所述处理器72通过运行或执行存储在所述存储器71内的计算机程序和/或模块/单元,以及调用存储在存储器71内的数据,实现所述计电子设备7的各种功能。所述存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备7的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述电子设备7集成的模块/单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应所述理解到,所揭露的电子设备和方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能模块可以集成在相同处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤,单数不排除复数。电子设备权利要求中陈述的多个模块或电子设备也可以由同一个模块或电子设备通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种UI测试方法,其特征在于,所述方法包括:
建立第一终端与第二终端之间的通信连接;
所述第二终端通过用户界面发出调试指令,并确定与所述调试指令对应的应用;
所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据;
将获取的UI数据发送给所述第一终端;
所述第一终端接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本;
所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK;及所述第二终端根据所述SDK接收的UI测试脚本对所述应用进行测试。
2.如权利要求1所述的UI测试方法,其特征在于,所述建立第一终端与第二终端之间的通信连接包括:
基于所述第一终端上的浏览器地址栏中输入的所述第二终端的IP地址,建立所述第一终端与所述第二终端的SDK通信连接。
3.如权利要求1所述的UI测试方法,其特征在于,所述应用的UI数据包括所述应用的当前显示页面的视图控制器控件、视图控件及子视图控件信息。
4.如权利要求3所述的UI测试方法,其特征在于,所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据包括:
配置SDK标准,其中,所述SDK标准包括通用SDK接口;及
利用所述SDK接口获取包括多个UI控件的UI数据。
5.如权利要求3所述的UI测试方法,其特征在于,所述对UI数据的操作事件包括对所述视图控制器控件、视图控件、子视图控件的属性进行设定的操作。
6.如权利要求5所述的UI测试方法,其特征在于,所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK包括:
根据接收的UI数据所包含的应用的显示页面的视图控制器、视图、子视图信息还原出所述应用的当前页面状态;
接收用户对所述视图控制器控件、所述视图控件、所述子视图控件的属性进行设定的操作;及
根据对所述视图控制器控件、所述视图控件、所述子视图控件的属性设定的操作生成UI测试脚本。
7.如权利要求1所述的UI测试方法,其特征在于,所述方法还包括:
所述第一终端根据测试结果生成一测试报告并显示给用户查看。
8.一种UI测试装置,其特征在于,所述装置包括:
通信建立模块,用于建立第一终端与第二终端之间的通信连接;
应用确定模块,用于控制所述第二终端通过用户界面发出调试指令,并确定与所述调试指令对应的应用;
UI数据获取模块,用于控制所述第二终端配置SDK接口并通过所述SDK接口获取所确定的应用的UI数据;
UI数据发送模块,用于控制所述第二终端将获取的UI数据发送给所述第一终端;
脚本生成模块,用于控制所述第一终端接收所述UI数据及接收用户对所述UI数据的操作事件并根据所述操作事件生成UI测试脚本;
脚本发送模块,用于控制所述第一终端将所述UI测试脚本发送给所述第二终端的所述SDK;及
测试模块,用于控制所述第二终端根据所述SDK接收的UI测试脚本对所述应用进行测试。
9.一种电子设备,其特征在于:所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7中任一项所述UI测试方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述UI测试方法。
CN201811537815.8A 2018-12-15 2018-12-15 Ui测试方法、装置、电子设备及计算机可读存储介质 Active CN109840201B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811537815.8A CN109840201B (zh) 2018-12-15 2018-12-15 Ui测试方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811537815.8A CN109840201B (zh) 2018-12-15 2018-12-15 Ui测试方法、装置、电子设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109840201A true CN109840201A (zh) 2019-06-04
CN109840201B CN109840201B (zh) 2023-07-18

Family

ID=66883252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811537815.8A Active CN109840201B (zh) 2018-12-15 2018-12-15 Ui测试方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109840201B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258915A (zh) * 2020-02-27 2020-06-09 成都乐创自动化技术股份有限公司 一种针对plc程序进行自动化单元测试的方法
CN112269746A (zh) * 2020-11-10 2021-01-26 京东数科海益信息科技有限公司 自动化测试方法及相关设备
WO2022111529A1 (zh) * 2020-11-24 2022-06-02 华为技术有限公司 一种应用程序的调试方法及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150052503A1 (en) * 2013-08-16 2015-02-19 International Business Machines Corporation Automatically Capturing User Interactions And Evaluating User Interfaces In Software Programs Using Field Testing
CN105988934A (zh) * 2016-02-01 2016-10-05 腾讯科技(深圳)有限公司 手游自动化检测方法及装置
CN107038112A (zh) * 2016-10-13 2017-08-11 腾讯科技(北京)有限公司 应用界面的调试方法及装置
CN107193750A (zh) * 2017-07-04 2017-09-22 北京云测信息技术有限公司 一种脚本录制方法和装置
CN107517248A (zh) * 2017-08-09 2017-12-26 苏州驰声信息科技有限公司 基于sdk的网络连接方法及装置
CN107766226A (zh) * 2016-08-18 2018-03-06 北京金山云网络技术有限公司 一种测试方法及装置
CN108170611A (zh) * 2018-01-23 2018-06-15 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN108280026A (zh) * 2018-01-23 2018-07-13 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN108763086A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 基于远程真机的脚本录制方法、终端及计算机可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150052503A1 (en) * 2013-08-16 2015-02-19 International Business Machines Corporation Automatically Capturing User Interactions And Evaluating User Interfaces In Software Programs Using Field Testing
CN105988934A (zh) * 2016-02-01 2016-10-05 腾讯科技(深圳)有限公司 手游自动化检测方法及装置
CN107766226A (zh) * 2016-08-18 2018-03-06 北京金山云网络技术有限公司 一种测试方法及装置
CN107038112A (zh) * 2016-10-13 2017-08-11 腾讯科技(北京)有限公司 应用界面的调试方法及装置
CN107193750A (zh) * 2017-07-04 2017-09-22 北京云测信息技术有限公司 一种脚本录制方法和装置
CN107517248A (zh) * 2017-08-09 2017-12-26 苏州驰声信息科技有限公司 基于sdk的网络连接方法及装置
CN108170611A (zh) * 2018-01-23 2018-06-15 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN108280026A (zh) * 2018-01-23 2018-07-13 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN108763086A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 基于远程真机的脚本录制方法、终端及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
T. ROBAL等: "Ontology Design for Automatic Evaluation of Web User Interface Usability", 《2017 PORTLAND INTERNATIONAL CONFERENCE ON MANAGEMENT OF ENGINEERING AND TECHNOLOGY (PICMET)》 *
张丽丽: "Android应用程序的UI自动化测试工具的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258915A (zh) * 2020-02-27 2020-06-09 成都乐创自动化技术股份有限公司 一种针对plc程序进行自动化单元测试的方法
CN112269746A (zh) * 2020-11-10 2021-01-26 京东数科海益信息科技有限公司 自动化测试方法及相关设备
WO2022111529A1 (zh) * 2020-11-24 2022-06-02 华为技术有限公司 一种应用程序的调试方法及电子设备

Also Published As

Publication number Publication date
CN109840201B (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
CN106095666B (zh) 游戏自动化测试方法及相关装置
US11189292B2 (en) Determining a target device for voice command interaction
Calvary et al. A unifying reference framework for the development of plastic user interfaces
CN108280026A (zh) 自动化测试方法及装置、存储介质、电子设备
CN108170611A (zh) 自动化测试方法及装置、存储介质、电子设备
CN104007957B (zh) 在编辑期间显示实时数据的改进图形用户界面编辑器
JP2018536952A (ja) スマートデバイスを制御するための方法および装置、ならびにコンピュータ記憶媒体
CN109840201A (zh) Ui测试方法、装置、电子设备及计算机可读存储介质
US20210089279A1 (en) Code Generation And Simulation For Graphical Programming
CN111428166A (zh) 页面配置方法、页面元素替换方法、装置、设备及介质
CN108334439A (zh) 一种压力测试方法、装置、设备和存储介质
CN105955888A (zh) 一种页面调试预览方法及系统
CN108469979A (zh) 一种页面跳转方法、装置、服务器和存储介质
CN106155699B (zh) 一种后台进程的管理方法及移动终端
CN110147317A (zh) 代码测试方法及装置、电子设备和存储介质
CN107301039A (zh) 原型制作方法及其装置
CN109522075A (zh) 数据可视化展示方法、装置、电子设备及计算机可读介质
CN108648279A (zh) 房屋立体化虚拟带看方法、装置、移动终端和存储介质
CN104267987B (zh) 一种应用程序app更新的检测方法、检测装置以及终端
CN110347458A (zh) 一种按钮控件展示方法、装置、存储介质及交互智能平板
CN105975367A (zh) 移动设备的测试方法和装置
CN104636152B (zh) 一种基于浮层的应用程序调用方法和装置
CN107153495B (zh) 一种建立网元间业务链路的方法和装置
CN103593188B (zh) 一种用于仪器所见即所得菜单的管理系统及管理方法
CN107506494A (zh) 文件处理方法、移动终端及计算机可读存储介质

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