测试脚本录制方法和装置、电子设备及存储介质与流程



1.本技术涉及计算机技术领域,尤其涉及一种测试脚本录制方法和装置、电子设备及存储介质。


背景技术:



2.相关技术中,通过自动化测试脚本进行用户界面测试(user interface testing,ui测试),但是自动化测试脚本的编写需要一定的开发基础,且当用户界面(user interface,ui)发生变动时,需要人工手动逐一修改测试脚本,这严重降低了ui测试的效率。


技术实现要素:



3.本技术实施例的主要目的在于提出一种测试脚本录制方法、测试脚本录制装置、电子设备及存储介质,旨在提高ui自动化测试的效率。
4.为实现上述目的,本技术实施例的第一方面提出了一种测试脚本录制方法,所述方法包括:
5.获取在待测应用程序的界面进行操作触发的多个操作事件;其中,所述操作事件为根据预设的案例测试流程进行操作触发的事件,所述案例测试流程包括多个测试步骤;
6.根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素;
7.根据所述控件元素的类别和所述控件元素的属性确定控件信息,并根据所述控件信息生成录制弹窗;
8.获取根据所述测试步骤在所述录制弹窗进行操作的操作类型;
9.根据所述操作类型进行测试脚本录制,得到测试脚本;其中,所述测试脚本用于对所述待测应用程序进行测试。
10.在一些实施例,所述响应者链条包括父视图和子视图,所述根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素,包括:
11.若所述事件类型为触摸事件,将所述操作事件添加至预设的事件队列;
12.从所述事件队列中依次取出所述操作事件,将所述操作事件分发至所述父视图;
13.若触发所述操作事件的触摸点位于所述父视图的第一坐标范围内,则将所述操作事件分发至所述父视图的全部所述子视图;
14.根据所述触摸点对所述子视图进行响应者筛选,得到所述控件元素。
15.在一些实施例,所述根据所述触摸点对所述子视图进行响应者筛选,得到所述控件元素,包括:
16.对全部所述子视图进行倒序遍历;
17.若所述触摸点位于当前所述子视图的第二坐标范围内,则将当前所述子视图作为所述控件元素;
18.若所述触摸点在全部所述子视图中均不位于所述子视图的所述第二坐标范围内,则将所述父视图作为所述控件元素。
19.在一些实施例,所述操作类型包括点击操作、长按操作、滚动操作、输入操作、断言操作中的至少一种,获取根据所述测试步骤在所述录制弹窗进行操作的操作类型,包括:
20.若所述测试步骤为点击测试,则获取根据所述点击测试在所述录制弹窗进行的所述点击操作;
21.若所述测试步骤为长按测试,则获取根据所述长按测试在所述录制弹窗进行的所述长按操作;
22.若所述测试步骤为滚动测试,则获取根据所述滚动测试在所述录制弹窗进行的所述滚动操作;
23.若所述测试步骤为输入测试,则获取根据所述输入测试在所述录制弹窗进行的所述输入操作;
24.若所述测试步骤为断言测试,则获取根据所述断言测试在所述录制弹窗进行的所述断言操作。
25.在一些实施例,所述录制弹窗设置有配置开关,所述根据所述操作类型进行测试脚本录制,得到测试脚本,包括:
26.获取所述配置开关的配置信息;
27.根据所述配置信息和所述操作类型进行测试脚本录制,得到所述测试脚本。
28.在一些实施例,所述配置信息包括等待时长信息和过滤标识信息中的至少一种,所述根据所述配置信息和所述操作类型进行测试脚本录制,得到所述测试脚本,包括:
29.根据所述等待时长信息和所述操作类型进行测试脚本录制,得到所述测试脚本;
30.根据所述过滤标识信息和所述操作类型进行测试脚本录制,得到所述测试脚本。
31.在一些实施例,在所述根据所述操作类型进行测试脚本录制,得到测试脚本之后,包括:
32.根据预设的命名规则对所述测试脚本进行命名,得到命名后的测试脚本;
33.将所述命名后的测试脚本存储至预设的数据库;
34.响应于对所述命名后的测试脚本的点击操作,从所述数据库读取所述命名后的测试脚本,并根据所述命名后的测试脚本对所述待测应用程序进行测试。
35.为实现上述目的,本技术实施例的第二方面提出了一种测试脚本录制装置,所述装置包括:
36.第一获取模块,用于获取在待测应用程序的界面进行操作触发的多个操作事件;其中,所述操作事件为根据预设的案例测试流程进行操作触发的事件,所述案例测试流程包括多个测试步骤;
37.筛选模块,用于根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素;
38.录制弹窗生成模块,用于根据所述控件元素的类别和所述控件元素的属性确定控件信息,并根据所述控件信息生成录制弹窗;
39.第二获取模块,用于获取根据所述测试步骤在所述录制弹窗进行操作的操作类型;
40.测试脚本录制模块,用于根据所述操作类型进行测试脚本录制,得到测试脚本;其中,所述测试脚本用于对所述待测应用程序进行测试。
41.为实现上述目的,本技术实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
42.为实现上述目的,本技术实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
43.本技术提出的测试脚本录制方法、测试脚本录制装置、电子设备及存储介质,其通过获取在待测应用程序的界面进行操作触发的多个操作事件,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤,根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素,根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗,能够根据不同的操作事件生成不同的录制弹窗页面,避免了ui变动时人工手动修改测试脚本。进一步地,通过获取根据测试步骤在录制弹窗进行操作的操作类型,以对错误的录制弹窗页面进行纠正,根据操作类型进行测试脚本录制,得到测试脚本,测试脚本用于对待测应用程序进行测试,能够生成自动化测试脚本,提高ui测试的效率。
附图说明
44.图1是本技术实施例提供的测试脚本录制方法的流程图;
45.图2是图1中的步骤s120的流程图;
46.图3是图2中的步骤s240的流程图;
47.图4是图1中的步骤s140的流程图;
48.图5是图1中的步骤s150的流程图;
49.图6是图5中的步骤s520的流程图;
50.图7是本技术实施例提供的测试脚本录制方法的另一流程图;
51.图8是本技术实施例提供的测试脚本录制装置的结构示意图;
52.图9是本技术实施例提供的电子设备的硬件结构示意图。
具体实施方式
53.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
54.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
55.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,
不是旨在限制本技术。
56.首先,对本技术中涉及的若干名词进行解析:
57.用户界面测试(user interface testing,ui测试):用于测试用户界面的功能模块的布局是否合理,整体风格是否一致和各个控件的放置位置是否符合客户使用习惯,界面中的文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等。
58.相关技术中,通过自动化测试脚本进行ui测试,但是自动化测试脚本的编写需要一定的开发基础,且当ui发生变动时,需要人工手动逐一修改测试脚本,这严重降低了ui测试的效率。
59.基于此,本技术实施例提供了一种测试脚本录制方法、测试脚本录制装置、电子设备及计算机可读存储介质,旨在提高ui测试的效率。
60.本技术实施例提供的测试脚本录制方法和装置、电子设备及存储介质,具体通过如下实施例进行说明,首先描述本技术实施例中的测试脚本录制方法。
61.本技术实施例提供的测试脚本录制方法,涉及计算机技术领域。本技术实施例提供的测试脚本录制方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现测试脚本录制方法的应用等,但并不局限于以上形式。
62.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
63.需要说明的是,在本技术的各个具体实施方式中,当涉及到需要根据用户信息、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本技术实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本技术实施例能够正常运行的必要的用户相关数据。
64.图1是本技术实施例提供的测试脚本录制方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤s110至步骤s150。
65.步骤s110,获取在待测应用程序的界面进行操作触发的多个操作事件;其中,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤;
66.步骤s120,根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素;
67.步骤s130,根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗;
68.步骤s140,获取根据测试步骤在录制弹窗进行操作的操作类型;
69.步骤s150,根据操作类型进行测试脚本录制,得到测试脚本;其中,测试脚本用于对待测应用程序进行测试。
70.本技术实施例所示意的步骤s110至步骤s150,通过获取在待测应用程序的界面进行操作触发的多个操作事件,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤,根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素,根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗,能够根据不同的操作事件生成不同的录制弹窗页面,避免了ui变动时人工手动修改测试脚本。进一步地,通过获取根据测试步骤在录制弹窗进行操作的操作类型,以对错误的录制弹窗页面进行纠正,根据操作类型进行测试脚本录制,得到测试脚本,测试脚本用于对待测应用程序进行测试,能够生成自动化测试脚本,提高ui测试的效率。
71.在一些实施例的步骤s110中,测试人员按照案例测试流程中的测试步骤在待测应用程序的界面对界面控件进行点击、滚动等操作,根据操作自动触发生成对应于该操作的操作事件。
72.请参阅图2,在一些实施例中,响应者链条包括父视图和子视图,步骤s120可以包括但不限于包括步骤s210至步骤s240:
73.步骤s210,若事件类型为触摸事件,将操作事件添加至预设的事件队列;
74.步骤s220,从事件队列中依次取出操作事件,将操作事件分发至父视图;
75.步骤s230,若触发操作事件的触摸点位于父视图的第一坐标范围内,则将操作事件分发至父视图的全部子视图;
76.步骤s240,根据触摸点对子视图进行响应者筛选,得到控件元素。
77.在一些实施例的步骤s210中,为了根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素,其中响应者链条为多个响应者对象连接起来的层次结构,包括事件传递链条和事件响应链条,事件传递链条为操作事件沿着响应者链条自上而下即从父视图至子视图进行传递,直至到能够处理操作事件的子视图,事件响应链条为操作事件沿着响应者链条自下而上即从子视图至父视图进行传递,直至该操作事件能够被处理,响应者对象为能够接收并处理操作事件的对象。需要说明的是,并不是任何对象都可以接收并处理操作事件,只有继承了uiresponser的对象才能接收并处理操作事件,该继承了uiresponser的对象为响应者对象。
78.操作事件的事件类型包括触摸事件、运动事件和远程控制事件,其中触摸事件通过用户对待测应用程序界面进行触摸操作、手势操作触发得到,运动事件通过加速器例如手机晃动等触发得到,远程控制事件通过其他远程设备例如耳机控制按钮等触发得到。通过响应者链条对操作事件进行处理,能够使多个控件对同一触摸事件进行处理,以得到最适合处理该触摸事件的控件,提高自动化测试脚本的准确度。
79.具体地,若操作事件的事件类型为触摸事件,对操作事件进行打包处理得到uievent对象,将uievent对象添加至uiapplication管理的事件队列中。
80.在一些实施例的步骤s220中,uiapplication从事件队列中取出最前面的操作事件,将该操作事件分发至待测应用程序的主窗口uiwindow,主窗口调用hittest:withevent方法在uiview的层次结构中到一个最合适的uiview来处理该操作事件,uiview的层次结构由父视图和子视图构成。区别于栈的先进后出原则,队列为先进先出原则即越早添加进事件队列的操作事件越先处理,使得能够基于操作事件触发的前后顺序依次对操作事件进行处理。需要说明的是,uiview表示待测应用程序界面的一块矩形区域,用于对管理该矩形区域的内容例如文本内容、处理在该矩形区域的触摸事件以及对子视图进行管理等。
81.在一些实施例的步骤s230中,hittest:withevent循环调用当前视图的pointinside:withevent方法,若该方法返回yes,则说明触摸点位于当前视图的第一坐标范围内,第一坐标范围为当前视图矩形区域的位置信息,当前视图将操作事件传递给其全部子视图。若该方法返回no,说明触摸点不位于当前视图的第一坐标范围内,当前视图的hittest:withevent返回nil,并将操作事件传递给与当前视图同级的其他父视图中,若触摸点均不位于其他同级父视图的第一坐标范围内,即其他同级父视图的hittest:withevent均返回nil,则丢弃该操作事件,其中nil表示空对象,即空值。
82.在一些实施例的步骤s240中,调用子视图的hittest:withevent对子视图进行响应者筛选,得到控件元素。
83.需要说明的是,若某一视图的hidden属性为yes,或者userinteractionenabled属性为no时,或者alpha属性小于等于0.01,或者该视图超出其父视图的区域,则该视图无法对操作事件进行处理,其中hidden属性用于表示视图是否被隐藏,当hidden属性为no时,说明视图未被隐藏,若hidden属性为yes时,说明视图被隐藏;user interactionenabled属性用于表示视图是否接收并响应用户的交互,若user interactionenabled属性为no,说明当前视图不可与用户交互,其子视图也不可与用户交互,若userinteractionenabled属性为yes,说明当前视图可以与用户交互;alpha属性用于设置视图透明度,其取值大于等于0或者小于等于1,当alpha属性取值为0时表示完全透明,当alpha属性取值为1时表示完全不透明,若alpha属性小于等于0.01,说明该视图过于透明,无法对操作事件进行处理;若视图超出其父视图的区域,超出部分无法对操作事件进行处理。
84.上述步骤s210至步骤s240,将触摸事件沿着响应者链条进行事件传递,以根据响应者链条对处理触摸事件的响应者对象进行筛选,得到适合处理触摸事件的视图控件,以根据视图控件的控件信息生成测试脚本,提高生成测试脚本的准确性。
85.请参阅图3,在一些实施例中,步骤s240可以包括但不限于包括步骤s310至步骤s330:
86.步骤s310,对全部子视图进行倒序遍历;
87.步骤s320,若触摸点位于当前子视图的第二坐标范围内,则将当前子视图作为控件元素;
88.步骤s330,若触摸点在全部子视图中均不位于子视图的第二坐标范围内,则将父视图作为控件元素。
89.在一些实施例的步骤s310中,对父视图的全部子视图进行倒序遍历,即最后添加
的子视图越最先遍历。
90.在一些实施例的步骤s320中,若触摸点位于当前子视图的第二坐标范围内,即调用当前子视图的hittest:withevent中的pointinside:withevent方法,若该方法返回yes,则说明触摸点位于当前子视图的第二坐标范围内,hittest:withevent返回非空对象,该非空对象为当前子视图,即当前子视图为最合适的视图控件。若触摸点不位于当前子视图的第二坐标范围内,则继续倒序遍历其他子视图,直至调用某一子视图的pointinside:withevent方法返回yes,将该子视图作为最合适的视图控件。
91.在一些实施例的步骤s330中,若触摸点均不位于父视图的全部子视图的第二坐标范围内,即全部子视图pointinside:withevent方法均返回no,全部子视图的hittest:withevent返回的是nil,则将子视图的父视图作为最合适的视图控件。
92.在到最合适处理触摸事件的视图控件后,调用该视图的touch方法例如touchstart、touchmove等对触摸事件进行处理。若视图未实现touch方法,则沿着事件响应链条向下而上传递给当前视图的父视图,若传递到uiapplication还是无法对触摸事件进行处理,则将触摸事件丢弃。
93.上述步骤s310至步骤s330,通过对全部子视图进行倒序遍历,并调用子视图的hittest:withevent方法,直至hittest:withevent返回非空对象,将该非空对象作为适合处理触摸事件的视图控件,调用该子视图控件的touch方法,若该视图未实现touch方法,则沿着事件响应链条自下而上传递,直至能够到视图控件处理该触摸事件,从而到最合适的控件原始响应触摸事件。
94.在一些实施例的步骤s130中,通过响应者链条捕获控件,根据控件的类别和属性生成了自动化测试中可用于定位的信息即控件信息。控件元素的类别包括button、label、imageview等,每一类别的控件元素对应一控件属性,例如button的属性为title,label的属性为text,imageview的属性为imagename。根据控件元素的类别和控件元素的属性确定控件信息,例如控件元素的类别为button,控件元素的属性为title,根据类别和属性确定控件元素的名称为title的具体取值,控件元素的坐标为该控件元素的hittest:withevent方法返回的坐标,包括当前控件元素的坐标、当前控件元素其父控件的坐标、当前控件元素相对于其父控件元素的坐标等,控件元素的accessibility identifier则是根据不同的控件,设定不同的生成规则并返回,比如一个显示“登录”的按钮,生成的id为((button)登录),accessibility identifier为视图的属性标识符,例如按钮、文本、图像等,以区分不同视图控件,根据视图的touch方法可以进行手势识别,以得到触摸事件的操作类型。将控件名称、控件坐标、accessibility identifier、触摸事件的操作类型作为控件信息,并根据这些控件信息生成录制弹窗,该录制弹窗页面包括触摸事件的操作类型、控件元素的坐标、控件元素的名称等信息,其中操作类型包括点击、长按、滚动、输入等。若触摸事件的操作类型为点击,则录制弹窗页面的操作类型也为点击。
95.请参阅图4,在一些实施例中,操作类型包括点击操作、长按操作、滚动操作、输入操作、断言操作中的至少一种,步骤s140可以包括但不限于包括步骤s410至步骤s450中的至少一种:
96.步骤s410,若测试步骤为点击测试,则获取根据点击测试在录制弹窗进行的点击操作;
97.步骤s420,若测试步骤为长按测试,则获取根据长按测试在录制弹窗进行的长按操作;
98.步骤s430,若测试步骤为滚动测试,则获取根据滚动测试在录制弹窗进行的滚动操作;
99.步骤s440,若测试步骤为输入测试,则获取根据输入测试在录制弹窗进行的输入操作;
100.步骤s450,若测试步骤为断言测试,则获取根据断言测试在录制弹窗进行的断言操作。
101.在一些实施例的步骤s410中,获取根据测试步骤在录制弹窗进行操作的操作类型,例如当前测试步骤为点击登录按钮,则在录制弹窗进行操作的操作类型为点击,若当前测试步骤为输入密码,则在录制弹窗进行操作的操作类型为点击输入,若当前测试步骤为断言,需要判断当前界面是否含有“登录成功”的提示,则在录制弹窗进行操作的操作类型为断言。
102.由于根据控件信息自动生成的录制弹窗的操作类型可能不准确,通过用户根据测试步骤重新选择操作类型,以修正操作类型方面的错误。若测试步骤为点击测试,则用户在录制弹窗上选取的操作类型为点击操作。具体地,录制弹窗上包括点击、长按、滚动、输入、断言等多个标签,录制弹窗自动识别的操作类型为点击标签,但当前测试步骤为输入,则用户通过选取输入标签,重新修改录制弹窗的操作类型为输入。
103.在一些实施例的步骤s420中,若测试步骤为长按测试,则用户在录制弹窗上选取的操作类型为长按操作。
104.在一些实施例的步骤s430中,若测试步骤为滚动测试,则用户在录制弹窗上选取的操作类型为滚动操作。
105.在一些实施例的步骤s440中,若测试步骤为输入测试,则用户在录制弹窗上选取的操作类型为输入操作。
106.在一些实施例的步骤s450中,若测试步骤为断言测试,则用户在录制弹窗上选取的操作类型为断言操作。断言类型可以为判断界面文本是否存在、界面是否包含某一文本内容等。
107.上述步骤s410至s450,根据测试步骤选取在录制弹窗进行操作的操作类型,能够修正录制弹窗定位的操作类型的错误,提高测试脚本的准确性。
108.请参阅图5,在一些实施例中,录制弹窗设置有配置开关,步骤s150可以包括但不限于包括步骤s510至步骤s520:
109.步骤s510,获取配置开关的配置信息;
110.步骤s520,根据配置信息和操作类型进行测试脚本录制,得到测试脚本。
111.在一些实施例的步骤s510,用户在录制弹窗上设置配置开关的配置信息,其中配置开关包括等待时长设置开关和过滤开关,等待时长设置开关用于设置等待时长信息,过滤开关用于设置过滤标识信息。
112.在一些实施例的步骤s520,根据配置信息、录制弹窗的操作类型和录制弹窗的其他控件信息进行测试脚本录制,点击完成按钮,完成当前测试步骤的脚本录制,当完成当前案例测试流程的所有测试步骤的脚本录制后,点击保存按钮,得到测试脚本。将测试脚本上
传到自动化测试管理后台,自动化测试管理后台根据请求将测试脚本下发到指定的执行机器,执行机器执行测试脚本,生成待测应用程序的测试报告。
113.上述步骤s510至步骤s520,通过配置开关信息和操作类型进行测试脚本录制,能够得到测试脚本,使得可以根据测试脚本进行ui自动化测试,提高ui测试的效率。
114.请参阅图6,在一些实施例中,配置信息包括等待时长信息和过滤标识信息中的至少一种,步骤s520可以包括但不限于包括步骤s610至步骤s620中的至少一种:
115.步骤s610,根据等待时长信息和操作类型进行测试脚本录制,得到测试脚本;
116.步骤s620,根据过滤标识信息和操作类型进行测试脚本录制,得到测试脚本。
117.在一些实施例的步骤s610中,当加载待测应用程序的数据时,数据被返回后才会过滤界面,但是数据加载需要一定的时间,为了避免数据加载慢导致对该界面的测试失败,需要设置等待时长信息。具体地,当点击了某个按钮,会请求后台加载待测应用程序的数据,后台数据返回以后应用程序才会从当前界面过滤到下一界面,若请求的时长是2秒,那么等待时长就要大于2秒,才能执行下一步操作,否则在点击这个按钮之后,马上就进行下一个页面的操作,会导致执行失败。
118.在一些实施例的步骤s620中,若过滤开关为开,则过滤标识信息为真,当前步骤执行失败后,还能继续执行一下步骤,用于处理一些非必现的弹窗。若过滤开关为关,则过滤标识信息为假,当前步骤执行失败后,则不会继续执行下一步骤。
119.例如,在脚本录制时,有个弹窗在早上会弹出用于提示“早上好”,用户需要手动点击“确定”以取消该弹窗,但是用于提示早上好的弹窗有弹出时间限制,在晚上时该用于提示早上好的弹窗并不会弹出来。若没有设置过滤标识信息过滤该弹出步骤的识别,在晚上若利用测试脚本测试应用程序,由于当前应用程序的页面没有出现“确定”按钮,会导致执行失败,若设置过滤开关为开,即使未出现“确定”按钮,也会继续往下执行。
120.上述步骤s610至步骤s620,通过设置等待时长信息和过滤标识信息,能够提高测试脚本的准确率,以利用该测试脚本对待测应用程序进行测试,得到准确的测试结果。
121.请参阅图7,在一些实施例中,在步骤s150之后,测试脚本录制方法可以包括但不限于包括步骤s710至步骤s730:
122.步骤s710,根据预设的命名规则对测试脚本进行命名,得到命名后的测试脚本;
123.步骤s720,将命名后的测试脚本存储至预设的数据库;
124.步骤s730,响应于对命名后的测试脚本的点击操作,从数据库读取命名后的测试脚本,并根据命名后的测试脚本对待测应用程序进行测试。
125.在一些实施例的步骤s710中,根据案例测试流程对测试脚本进行命名,得到命名后的测试脚本。例如,案例测试流程为录制登录流程,则命名后的测试脚本可以为登录流程。
126.在一些实施例的步骤s720中,将命名后的测试脚本存储至待测应用程序所在终端连接的数据库,数据库可以为redis或者oracle等数据库。
127.在一些实施例的步骤s730中,响应于对命名后的测试脚本的点击操作,从数据库读取命名后的测试脚本,并根据命名后的测试脚本对待测应用程序进行测试,通过数据库便于使用同一测试脚本对多个同一类型的待测应用程序进行测试,提高测试脚本的复用度。
128.上述步骤s710至步骤s730,通过将命名后的测试脚本存储至待测应用程序所在终端连接的数据库,可以保证测试脚本能够被复用,避免重新录制测试脚本,提高了ui测试的效率。
129.通过ui自动化测试可以避免测试人员惯性思维所导致的测试疏漏,也可减少测试人员由于手工测试中繁复的重复工作所导致的人为差错。但是传统的ui自动化测试要求参测人员在办公电脑上配置自动化测试的环境,而搭建环境以及学习环境匹配的指令所耗费的时间成本比较高,即使搭建好环境,自动化测试工具抓取应用程序信息的效率较低,单一步骤的操作需要耗时十秒以上才能完成,且只有与特定设备匹配的电脑才能测试该特定设备上的应用程序,例如只有搭配a系统的电脑才能测试a设备上的应用程序;自动化测试还需要测试人员具备一定的开发基础编写自动化测试脚本,无法做到上手即用,且维护已经编写完成的自动化测试脚本成本较大,当ui发生变动时,需要针对ui的变动逐一修改自动化测试脚本,这些都导致传统ui自动化测试的录制流程相对冗长复杂,给ui自动化测试的维护成本带来了很大挑战,也不可避免地限制了ui自动化测试的作用范围,给软件测试交付质量带来了风险。
130.为了解决测试人员录入和维护自动化测试脚本成本高的难题,本技术实施例将测试脚本录制方法集成为sdk软件包,将该软件包嵌入应用程序,使该软件包运行在应用程序上。嵌入了该sdk的app,摆脱了传统的手机连接电脑使用工具抓取控件的繁琐方案,在正常地操作app的时候,就可以方便地获取每个页面元素的操作定位数据即控件信息,并根据控件信息生成录制弹窗,在录制弹窗上选择操作类型并按需设置配置开关的配置信息,根据操作类型、控件信息和配置信息进行测试脚本录制,生成测试脚本,将测试脚本上传到管理后台,再按需下发到指定的执行机器,就可以方便地进行自动化测试并生成报告。
131.通过该sdk可以大大地降低测试人员的录入成本,不再需要像传统的案例录入流程先把被测设备连接到装好环境的电脑上,再使用工具逐个页面选中控件获取定位信息。测试人员仅需要一台终端设备,就可以完成录入ui自动化测试案例数据的工作。而且,测试人员在app内,就可以在弹窗上按需进行执行类型分配,不再需要进行代码编写,大大降低了使用门槛,在摆脱了这些冗杂的流程后,单步录入的时间最快仅需1到2秒。本技术实施例的sdk可以降低录入和维护自动化测试脚本的成本、降低使用门槛,从而把ui自动化测试的作用范围增大,为软件系统质量保驾护航,提高了软件系统的服务质量和用户对软件系统的使用满意度。
132.请参阅图8,本技术实施例还提供一种测试脚本录制装置,该测试脚本录制装置可以实现上述测试脚本录制方法,该装置包括:
133.第一获取模块810,用于获取在待测应用程序的界面进行操作触发的多个操作事件;其中,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤;
134.筛选模块820,用于根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素;
135.录制弹窗生成模块830,用于根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗;
136.第二获取模块840,用于获取根据测试步骤在录制弹窗进行操作的操作类型;
137.测试脚本录制模块850,用于根据操作类型进行测试脚本录制,得到测试脚本;其中,测试脚本用于对待测应用程序进行测试。
138.请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
139.处理器910,可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术实施例所提供的技术方案;
140.存储器920,可以采用只读存储器(readonlymemory,rom)、静态存储设备、动态存储设备或者随机存取存储器(randomaccessmemory,ram)等形式实现。存储器920可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器920中,并由处理器910来调用执行本技术实施例的测试脚本录制方法;
141.输入/输出接口930,用于实现信息输入及输出;
142.通信接口940,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信;
143.总线950,在设备的各个组件(例如处理器910、存储器920、输入/输出接口930和通信接口940)之间传输信息;
144.其中处理器910、存储器920、输入/输出接口930和通信接口940通过总线950实现彼此之间在设备内部的通信连接。
145.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述测试脚本录制方法。
146.存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
147.本技术实施例提供的测试脚本录制方法、测试脚本录制装置、电子设备及计算机可读存储介质,其通过获取在待测应用程序的界面进行操作触发的多个操作事件,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤,根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素,根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗,能够根据不同的操作事件生成不同的录制弹窗页面,避免了ui变动时人工手动修改测试脚本。进一步地,通过获取根据测试步骤在录制弹窗进行操作的操作类型,以对错误的录制弹窗页面进行纠正,根据操作类型进行测试脚本录制,得到测试脚本,测试脚本用于对待测应用程序进行测试,能够生成自动化测试脚本,提高ui测试的效率。
148.本技术实施例描述的实施例是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
149.本领域技术人员可以理解的是,图中示出的技术方案并不构成对本技术实施例的
限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
150.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
151.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
152.本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
153.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“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可以是单个,也可以是多个。
154.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
155.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
156.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
157.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随
机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。
158.以上参照附图说明了本技术实施例的优选实施例,并非因此局限本技术实施例的权利范围。本领域技术人员不脱离本技术实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本技术实施例的权利范围之内。

技术特征:


1.测试脚本录制方法,其特征在于,所述方法包括:获取在待测应用程序的界面进行操作触发的多个操作事件;其中,所述操作事件为根据预设的案例测试流程进行操作触发的事件,所述案例测试流程包括多个测试步骤;根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素;根据所述控件元素的类别和所述控件元素的属性确定控件信息,并根据所述控件信息生成录制弹窗;获取根据所述测试步骤在所述录制弹窗进行操作的操作类型;根据所述操作类型进行测试脚本录制,得到测试脚本;其中,所述测试脚本用于对所述待测应用程序进行测试。2.根据权利要求1所述的测试脚本录制方法,其特征在于,所述响应者链条包括父视图和子视图,所述根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素,包括:若所述事件类型为触摸事件,将所述操作事件添加至预设的事件队列;从所述事件队列中依次取出所述操作事件,将所述操作事件分发至所述父视图;若触发所述操作事件的触摸点位于所述父视图的第一坐标范围内,则将所述操作事件分发至所述父视图的全部所述子视图;根据所述触摸点对所述子视图进行响应者筛选,得到所述控件元素。3.根据权利要求2所述的测试脚本录制方法,其特征在于,所述根据所述触摸点对所述子视图进行响应者筛选,得到所述控件元素,包括:对全部所述子视图进行倒序遍历;若所述触摸点位于当前所述子视图的第二坐标范围内,则将当前所述子视图作为所述控件元素;若所述触摸点在全部所述子视图中均不位于所述子视图的所述第二坐标范围内,则将所述父视图作为所述控件元素。4.根据权利要求1所述的测试脚本录制方法,其特征在于,所述操作类型包括点击操作、长按操作、滚动操作、输入操作、断言操作中的至少一种,获取根据所述测试步骤在所述录制弹窗进行操作的操作类型,包括:若所述测试步骤为点击测试,则获取根据所述点击测试在所述录制弹窗进行的所述点击操作;若所述测试步骤为长按测试,则获取根据所述长按测试在所述录制弹窗进行的所述长按操作;若所述测试步骤为滚动测试,则获取根据所述滚动测试在所述录制弹窗进行的所述滚动操作;若所述测试步骤为输入测试,则获取根据所述输入测试在所述录制弹窗进行的所述输入操作;若所述测试步骤为断言测试,则获取根据所述断言测试在所述录制弹窗进行的所述断言操作。5.根据权利要求1所述的测试脚本录制方法,其特征在于,所述录制弹窗设置有配置开
关,所述根据所述操作类型进行测试脚本录制,得到测试脚本,包括:获取所述配置开关的配置信息;根据所述配置信息和所述操作类型进行测试脚本录制,得到所述测试脚本。6.根据权利要求5所述的测试脚本录制方法,其特征在于,所述配置信息包括等待时长信息和过滤标识信息中的至少一种,所述根据所述配置信息和所述操作类型进行测试脚本录制,得到所述测试脚本,包括:根据所述等待时长信息和所述操作类型进行测试脚本录制,得到所述测试脚本;根据所述过滤标识信息和所述操作类型进行测试脚本录制,得到所述测试脚本。7.根据权利要求1至6任一项所述的测试脚本录制方法,其特征在于,在所述根据所述操作类型进行测试脚本录制,得到测试脚本之后,包括:根据预设的命名规则对所述测试脚本进行命名,得到命名后的测试脚本;将所述命名后的测试脚本存储至预设的数据库;响应于对所述命名后的测试脚本的点击操作,从所述数据库读取所述命名后的测试脚本,并根据所述命名后的测试脚本对所述待测应用程序进行测试。8.测试脚本录制装置,其特征在于,所述装置包括:第一获取模块,用于获取在待测应用程序的界面进行操作触发的多个操作事件;其中,所述操作事件为根据预设的案例测试流程进行操作触发的事件,所述案例测试流程包括多个测试步骤;筛选模块,用于根据所述操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应所述操作事件的控件元素;录制弹窗生成模块,用于根据所述控件元素的类别和所述控件元素的属性确定控件信息,并根据所述控件信息生成录制弹窗;第二获取模块,用于获取根据所述测试步骤在所述录制弹窗进行操作的操作类型;测试脚本录制模块,用于根据所述操作类型进行测试脚本录制,得到测试脚本;其中,所述测试脚本用于对所述待测应用程序进行测试。9.电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的测试脚本录制方法。10.计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的测试脚本录制方法。

技术总结


本申请实施例提供一种测试脚本录制方法和装置、电子设备及存储介质,属于计算机技术领域,通过获取在待测应用程序的界面进行操作触发的多个操作事件,其中,操作事件为根据预设的案例测试流程进行操作触发的事件,案例测试流程包括多个测试步骤,根据操作事件的事件类型对预设的响应者链条进行响应者筛选,得到响应操作事件的控件元素,根据控件元素的类别和控件元素的属性确定控件信息,并根据控件信息生成录制弹窗,获取根据测试步骤在录制弹窗进行操作的操作类型,根据操作类型进行测试脚本录制,得到测试脚本,其中,测试脚本用于对待测应用程序进行测试,本申请实施例的测试脚本录制方法能够生成自动化测试脚本,提高U I测试的效率。试的效率。试的效率。


技术研发人员:

甘雨

受保护的技术使用者:

中国平安人寿保险股份有限公司

技术研发日:

2022.10.12

技术公布日:

2022/12/30

本文发布于:2024-09-22 01:09:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/50702.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   测试   操作   脚本
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议