本公开涉及用户界面(user interface,ui)交互,具体而言,涉及一种测试用例的生成方法、装置、计算机设备及存储介质。
背景技术:
1、ui自动化测试用例是对app的ui层进行自动化测试的脚本,ui录制则是通过图形用户界面(graphical user interface,gui)操作应用程序的ui层,在应用程序响应的同时获取操作数据,并基于操作数据自动生成相对应的代码,利用代码组成一条完整的ui自动化测试用例。通过ui录制能很大程度上替代人工编写用例的工作量,极大地提高了生产测试用例的效率。在在ui录制过程中,最常见的操作是点击和滑动,而根据滑动手势判定滑动意图却是最复杂的。目前针对录制滑动操作的方式,通常是通过提供额外的辅助滑动按钮(如上滑、左滑等),而生成的与滑动操作相关的代码是统一基于设备像素坐标的,这就导致了生成的测试用例的通用性较差,即实际滑动的区域和录制滑动操作的区域会不一致,导致用例无法稳定运行。
技术实现思路
1、本公开实施例至少提供一种测试用例的生成方法、装置、计算机设备及存储介质。
2、第一方面,本公开实施例提供了一种测试用例的生成方法,包括:响应于对用户界面的目标滑动操作,获取所述目标滑动操作对应的滑动数据;所述滑动数据包括:滑动起点的第一位置信息以及所述滑动起点对应的起点控件的第一控件标识和第一控件树,滑动终点的第二位置信息以及所述滑动终点对应的终点控件的第二控件标识和第二控件树;基于所述滑动数据,确定与所述目标滑动操作对应的滑动区域的目标控件信息;其中,所述目标控件信息指示的目标控件为所述起点控件和所述终点控件对应的父控件;基于所述目标控件信息、所述第一位置信息和所述第二位置信息,生成所述目标滑动操作的操作数据;基于所述操作数据,生成用于对所述用户界面进行测试的测试用例。
3、这样,直接从控件层面,确定与滑动操作对应的滑动区域的目标控件信息,并利用目标控件信息,来生成目标滑动操作的操作数据,而控件是用户界面的基本构成部分,从而即使是针对用户界面中局部区域的滑动操作,基于该种方式都能够获取到该局部区域对应的目标控件,从而实现了针对局部区域的滑动操作的录制,生成的测试用例具有更强的通用性。
4、一种可能的实施方式中,所述基于所述滑动数据,确定与所述目标滑动操作对应的滑动区域的目标控件信息,包括:基于所述第一控件标识以及所述第二控件标识,检测所述起点控件和所述终点控件是否为相同子控件;响应于所述起点控件和所述终点控件为相同子控件,基于所述第一控件树和所述第二控件树,检测所述起点控件和所述终点控件是否对应于同一个父控件;响应于所述起点控件和所述终点控件对应于不同父控件,从所述第一控件树和所述第二控件树中,确定满足第一预设条件的目标父控件;将所述目标父控件对应的控件信息,确定为所述目标控件信息。
5、这样,起点控件和所述终点控件是否为相同子控件,并且是否同一个父控件,能够表征起点控件和终点控件在应用程序对应的用户界面中的控件层级关系,基于该控件层级关系,能够迅速、准确的确定目标滑动操作的生效范围,也即目标控件在用户界面中的控件区域。
6、一种可能的实施方式中,所述方法还包括:响应于所述起点控件和所述终点控件对应于同一个父控件,将所述目标滑动操作确定为无效操作。
7、一种可能的实施方式中,所述第一预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件。
8、一种可能的实施方式中,所述方法还包括:响应于所述起点控件和所述终点控件为不同子控件,检测所述起点控件是否响应于所述目标滑动操作在所述用户界面中发生了位置变化;
9、响应于所述起点控件在所述用户界面中发生了位置变化,且所述起点控件在所述目标滑动操作后在所述用户界面中不可见,从所述第一控件树和所述第二控件树中,确定满足所述第一预设条件的目标父控件;将满足所述第一预设条件的目标父控件对应的控件信息,确定为所述目标控件信息;
10、响应于所述起点控件在所述用户界面中发生了位置变化,且所述起点控件在所述目标滑动操作后在所述用户界面中可见,基于所述目标滑动操作的滑动方向,确定与所述滑动方向对应的第二预设条件;从所述第一控件树和所述第二控件树中,确定满足所述第二预设条件的目标父控件;将满足所述第二预设条件的目标父控件的控件信息,确定为所述目标控件信息。
11、一种可能的实施方式中,所述检测所述起点控件是否响应于所述目标滑动操作在所述用户界面中发生了位置变化,包括:基于所述第一位置信息,从所述终点控件的控件树中,查找与所述第一位置信息对应的第一目标控件;基于所述起点控件的第一控件标识、和所述第一目标控件的控件标识,确定所述起点控件和所述第一目标控件是否为相同控件;响应于所述起点控件和所述第一目标控件为相同控件,则确定所述起点控件未发生位置变化;响应于所述起点控件和所述第一目标控件为不同控件,则确定所述起点控件发生了位置变化。
12、这样,可以通过控件层面确定起点控件是否在目标滑动操作前后发生了位置变化,确定过程方便快捷。
13、一种可能的实施方式中,在所述滑动方向为横向的情况下,所述第二预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件,且所述父控件对应的宽度和所述起点控件发生位移的横向位移量的差小于预设第一阈值;在所述滑动方向为纵向的情况下,所述第二预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件,且所述父控件对应的高度和所述起点控件发生位移的纵向位移量的差小于预设第二阈值。
14、一种可能的实施方式中,所述方法还包括:采用下述方式确定所述起点控件在所述目标滑动操作后在所述用户界面中是否可见:在所述终点控件对应的控件树中,查找控件标识和所述第一控件标识相同的第二目标控件;确定所述第二目标控件是否可见;响应于所述第二目标控件可见,则确定所述起点控件在所述目标滑动操作后可见;响应于所述第二目标控件为不可见,则确定所述起点控件在所述目标滑动操作后不可见。
15、第二方面,本公开实施例还提供一种测试用例的生成装置,包括:获取模块,用于响应于对用户界面的目标滑动操作,获取所述目标滑动操作对应的滑动数据;所述滑动数据包括:滑动起点的第一位置信息以及所述滑动起点对应的起点控件的第一控件标识和第一控件树,滑动终点的第二位置信息以及所述滑动终点对应的终点控件的第二控件标识和第二控件树;确定模块,用于基于所述滑动数据,确定与所述目标滑动操作对应的滑动区域的目标控件信息;其中,所述目标控件信息指示的目标控件为所述起点控件和所述终点控件对应的父控件;第一生成模块,用于基于所述目标控件信息、所述第一位置信息和所述第二位置信息,生成所述目标滑动操作的操作数据;第二生成模块,用于基于所述操作数据,生成用于对所述用户界面进行测试的测试用例。
16、一种可能的实施方式中,所述确定模块,在所述基于所述滑动数据,确定与所述目标滑动操作对应的滑动区域的目标控件信息时,用于:基于所述第一控件标识以及所述第二控件标识,检测所述起点控件和所述终点控件是否为相同子控件;响应于所述起点控件和所述终点控件为相同子控件,基于所述第一控件树和所述第二控件树,检测所述起点控件和所述终点控件是否对应于同一个父控件;响应于所述起点控件和所述终点控件对应于不同父控件,从所述第一控件树和所述第二控件树中,确定满足第一预设条件的目标父控件;将所述目标父控件对应的控件信息,确定为所述目标控件信息。
17、一种可能的实施方式中,所述确定模块,还用于:响应于所述起点控件和所述终点控件对应于同一个父控件,将所述目标滑动操作确定为无效操作。
18、一种可能的实施方式中,所述第一预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件。
19、一种可能的实施方式中,所述确定模块,还用于:响应于所述起点控件和所述终点控件为不同子控件,检测所述起点控件是否响应于所述目标滑动操作在所述用户界面中发生了位置变化;响应于所述起点控件在所述用户界面中发生了位置变化,且所述起点控件在所述目标滑动操作后在所述用户界面中不可见,从所述第一控件树和所述第二控件树中,确定满足所述第一预设条件的目标父控件;将满足所述第一预设条件的目标父控件对应的控件信息,确定为所述目标控件信息;响应于所述起点控件在所述用户界面中发生了位置变化,且所述起点控件在所述目标滑动操作后在所述用户界面中可见,基于所述目标滑动操作的滑动方向,确定与所述滑动方向对应的第二预设条件;从所述第一控件树和所述第二控件树中,确定满足所述第二预设条件的目标父控件;将满足所述第二预设条件的目标父控件的控件信息,确定为所述目标控件信息。
20、一种可能的实施方式中,所述确定模块,在检测所述起点控件是否响应于所述目标滑动操作在所述用户界面中发生了位置变化时,用于:基于所述第一位置信息,从所述终点控件的控件树中,查找与所述第一位置信息对应的第一目标控件;基于所述起点控件的第一控件标识、和所述第一目标控件的控件标识,确定所述起点控件和所述第一目标控件是否为相同控件;响应于所述起点控件和所述第一目标控件为相同控件,则确定所述起点控件未发生位置变化;响应于所述起点控件和所述第一目标控件为不同控件,则确定所述起点控件发生了位置变化。
21、一种可能的实施方式中,在所述滑动方向为横向的情况下,所述第二预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件,且所述父控件对应的宽度和所述起点控件发生位移的横向位移量的差小于预设第一阈值;在所述滑动方向为纵向的情况下,所述第二预设条件包括:在所述控件树中距离所述起点控件和所述终点控件最近、且在所述用户界面中的控件布局位置未发生变化的父控件,且所述父控件对应的高度和所述起点控件发生位移的纵向位移量的差小于预设第二阈值。
22、一种可能的实施方式中,所述确定模块,还用于:采用下述方式确定所述起点控件在所述目标滑动操作后在所述用户界面中是否可见:在所述终点控件对应的控件树中,查找控件标识和所述第一控件标识相同的第二目标控件;确定所述第二目标控件是否可见;响应于所述第二目标控件可见,则确定所述起点控件在所述目标滑动操作后可见;响应于所述第二目标控件为不可见,则确定所述起点控件在所述目标滑动操作后不可见。
23、第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
24、第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
25、关于上述测试用例的生成装置、计算机设备、及计算机可读存储介质的效果描述参见上述测试用例的生成方法的说明,这里不再赘述。
26、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
27、为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
1.一种测试用例的生成方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述滑动数据,确定与所述目标滑动操作对应的滑动区域的目标控件信息,包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,所述第一预设条件包括:
5.根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述检测所述起点控件是否响应于所述目标滑动操作在所述用户界面中发生了位置变化,包括:
7.根据权利要求5所述的方法,其特征在于,在所述滑动方向为横向的情况下,所述第二预设条件包括:
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:采用下述方式确定所述起点控件在所述目标滑动操作后在所述用户界面中是否可见:
9.一种测试用例的生成装置,其特征在于,包括:
10.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至8任一项所述的测试用例的生成方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至8任意一项所述的测试用例的生成方法的步骤。
