具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一手势测试脚本称为第二手势测试脚本,且类似地,可将第二手势测试脚本称为第二手势测试脚本。
图1为一个实施例中提供的手势测试方法的实施环境图,如图1所示,在该实施环境中,包括计算机设备110以及终端120。
计算机设备110为测试设备,例如为测试人员使用的电脑等计算机设备,计算机设备110上安装有自动化测试工具,例如可以为Appium。终端120上安装有需要进行手势测试的被测应用,当需要测试时,测试人员可以在计算机设备110发出手势测试请求,该手势测试请求中携带有手势标识,计算机设备110接收该手势测试请求,根据手势标识获取计算机设备110中与手势标识对应的手势测试脚本。然后利用自动化测试工具执行该手势测试脚本,对终端120上的被测应用进行测试,并获取手势测试脚本对应的手势测试结果。
需要说明的是,终端120以及计算机设备110可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。计算机设备110以及终端120可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者其他通讯连接方式进行连接,本发明在此不做限制。
图2为一个实施例中计算机设备的内部结构示意图。如图2所示,该计算机设备包括通过***总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作***、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种手势测试方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种手势测试方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图3所示,在一个实施例中,提出了一种手势测试方法,该手势测试方法可以应用于上述的计算机设备110中,具体可以包括以下步骤:
步骤302,接收手势测试请求,手势测试请求携带有手势标识;
在本实施例中,手势标识用于标识手势,可以是由文字,数字等字符组成,也可以是其他可以标识手势的标识。
在一些实施例中,手势标识可以为一个或者为多个。当手势标识为多个时,在获取手势标识的同时,也可以获取手势标识对应的手势测试脚本的执行顺序。例如,测试人员在输入第一手势标识以及第二手势标识时,可以输入它们对应的手势测试脚本的执行顺序。计算机设备110获取第一手势标识、第二手势标识以及它们对应的手势测试脚本的执行顺序。
步骤304,根据手势标识获取手势测试脚本,手势测试脚本是根据输入手势的控件信息序列以及手势测试脚本生成模板生成的;
在本发明实施例中,可以提前生成输入手势对应的手势测试脚本并存储,当获取到手势标识时,根据手势标识直接获取对应的手势测试脚本。也可以在获取到手势标识时,根据手势标识获取对应的控件信息序列,再根据控件信息序列以及手势测试脚本生成模板生成手势测试脚本。
手势测试脚本生成模板是根据手势测试时执行的测试步骤预先编写的,将手势的路径分解为依次连接的多个控件(初始控件、N个中间控件(N=0,1,2…)终止控件)和相邻控件之间的连线。因此手势测试可分解为以下测试步骤:针对初始控件进行点击的第一个测试步骤,以及从该初始控件开始,依次在每个相邻控件之间进行滑动的一个或多个测试步骤。故手势测试中,测试步骤中所执行的动作及顺序是固定的,只是手势经过的控件不同。因此,可以根据分解的手势测试步骤生成手势测试脚本生成模板。当获取到手势的控件信息序列时,输入到该手势测试脚本生成模板中,便可以生成手势测试脚本。
控件信息为标记手势所经过的控件的标识,根据控件信息可以找到对应的控件,控件信息例如可为控件的Xpath路径。控件信息序列是根据输入手势生成的,用户可以在拥有触摸屏的设备上输入想要测试的手势,计算机设备110通过获取输入手势经过的控件获取控件信息以及经过的控件的顺序,生成控件信息序列。例如,将输入手势的所有控件信息组成一个数组。
在一些实施例中,手势测试脚本生成模板可以是已经利用脚本语言编译好的代码模板,在该代码模板中设置有需要填充的变量,变量为手势的控件信息。当然,手势测试脚本生成模板也可以是其他预制格式的格式模板,例如表格化模板,在该表格化模板设置了第一个测试步骤为点击,第二个测试步骤为滑动,表格化模板还设置有每个步骤对应控件信息的填充位置。当获取到输入手势的控件信息序列时,输入到该手势测试脚本生成模板中,就可以根据预设好的编译规程利用脚本语言生成手势测试脚本。其中,一个示例性的表格化模板的用户界面可以如表1所示,其中的控件信息列即为控件信息的填充位置,当获取到控件信息序列时,将控件信息按顺序填充。
表1:
步骤 |
控件类型 |
查找方式 |
控件信息 |
动作类型 |
1 |
Native |
Xpath |
|
Click |
2 |
Native |
Xpath |
|
Move |
3 |
Native |
Xpath |
|
Move |
4 |
Native |
Xpath |
|
Move |
在一些实施例中,当手势标识为多个时,以手势标识包括第一手势标识以及第二手势标识为例,则根据手势标识获取手势测试脚本的步骤具体包括:根据第一手势标识获取第一手势测试脚本,以及,根据第二手势标识获取第二手势测试脚本;
例如,可以在根据第一手势标识获取第一手势测试脚本的同时,根据第二手势标识获取第二手势测试脚本。当然也可以先获取第二手势测试脚本再获取第一手势测试脚本。本发明实施例对第二手势测试脚本以及第一手势测试脚本的获取顺序不做限制。
步骤306,根据手势测试脚本对被测应用进行手势测试;
当获取到手势测试脚本后,根据手势测试脚本的动作指令序列解析成动作指令,将动作指令发送到被测应用中,进行手势测试,以使被测应用根据动作指令执行相应的操作,模拟该输入手势的轨迹。
手势测试脚本中包括动作指令序列,以在执行该手势测试脚本时,可以在被测应用上模拟输入手势的移动轨迹,动作指令序列依次包括对手势的起始控件调用点击事件函数进行操作的测试指令,以及在手势的相邻控件之间依次调用滑动事件函数进行操作的测试指令。在测试指令中,可以用控件标识表示控件,控件标识可为控件信息,当然也可以为用于标识控件信息的其他标识,只要根据该控件标识能够获取到控件信息即可。
例如,手势的起始控件为A、中间控件依次为B、C,终点控件为D,则控件位置信息序列为控件A、B、C以及D的控件信息以及根据手势经过这几个控件的顺序进行排序组成的序列。测试指令以及其执行顺序依次为针对起始控件A调用点击事件函数进行操作、从控件A到控件B调用滑动事件函数进行操作、从控件B到控件C调用滑动事件函数进行操作、从控件C到控件D调用滑动事件函数进行操作。
步骤308,获取手势测试脚本对应的手势测试结果。
当手势测试完成后,获取该手势测试脚本对应的手势测试结果,以对被测应用的测试结果进行分析或者评估等。
图4示出了在一个实施例中,当手势测试脚本包括第一手势测试脚本以及第二手势测试脚本,将第一手势测试脚本以及第二手势测试脚本在一个测试任务中执行时,步骤S306即根据手势测试脚本对被测应用进行手势测试的步骤的实现流程图,具体可以包括以下步骤:
S402,调用第一手势测试脚本对被测应用进行手势测试;
调用的第一手势测试脚本可以是多个手势测试脚本中随机选取的一个。在一些实施例中,当用户输入了手势测试脚本的执行顺序时,调用执行顺序为第一的手势测试脚本作为第一手势测试脚本。
S404,当第一手势测试脚本测试完成后,向被测应用发送初始化指令,以使被测应用进行初始化;
初始化指令指可以将被测应用还原到可以重新进行手势测试状态的指令。例如,对微信的解锁手势密码进行测试时,发送初始化命令,使微信重新进行启动,进入输入解锁手势密码的状态。
S406,当被测应用的等待初始化时间到达时,调用第二手势测试脚本对被测应用进行手势测试。
等待初始化时间是指自发送初始化指令起算的一段时间。为预设的一段时间。当被测应用不同时,被测应用的等待初始化时间可以不同,具体可以根据被测应用的启动时间进行设定。
可以理解,若手势测试任务中还包括第三手势测试脚本时,当第二手势测试脚本测试完成后,可以再向被测应用发送初始化指令,并在等待初始化时间到达时,调用第三手势测试脚本进行测试。若还包括第四手势测试脚本、第五手势测试脚本,则可以继续重复当前测试脚本测试完成后,发送初始化指令,等待初始化时间到达时调用下一手势测试脚本进行手势测试的步骤。
图5示出了一个实施例中,步骤S308即获取手势测试脚本对应的手势测试结果的步骤的实现流程图,具体可以包括以下步骤:
S502,检测被测应用中是否出现预设的首页关键词,若是,确定手势测试结果为手势解锁成功,若否,确定手势测试结果为手势解锁失败;
可以查询被测应用中是否出现与首页有关的首页关键词,例如“首页”一词。当然,也可以根据被测应用首页的特点预先设置其他首页关键词。检测时间可以根据实际需要设定。当检测结果为出现了首页关键词时,则表示被测应用进入了启动页面,当前手势测试脚本对应的手势与预设的手势解锁密码一致,执行结果为手势解锁成功;否则,执行结果为手势解锁失败。
在一些实施例中,可以以轮询的方式进行检测。优选地,可以在手势测试开始后的预设时间后再开始进行轮询,以减少轮询的次数。该预设时间可以根据实际设定。
S504,获取手势测试脚本对应的手势测试结果。
当确定手势测试结果后,计算机设备获取该手势测试结果,以对手势测试结果进行分析或者评价。
图6示出了一个实施例中手势测试方法的实现流程图,具体可以包括以下步骤:
S602,获取输入手势的控件信息;
在本发明实施例中,用户可以在具有触摸屏的触摸终端上输入想要测试的输入手势。该触摸终端可以为计算机设备110,也可以为其他触摸终端。优选地,手势是在被测应用上输入的。当在其他触摸终端中输入时,计算机与触摸终端进行通信连接,获取输入手势的控件信息。控件信息为标记手势所经过的控件的标识,根据控件信息可以找到其对应的控件,例如可为控件的Xpath路径。
S604,根据控件信息以及输入手势经过控件的顺序生成控件信息序列;
在本发明实施例中,获取到输入手势经过的每个控件的控件信息后,根据输入手势经过控件的顺序生成控件信息序列。
以图7为例,用户在手机上的手势为从左上角的控件滑动到右小角的控件,经过七个控件,假设这七个控件信息依次为Xpath1、Xpath2、Xpath3、Xpath4、Xpath5、Xpath6、Xpath7,则可以将这七个控件信息组成一个数组,顺序依次为Xpath1、Xpath2、Xpath3、Xpath4、Xpath5、Xpath6、Xpath7。
S606,根据控件信息序列以及手势测试脚本生成模板生成手势测试脚本。
在本发明实施例中,将控件信息序列输入到预设的手势测试脚本生成模板中,生成手势测试脚本。手势测试脚本中包括动作指令序列,以在执行该手势测试脚本时,可以在被测应用上模拟输入手势的移动轨迹。动作指令序列依次包括对手势的起始控件调用点击事件函数进行操作的测试指令,以及在手势的相邻控件之间依次调用滑动事件函数进行操作的测试指令。在测试指令中,可以用控件的Xpath路径表示控件,当然也可以为用于标识控件的其他控件信息,只要根据该控件信息能够获取到对应的控件即可。
手势测试脚本生成模板是根据手势测试时执行的测试步骤预先编写的,将手势分解为依次连接的多个控件(初始控件、N个中间控件(N=0,1,2…)、终止控件)和相邻控件之间的连线。因此可以将手势测试分解为以下测试步骤:针对初始控件进行点击的第一个测试步骤,以及从该初始控件开始,在每个相邻控件之间依次进行滑动的一个或多个测试步骤。故手势测试中,测试步骤中的所执行的动作及顺序是固定的,只是手势经过的控件不同。因此,可以根据分解的手势测试步骤生成手势测试脚本生成模板。当获取到手势的控件信息序列时,输入到该手势测试脚本生成模板中,便可以生成手势测试脚本。
在一些实施例中,手势测试脚本生成模板可以是已经利用脚本语言编译好的代码模板,在该代码模板中设置有需要填充的变量,变量即为手势的控件信息。当然,手势测试脚本生成模板也可以是其他预制格式的格式模板,例如表格化模板,在该表格化模板设置了第一个测试步骤为点击,第二个测试步骤为滑动,还设置有每个步骤对应控件信息的填充位置。当获取到输入手势的控件信息序列时,输入到该手势测试脚本生成模板中,就可以根据预设好的编译规程利用脚本语言生成手势测试脚本。
例如,再以输入手势为图7的手势为例,测试脚本中的动作指令序列依次包括针对左上角的控件调用点击事件函数进行操作、在左上角的控件到第二个控件之间调用滑动事件函数进行操作、在第二个控件到第三个控件之间调用滑动事件函数进行操作、在第三个控件到第四个控件之间调用滑动事件函数进行操作、在第四个控件到第五个控件之间调用滑动事件函数进行操作、在第五个控件到第六个控件之间调用滑动事件函数进行操作、在第六个控件到第七个控件(即右下角的控件)之间调用滑动事件函数进行操作。
步骤608,接收手势测试请求,手势测试请求携带有输入手势的手势标识;
在本实施例中,手势标识用于标识手势,可以是由文字,数字等字符组成,也可以是其他可以标识手势的标识。
步骤610,根据手势标识获取输入手势的手势测试脚本;
步骤612,根据手势测试脚本对被测应用进行手势测试;
当获取到手势测试脚本后,解析手势测试脚本中的测试步骤,将该测试步骤发送到被测应用中进行手势测试。
在一些实施例中,控件在测试脚本中是控件信息进行标识的,而在被测应用中是以坐标点进行标识的,因此在将测试步骤发送给被测应用进行测试时,还需要将控件信息解析为被测应用中的坐标点。例如,将Xpath路径解析为具体的坐标点。
步骤614,获取手势测试脚本对应的手势测试结果。
当手势测试完成后,获取该手势测试脚本对应的手势测试结果,以对被测应用的测试结果进行分析或者评估等。
如图8所示,在一个实施例中,提供了一种手势测试装置,该手势测试装置可以集成于上述的计算机设备110中,具体可以包括测试请求接收单元802、脚本获取单元804、手势测试单元806以及测试结果获取单元808。
测试请求接收单元802,用于接收手势测试请求,该手势测试请求携带有手势标识;
脚本获取单元804,用于根据手势标识获取手势测试脚本;
手势测试单元806,用于根据手势测试脚本对被测应用进行手势测试;
测试结果获取单元808,用于获取手势测试脚本对应的手势测试结果。
在一个实施例中,手势标识包括第一手势标识以及第二手势标识,脚本获取单元804具体用于根据第一手势标识获取第一手势测试脚本,以及,根据第二手势标识获取第二手势测试脚本;
如图9所示,在一个实施例中,当手势测试脚本包括第一手势测试脚本以及第二手势测试脚本,手势测试单元806包括第一脚本调用模块806A、初始化指令发送模块806B以及第二脚本调用模块806C。
第一脚本调用模块806A,用于调用第一手势测试脚本对被测应用进行手势测试;
初始化指令发送模块806B,当第一手势测试脚本测试完成后,向被测应用发送初始化指令,以使被测应用进行初始化;
第二脚本调用模块806C,当被测应用的等待初始化时间到达时,调用第二手势测试脚本对被测应用进行手势测试。
如图10所示,在一个实施例中,测试结果获取单元808包括关键词检测模块808A以及测试结果获取模块808B。
关键词检测模块808A,用于检测被测应用中是否出现预设的首页关键词,若是,确定手势测试结果为手势解锁成功,若否,确定手势测试结果为手势解锁失败;
可以查询被测应用中是否出现与首页有关的首页关键词,例如“首页”一词。当然,也可以根据被测应用首页的特点预先设置其他首页关键词。检测时间可以根据实际需要设定。当检测结果为出现了首页关键词时,则表示被测应用进入了启动页面,当前手势测试脚本对应的手势与预设的手势解锁密码一致,执行结果为手势解锁成功;否则,执行结果为手势解锁失败。
在一些实施例中,可以以轮询的方式进行检测。优选地,可以在手势测试开始后的预设时间后再开始进行轮询,以减少轮询的次数。该预设时间可以根据实际需要设定。
测试结果获取模块808B,用于获取手势测试脚本对应的手势测试结果。
当确定手势测试结果后,计算机设备获取该手势测试结果,以对手势测试结果进行分析或者评价。
如图11所示,手势测试装置还可以包括控件信息获取单元1102、控件信息序列生成单元1104以及测试脚本生成单元1106。
控件信息获取单元1102,用于获取输入手势的控件信息;
控件信息序列生成单元1104,用于根据输入手势的控件信息以及输入手势经过控件的顺序生成控件信息序列;
测试脚本生成单元1106,用于根据控件信息序列以及手势测试脚本生成模板生成手势测试脚本。
在一个实施例中,提出了一种计算机设备,计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收手势测试请求,手势测试请求携带有手势标识;根据手势标识获取手势测试脚本,其中,手势测试脚本根据输入手势的控件信息序列以及手势测试脚本生成模板生成;根据手势测试脚本对被测应用进行手势测试,手势测试脚本包括用于模拟输入手势的动作指令序列,动作指令序列依次包括对输入手势的起始控件调用点击事件函数进行操作的测试指令以及在输入手势的相邻控件之间依次调用滑动事件函数进行操作的测试指令;获取手势测试脚本对应的手势测试结果。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:获取输入手势的控件信息;根据输入手势的控件信息以及输入手势经过控件的顺序生成控件信息序列;根据控件信息序列以及手势测试脚本生成模板生成手势测试脚本。
在一个实施例中,手势标识包括第一手势标识以及第二手势标识,处理器所执行的根据手势标识获取手势测试脚本的步骤包括:根据第一手势标识获取第一手势测试脚本,以及,根据第二手势标识获取第二手势测试脚本;处理器所执行的根据手势测试脚本对被测应用进行手势测试的步骤包括:调用第一手势测试脚本对被测应用进行手势测试;当第一手势测试脚本测试完成后,向被测应用发送初始化指令,以使被测应用进行初始化;当被测应用的等待初始化时间到达时,调用第二手势测试脚本对被测应用进行手势测试。
在一个实施例中,处理器所执行的获取手势测试脚本对应的手势测试结果的步骤包括:检测被测应用中是否出现预设的首页关键词,若是,确定手势测试结果为手势解锁成功,若否,确定手势测试结果为手势解锁失败;获取手势测试脚本对应的手势测试结果。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:接收手势测试请求,手势测试请求携带有手势标识;根据手势标识获取手势测试脚本,其中,手势测试脚本根据输入手势的控件信息序列以及手势测试脚本生成模板生成;根据手势测试脚本对被测应用进行手势测试,手势测试脚本包括用于模拟输入手势的动作指令序列,动作指令序列依次包括对输入手势的起始控件调用点击事件函数进行操作的测试指令以及在输入手势的相邻控件之间依次调用滑动事件函数进行操作的测试指令;获取手势测试脚本对应的手势测试结果。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:获取输入手势的控件信息;根据输入手势的控件信息以及输入手势经过控件的顺序生成控件信息序列;根据控件信息序列以及手势测试脚本生成模板生成手势测试脚本。
在一个实施例中,手势标识包括第一手势标识以及第二手势标识,处理器所执行的根据手势标识获取手势测试脚本的步骤包括:根据第一手势标识获取第一手势测试脚本,以及,根据第二手势标识获取第二手势测试脚本;处理器所执行的根据手势测试脚本对被测应用进行手势测试的步骤包括:调用第一手势测试脚本对被测应用进行手势测试;当第一手势测试脚本测试完成后,向被测应用发送初始化指令,以使被测应用进行初始化;当被测应用的等待初始化时间到达时,调用第二手势测试脚本对被测应用进行手势测试。
在一个实施例中,处理器所执行的获取手势测试脚本对应的手势测试结果的步骤包括:检测被测应用中是否出现预设的首页关键词,若是,确定手势测试结果为手势解锁成功,若否,确定手势测试结果为手势解锁失败;获取手势测试脚本对应的手势测试结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。