发明内容
本公开实施例至少提供一种测试方法、装置、计算机设备以及存储介质。
第一方面,本公开实施例提供了一种测试方法,应用于运行有Flutter应用的设备,包括:
响应于Flutter性能调试程序的连接请求,建立待测试Flutter应用与所述Flutter性能调试程序之间的通信连接;
拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势;
通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,以使所述Flutter性能调试程序基于所述目标操作手势生成目标测试脚本。
一种可选的实施方式中,所述拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,包括:
检测用户对所述目标交互页面的触发操作;
在所述触发操作为预设手势操作的情况下,确定检测到所述目标操作手势,其中,所述预设手势操作类型包括以下至少之一:点击操作、滑动操作、页面回退操作、文本输入操作。
一种可选的实施方式中,所述目标操作手势为点击操作;在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,所述方法还包括:
在所述目标操作手势为对所述目标交互页面的点击操作的情况下,确定所述点击操作的点击操作信息;所述点击操作信息用于指示所述点击操作的点击位置和/或所述点击位置的数量信息;
通过所述通信连接将所述点击操作信息和所述点击操作的操作类型发送至所述Flutter性能调试程序。
一种可选的实施方式中,所述目标操作手势为滑动操作;在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,所述方法还包括:
在所述目标操作手势为所述滑动操作的情况下,确定所述滑动操作的滑动操作信息;所述滑动操作信息用于指示所述滑动操作的操作位置和/或所述滑动操作的滑动速度;
通过所述通信连接将所述滑动操作信息和所述滑动操作的操作类型发送至所述Flutter性能调试程序。
一种可选的实施方式中,所述目标操作手势为页面回退操作;在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,所述方法还包括:
在所述目标操作手势为所述页面回退操作的情况下,确定所述页面回退操作的回退操作信息;所述回退操作信息用于指示用户在所述目标交互页面所触发的页面回退标识的标识属性信息;
通过所述通信连接将所述回退操作信息和所述页面回退操作的操作类型发送至所述Flutter性能调试程序。
一种可选的实施方式中,所述目标操作手势为文本输入操作;在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,所述方法还包括:
在所述目标操作手势为所述文本输入操作的情况下,确定所述文本输入操作的输入操作信息;所述输入操作信息用于指示用户在所述目标交互页面输入的文本内容和/或所述文本输入操作的文本输入位置;
通过所述通信连接将所述文本操作信息和所述文本输入操作的操作类型发送至所述Flutter性能调试程序。
一种可选的实施方式中,所述通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,包括:
调用所述Flutter性能调试程序中的调试扩展应用;
基于所述调试扩展应用通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序。
第二方面,本公开实施例还提供一种测试方法,应用于运行有Flutter性能调试程序的设备,包括:
建立所述Flutter性能调试程序和待测试Flutter应用之间的通信连接;
获取所述待测试Flutter应用通过所述通信连接发送的目标操作手势,其中,所述目标操作手势为所述待测试Flutter应用在目标交互页面拦截到的手势操作;
基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,并通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试;所述手势操作信息用于指示所述目标操作手势在所述目标交互页面中的操作位置和/或操作内容。
一种可选的实施方式中,所述基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,包括:
基于所述目标操作手势的手势操作类型确定目标脚本模板;
基于所述目标脚本模板和所述手势操作信息生成所述目标测试脚本。
一种可选的实施方式中,所述通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试,包括:
将所述目标测试脚本输入至所述Flutter性能调试程序的驱动程序中,以使所述驱动程序调用所述待测试Flutter应用运行所述目标测试脚本,得到脚本测试结果。
一种可选的实施方式中,所述建立所述Flutter性能调试程序和待测试的待测试Flutter应用之间的通信连接,包括:
检测所述待测试Flutter应用发送的WebSocket连接请求;
在对所述WebSocket连接请求校验通过的情况下,建立与所述待测试Flutter应用之间的WebSocket通信连接。
第三方面,本公开实施例还提供一种测试装置,设置在运行有Flutter应用的设备,包括:
连接单元,用于响应于Flutter性能调试程序的连接请求,建立待测试Flutter应用与所述Flutter性能调试程序之间的通信连接;
拦截单元,用于拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势;
发送单元,用于通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,以使所述Flutter性能调试程序基于所述目标操作手势生成目标测试脚本。
第四方面,本公开实施例还提供一种测试装置,设置在运行有Flutter性能调试程序的设备,包括:
建立单元,用于建立所述Flutter性能调试程序和待测试Flutter应用之间的通信连接;
获取单元,用于获取所述待测试Flutter应用通过所述通信连接发送的目标操作手势,其中,所述目标操作手势为所述待测试Flutter应用在目标交互页面拦截到的手势操作;
生成单元,用于基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,并通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试;所述手势操作信息用于指示所述目标操作手势在所述目标交互页面中的操作位置和/或操作内容。
第五方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面至第二方面中任一种可能的实施方式中的步骤。
第六方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面至第二方面中任一种可能的实施方式中的步骤。
本公开实施例提供的测试方法、装置、计算机设备以及存储介质。在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,并通过上述通信连接将目标操作手势发送至Flutter性能调试程序,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,在现有的通过Flutter平台对待测试应用程序进行测试的方案中,通常都是通过测试人员手动编写测试脚本的方式对待测试应用程序进行测试。因此,现有的技术方案对测试人员的代码能力要求较高,且结合源码编写脚本的过程中,定位操作指令的操作位置存在一定的技术上的难点。
基于上述研究,本公开提供了一种测试方法、装置、计算机设备以及存储介质。在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,并通过上述通信连接将目标操作手势发送至Flutter性能调试程序,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种测试方法进行详细介绍,本公开实施例所提供的测试方法的执行主体一般为具有一定计算能力的计算机设备。在一些可能的实现方式中,该测试方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的一种测试方法的流程图,应用于运行有Flutter应用的设备,所述方法包括步骤S101~S105,其中:
S101:响应于Flutter性能调试程序的连接请求,建立待测试Flutter应用与所述Flutter性能调试程序之间的通信连接。
在本公开实施例中,上述Flutter性能调试程序为用于生成目标测试脚本的程序。因此,待测试Flutter应用首先需要检测Flutter性能调试程序的连接请求,以建立和该Flutter性能调试程序之间的通信连接,从而和该Flutter性能调试程序进行数据传输。
S103:拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势。
在本公开实施例中,用户可以通过目标操作手势在待测试Flutter应用的目标交互页面进行交互操作,例如,该目标操作手势为点击操作的情况下,该点击操作就可以为针对待测试Flutter应用的目标交互页面中的页面内容进行选择。另外的,该待测试Flutter应用的目标交互页面为该待测试Flutter应用中的功能页面。
这里,可以通过在待测试Flutter应用中设置拦截器的方式拦截用户在目标交互页面内的目标操作手势。具体实施时,可以将该拦截器设置在待测试Flutter应用的框架层,其中,该框架层用于基于该待测试Flutter应用的运行程序,运行该待测试Flutter应用。
在本公开实施例中,在设置拦截器的过程中,可以针对每种类型的目标操作手势设置一种拦截器,也可以设置一种能够同时用于检测多种类型的目标操作手势的拦截器,本公开对该拦截器的种类不做具体限定。
在待测试Flutter应用中设置拦截器之后,该拦截器就可以拦截用户在目标交互页面中的触发操作,需要说明的是,该拦截器可以识别触发操作中的目标操作手势,在检测到用户在目标交互页面中的目标操作手势之后,就可以获取该目标操作手势的操作内容。
S105:通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,以使所述Flutter性能调试程序基于所述目标操作手势生成目标测试脚本。
在本公开实施例中,在拦截到上述目标操作手势之后,就可以获取该目标操作手势的操作内容,并通过通信连接,将该目标操作手势以及对应的操作内容发送至Flutter性能调试程序,以使该Flutter性能调试程序基于该目标操作手势的操作内容生成对应的目标测试脚本。这里,该目标测试脚本可以用于指示上述待测试Flutter应用自动运行该目标操作手势。
通过上述描述可知,在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,并通过上述通信连接将目标操作手势发送至Flutter性能调试程序,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
在一个可选的实施方式中,如图2所示,上述步骤S103,拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,具体包括如下过程:
S1031:检测用户对所述目标交互页面的触发操作。
在本公开实施例中,用户可以通过触发操作和目标交互页面进行交互。这里,可以通过上述拦截器拦截用户在该目标交互页面内的触发操作,并获取每个触发操作所对应的触发内容。
S1032:在所述触发操作为预设手势操作的情况下,确定检测到所述目标操作手势,其中,所述预设手势操作类型包括以下至少之一:点击操作、滑动操作、页面回退操作、文本输入操作。
在本公开实施例中,首先可以获取预设手势操作,并将获取到的上述触发操作的触发内容和该预设手势操作进行匹配,并将触发内容和预设手势操作相匹配的触发手势确定为目标操作手势。
这里,上述预设操作手势类型可以为预先设定的,具体的,用户可以通过修改指令修改拦截器所能检测到的预设手势操作类型,其中,该修改指令可以包括以下至少之一:删除预设手势操作类型、增加预设手势操作类型、修改预设手势操作类型。
通过上述描述可知,在检测到用户对目标交互页面的触发操作后,就可以确定该触发操作是否为预设操作手势,从而能够确定出用户的目标操作手势,进而为通过通信连接将目标操作手势发送至Flutter性能调试程序提供了技术基础。
在一个可选的实施方式中,在上述目标操作手势为点击操作的情况下,在通过上述通信连接将上述目标操作手势发送至上述Flutter性能调试程序之前,上述方法还包括如下过程:
(1)、在所述目标操作手势为对所述目标交互页面的点击操作的情况下,确定所述点击操作的点击操作信息;所述点击操作信息用于指示所述点击操作的点击位置和/或所述点击位置的数量信息;
(2)、通过所述通信连接将所述点击操作信息和所述点击操作的操作类型发送至所述Flutter性能调试程序。
在本公开实施例中,在上述目标操作手势为点击操作的情况下,就可以获取该点击操作所对应的操作内容,即上述点击操作信息,这里,该点击操作可以分为以下几种情况:
情况一:单击操作。
在本公开实施例中,在检测到用户对目标交互页面的点击操作后,就可以获取用户在预设检测时间内对于点击位置进行点击操作的数量信息,其中,在该数量信息所指示的点击操作的次数为一次的情况下,就可以确定该点击操作为单击操作。例如,该预设检测时间可以设置为1s,若用户在1s内在点击位置进行点击操作的数量为1次,那么,就可以确定该点击操作为单击操作。
情况二:连击操作(例如双击操作)。
在本公开实施例中,在检测到用户对目标交互页面的点击操作后,就可以获取用户在预设检测时间内对于点击位置进行点击操作的数量信息,其中,在该数量信息所指示的点击操作的次数为多次的情况下,就可以确定该点击操作为连击操作。
应理解的是,上述点击位置可以存在修正数据,在多次点击操作所对应的点击位置之间的距离差值小于该修正数据的情况下,就可以认为这多次点击操作所对应的点击位置相同。
例如,用户首次点击跟第二次点击操作在目标交互页面中所对应的距离差值为1px,上述修正数据为2px。那么,这两次点击位置之间的距离差值小于修正数据,此时,就可以认为这两次点击操作所对应的点击位置相同,因此,在这两次点击操作之间的操作间隔小于上述预设检测时间的情况下,就可以确定检测到了连击操作,该连击操作为双击操作。
在通过通信连接将点击操作信息和点击操作的操作类型发送至Flutter性能调试程序之前,需要确定该点击操作的点击位置和/或数量信息,种类该点击位置可以通过形如(X,Y)的坐标的形式表示,然后,就可以基于该点击位置的坐标以及该点击次数的数量信息确定上述点击操作信息,并将该点击操作信息和点击操作的操作类型发送至Flutter性能调试程序。
通过上述描述可知,在目标操作手势为对目标交互页面的点击操作的情况下,就可以确定用于指示该点击操作的点击位置和/或所述点击位置的数量信息的点击操作信息,以使Flutter性能调试程序能够根据该点击操作信息,相对准确的生成该点击操作所对应的目标测试脚本。
在一个可选的实施方式中,在上述目标操作手势为滑动操作的情况下,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,上述方法还包括如下过程:
(1)、在所述目标操作手势为所述滑动操作的情况下,确定所述滑动操作的滑动操作信息;所述滑动操作信息用于指示所述滑动操作的操作位置和/或所述滑动操作的滑动速度;
(2)、通过所述通信连接将所述滑动操作信息和所述滑动操作的操作类型发送至所述Flutter性能调试程序。
在本公开实施例中,在上述目标操作手势为滑动操作的情况下,就可以获取该滑动操作所对应的操作内容,即上述滑动操作信息。
具体实施时,在检测到用户的滑动操作的情况下,就可以获取该滑动操作在目标交互页面中所对应的至少部分像素点的坐标,并基于获取到的像素点的坐标确定该滑动操作的操作位置。
另外的,还可以获取该滑动操作所对应的滑动时间,并基于该滑动操作的操作位置确定该滑动操作的滑动距离,从而基于该滑动时间以及滑动距离,确定该滑动操作所对应的滑动速度。
应理解的是,上述滑动速度可以和用户针对目标交互页面的浏览速度相关,用户可以通过调节滑动操作的滑动速度来适应浏览速度。这里,在目标交互页面为长页面的情况下,用户可以通过向下滑动的方式浏览该长页面,此时,用户针对该目标交互页面的浏览速度就越快,该滑动操作的滑动速度就可以越快。
在确定出上述滑动操作的操作位置和滑动操作的滑动速度后,就可以基于该操作位置和滑动速度确定该滑动操作的滑动操作信息,并通过通信连接将该滑动操作信息和滑动操作的操作类型发送至Flutter性能调试程序。
通过上述描述可知,在目标操作手势为对目标交互页面的滑动操作的情况下,就可以确定用于指示该滑动操作的操作位置和/或滑动操作的滑动速度的滑动操作信息,以使Flutter性能调试程序能够根据该滑动操作信息,相对准确的生成该滑动操作所对应的目标测试脚本。
在一个可选的实施方式中,在上述目标操作手势为页面回退操作的情况下,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,上述方法还包括如下过程:
(1)、在所述目标操作手势为所述页面回退操作的情况下,确定所述页面回退操作的回退操作信息;所述回退操作信息用于指示用户在所述目标交互页面所触发的页面回退标识的标识属性信息;
(2)、通过所述通信连接将所述回退操作信息和所述页面回退操作的操作类型发送至所述Flutter性能调试程序。
在本公开实施例中,在上述目标操作手势为页面回退操作的情况下,就可以获取该页面回退操作所对应的操作内容,即上述回退操作信息。
具体实施时,上述目标交互页面中包含至少一个页面回退标识,该页面回退标识用于指示用户退回到该目标交互页面的上级页面,在检测到针对该页面回退标识的情况下,就可以确定检测到了上述页面回退操作。
接下来,就可以获取该页面回退标识的标识属性信息,从而确定该页面回退操作的回退操作信息,其中,该标识属性信息可以用于指示该页面回退标识在目标交互页面中的位置信息,和/或该页面回退标识所指示回退的回退页面。
在确定出上述页面回退操作的回退操作信息后,就可以通过通信连接将上述回退操作信息和页面回退操作的操作类型发送至上述Flutter性能调试程序。
通过上述描述可知,在目标操作手势为对目标交互页面的页面回退操作的情况下,就可以确定该页面回退操作的回退操作信息,以使Flutter性能调试程序能够根据该回退操作信息,相对准确的生成该页面回退操作所对应的目标测试脚本。
在一个可选的实施方式中,在上述目标操作手势为文本输入操作的情况下,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,上述方法还包括如下过程:
(1)、在所述目标操作手势为所述文本输入操作的情况下,确定所述文本输入操作的输入操作信息;所述输入操作信息用于指示用户在所述目标交互页面输入的文本内容和/或所述文本输入操作的文本输入位置;
(2)、通过所述通信连接将所述文本操作信息和所述文本输入操作的操作类型发送至所述Flutter性能调试程序。
在本公开实施例中,在上述目标操作手势为文本输入操作的情况下,就可以获取该文本输入操作所对应的操作内容,即上述输入操作信息。
具体实施时,上述目标交互页面中包含至少一个文本输入位置,在检测到上述文本输入操作后,就可以确定该文本输入操作所对应的文本输入位置,并获取用户在该文本输入位置中所输入的文本内容。
在确定出上述文本输入操作的输入操作信息后,就可以通过通信连接将上述输入操作信息和文本输入操作的操作类型发送至上述Flutter性能调试程序。
通过上述描述可知,在目标操作手势为对目标交互页面的文本输入操作的情况下,就可以确定该文本输入操作的输入操作信息,以使Flutter性能调试程序能够根据该输入操作信息,相对准确的生成该文本输入操作所对应的目标测试脚本。
在一个可选的实施方式中,上述步骤S105,通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,具体包括如下过程:
S1051:调用所述Flutter性能调试程序中的调试扩展应用。
在本公开实施例中,上述Flutter性能调试程序中包含调试扩展应用,其中,该调试扩展应用可以基于WebSocket通信连接,进行Flutter性能调试程序和待测试Flutter应用之间的数据传输,其中,该调试扩展应用可以为extension应用。
S1052:基于所述调试扩展应用通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序。
在本公开实施例中,在确定出上述目标操作手势后,就可以调用Flutter性能调试程序中的调试扩展应用,以使该调试扩展应用基于WebSocket通信连接,将上述待测试Flutter应用中的目标操作手势发送至Flutter性能调试程序。
通过上述描述可知,通过调用Flutter性能调试程序中的调试扩展应用,可以将待测试Flutter应用中的目标操作手势发送至Flutter性能调试程序,从而实现了Flutter性能调试程序和Flutter应用之间的跨平台通信。
参见图3所示,为本公开实施例提供的另一种测试方法的流程图,应用于运行有Flutter性能调试程序的设备,所述方法包括步骤S301~S305,其中:
S301:建立所述Flutter性能调试程序和待测试Flutter应用之间的通信连接。
在本公开实施例中,上述Flutter性能调试程序可以向待测试Flutter应用发送连接请求,在该待测试Flutter应用接受该连接请求后,就可以建立Flutter性能调试程序和待测试Flutter应用之间的通信连接。
S303:获取所述待测试Flutter应用通过所述通信连接发送的目标操作手势,其中,所述目标操作手势为所述待测试Flutter应用在目标交互页面拦截到的手势操作。
在本公开实施例中,可以基于上述通信连接获取待测试Flutter应用发送的目标操作手势,并获取该目标操作手势所对应的操作类型以及操作内容。接下来,就可以将该目标操作所对应的手势操作信息发送至脚本生成器,以使该脚本生成器基于该手势操作信息生成目标测试脚本。
S305:基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,并通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试;所述手势操作信息用于指示所述目标操作手势在所述目标交互页面中的操作位置和/或操作内容。
在本公开实施例中,在上述脚本生成器基于目标操作手势所对应的手势操作信息生成目标测试脚本后,就可以将该目标测试脚本发送至驱动程序,以使该驱动程序基于目标测试脚本所指示的测试用例对待测试Flutter应用进行测试,例如,该驱动程序可以为Flutter driver(即Flutter驱动程序)。
在一个可选的实施方式中,上述步骤S303,基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,具体包括如下过程:
(1)、基于所述目标操作手势的手势操作类型确定目标脚本模板;
(2)、基于所述目标脚本模板和所述手势操作信息生成所述目标测试脚本。
在本公开实施例中,可以基于手势操作类型,预先为上述目标操作手势设置对应的目标脚本模板。在获取到目标操作手势后,就可以基于该目标操作手势的手势操作类型,确定该目标操作手势所对应的目标脚本模板。这里,该手势操作类型对应上述预设手势操作类型,即上述点击操作、滑动操作、页面回退操作、文本输入操作中的至少之一。
具体实施时,可以建立用于表征上述手势操作类型和目标脚本模板之间映射关系的映射表,在获取到上述目标操作手势后,就可以调用该映射表,并基于该目标操作手势的手势操作类型,在该映射表中查找对应的目标脚本模板的模板标识,以便根据该模板标识,调用对应的目标脚本模板,从而避免遍历全部脚本模板来查找目标脚本模板的查找方式,提高了查找目标脚本模板的速度。
另外的,在生成上述目标测试脚本的过程中,用户还可以对生成得目标测试脚本进行调整,例如,修改该目标测试脚本中的运行指令,从而改变该目标测试脚本所指示的测试用例。例如,该目标测试脚本中的运行指令为指示待测试Flutter应用进行双击操作,那么,就可以对该运行指令进行修改,以使修改后的运行指令为指示待测试Flutter应用进行单击操作,从而提高了生成目标测试脚本的灵活性。
通过上述描述可知,可以为不同手势操作类型的目标操作手势设置对应的目标操作模板,从而提高生成目标测试脚本的准确定,并提高了生成目标测试脚本的生成效率。
在一个可选的实施方式中,上述步骤S303,通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试,具体包括如下过程:
将所述目标测试脚本输入至所述Flutter性能调试程序的驱动程序中,以使所述驱动程序调用所述待测试Flutter应用运行所述目标测试脚本,得到脚本测试结果。
在本公开实施例中,在得到上述目标测试脚本后,就可以将该目标测试脚本输入至Flutter性能调试程序的驱动程序中,该驱动程序可以基于目标测试脚本中的测试用例运行上述待测试Flutter应用。
通过上述描述可知,可以通过驱动程序调用待测试Flutter应用运行目标测试脚本,从而得到脚本测试结果。
在一个可选的实施方式中,上述步骤S301,建立所述Flutter性能调试程序和待测试的待测试Flutter应用之间的通信连接,具体包括如下过程:
(1)、检测所述待测试Flutter应用发送的WebSocket连接请求;
(2)、在对所述WebSocket连接请求校验通过的情况下,建立与所述待测试Flutter应用之间的WebSocket通信连接。
在本公开实施例中,上述Flutter性能调试程序中包含调试扩展应用,其中,该调试扩展应用可以基于WebSocket通信连接,进行Flutter性能调试程序和待测试Flutter应用之间的数据传输,其中,该调试扩展应用可以为extension应用。
在本公开实施例中,上述Flutter性能调试程序中包含调试扩展应用在检测到上述待测试Flutter应用发送的WebSocket连接请求后,就可以对该的WebSocket连接请求进行校验。具体的,可以针对待测试Flutter应用的设备id进行检验,在该待测试Flutter应用的设备id命中白名单的情况下,建立与该待测试Flutter应用之间的WebSocket通信连接。
通过上述描述可知,在对WebSocket连接请求校验通过的情况下,就可以建立与待测试Flutter应用之间的WebSocket通信连接,从而提高了通信连接的安全性。
综上,在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,并通过上述通信连接将目标操作手势发送至Flutter性能调试程序,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与测试方法对应的测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种测试装置的示意图,设置在运行有Flutter应用的设备,所述装置包括:连接单元41、拦截单元42、发送单元43;其中,
连接单元41,用于响应于Flutter性能调试程序的连接请求,建立待测试Flutter应用与所述Flutter性能调试程序之间的通信连接;
拦截单元42,用于拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势;
发送单元43,用于通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,以使所述Flutter性能调试程序基于所述目标操作手势生成目标测试脚本。
在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势,并通过上述通信连接将目标操作手势发送至Flutter性能调试程序,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
一种可能的实施方式中,拦截单元42,还用于:
检测用户对所述目标交互页面的触发操作;
在所述触发操作为预设手势操作的情况下,确定检测到所述目标操作手势,其中,所述预设手势操作类型包括以下至少之一:点击操作、滑动操作、页面回退操作、文本输入操作。
一种可能的实施方式中,所述目标操作手势为点击操作,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,该装置还用于:
在所述目标操作手势为对所述目标交互页面的点击操作的情况下,确定所述点击操作的点击操作信息;所述点击操作信息用于指示所述点击操作的点击位置和/或所述点击位置的数量信息;
通过所述通信连接将所述点击操作信息和所述点击操作的操作类型发送至所述Flutter性能调试程序。
一种可能的实施方式中,所述目标操作手势为滑动操作,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,该装置还用于:
在所述目标操作手势为所述滑动操作的情况下,确定所述滑动操作的滑动操作信息;所述滑动操作信息用于指示所述滑动操作的操作位置和/或所述滑动操作的滑动速度;
通过所述通信连接将所述滑动操作信息和所述滑动操作的操作类型发送至所述Flutter性能调试程序。
一种可能的实施方式中,所述目标操作手势为页面回退操作,在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,该装置还用于:
在所述目标操作手势为所述页面回退操作的情况下,确定所述页面回退操作的回退操作信息;所述回退操作信息用于指示用户在所述目标交互页面所触发的页面回退标识的标识属性信息;
通过所述通信连接将所述回退操作信息和所述页面回退操作的操作类型发送至所述Flutter性能调试程序。
一种可能的实施方式中,所述目标操作手势为文本输入操作;在通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序之前,该装置还用于:
在所述目标操作手势为所述文本输入操作的情况下,确定所述文本输入操作的输入操作信息;所述输入操作信息用于指示用户在所述目标交互页面输入的文本内容和/或所述文本输入操作的文本输入位置;
通过所述通信连接将所述文本操作信息和所述文本输入操作的操作类型发送至所述Flutter性能调试程序。
一种可能的实施方式中,发送单元43,还用于:
调用所述Flutter性能调试程序中的调试扩展应用;
基于所述调试扩展应用通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序。
参照图5所示,为本公开实施例提供的另一种测试装置的示意图,设置在运行有Flutter性能调试程序的设备,所述装置包括:建立单元51、获取单元52、生成单元53;其中,
建立单元51,用于建立所述Flutter性能调试程序和待测试Flutter应用之间的通信连接;
获取单元52,用于获取所述待测试Flutter应用通过所述通信连接发送的目标操作手势,其中,所述目标操作手势为所述待测试Flutter应用在目标交互页面拦截到的手势操作;
生成单元53,用于基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,并通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试;所述手势操作信息用于指示所述目标操作手势在所述目标交互页面中的操作位置和/或操作内容。
在本公开实施例中,首先建立待测试Flutter应用与Flutter性能调试程序之间的通信连接,然后通过该通信连接获取待测试Flutter应用发送的的目标操作手势,以使Flutter性能调试程序基于该目标操作手势生成目标测试脚本,从而提高了生成目标测试脚本的自动化程度,降低了对测试人员的代码能力要求,并提高了生成的目标测试脚本的准确性,进而扩大了本公开的适用范围。
一种可能的实施方式中,生成单元53,还用于:
基于所述目标操作手势的手势操作类型确定目标脚本模板;
基于所述目标脚本模板和所述手势操作信息生成所述目标测试脚本。
一种可能的实施方式中,生成单元53,还用于:
将所述目标测试脚本输入至所述Flutter性能调试程序的驱动程序中,以使所述驱动程序调用所述待测试Flutter应用运行所述目标测试脚本,得到脚本测试结果。
一种可能的实施方式中,建立单元51,还用于:
检测所述待测试Flutter应用发送的WebSocket连接请求;
在对所述WebSocket连接请求校验通过的情况下,建立与所述待测试Flutter应用之间的WebSocket通信连接。
关于装置中的各单元的处理流程、以及各单元之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的测试方法,本公开实施例还提供了一种计算机设备600,如图6所示,为本公开实施例提供的计算机设备600结构示意图,包括:
处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述计算机设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:
响应于Flutter性能调试程序的连接请求,建立待测试Flutter应用与所述Flutter性能调试程序之间的通信连接;
拦截用户针对待测试Flutter应用的目标交互页面的目标操作手势;
通过所述通信连接将所述目标操作手势发送至所述Flutter性能调试程序,以使所述Flutter性能调试程序基于所述目标操作手势生成目标测试脚本。
对应于图3中的测试方法,本公开实施例还提供了另一种计算机设备700,如图7所示,为本公开实施例提供的计算机设备700结构示意图,包括:
处理器71、存储器72、和总线73;存储器72用于存储执行指令,包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换,当所述计算机设备700运行时,所述处理器71与所述存储器72之间通过总线73通信,使得所述处理器71执行以下指令:
建立所述Flutter性能调试程序和待测试Flutter应用之间的通信连接;
获取所述待测试Flutter应用通过所述通信连接发送的目标操作手势,其中,所述目标操作手势为所述待测试Flutter应用在目标交互页面拦截到的手势操作;
基于所述目标操作手势所对应的手势操作信息生成目标测试脚本,并通过所述目标测试脚本所指示的测试用例对所述待测试Flutter应用进行测试;所述手势操作信息用于指示所述目标操作手势在所述目标交互页面中的操作位置和/或操作内容。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的测试方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的测试方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。