自动化测试方法及设备与流程

文档序号:29733562发布日期:2022-04-21 13:22阅读:99来源:国知局
自动化测试方法及设备与流程

1.本技术涉及数据处理技术领域,特别涉及自动化测试技术。


背景技术:

2.安卓设备(例如手机、支付装置、电视机、平板电脑等)在出厂之前或者安卓应用在新版上线前,均需要对其进行测试。现有自动化测试方法主要有两种:(1)基于android平台原生自动化测试框架,如instrumentation、uiautomator等进行测试;(2)基于录制或编写自动化测试脚本进行测试。
3.但是现有的两种测试方法无法满足现有测试需求,其中基于android平台原生自动化测试框架无法模拟系统事件,在进行自动化系统测试时存在用例覆盖率低的问题,而基于录制或编写自动化测试脚本的方法虽能达到模拟系统事件的目的,但适用场景有限,多适用于系统测试,不适用于集成测试和单元测试。


技术实现要素:

4.本技术的目的在于提供一种自动化测试方法及设备,支持用例级模拟系统事件,解决了用例覆盖率低和测试场景受限的问题。
5.本技术公开了一种自动化测试方法,包括:
6.测试终端与被测设备建立连接;
7.安装测试应用到所述被测设备,所述测试应用包含若干测试用例;
8.所述测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述测试终端发送模拟该系统事件的请求;
9.响应于所述请求,所述测试终端向所述被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到所述测试应用;
10.所述测试应用根据所述模拟结果执行该依赖系统事件的测试用例,返回执行结果至所述测试终端。
11.在一个优选例中,所述系统事件包括关闭除usb共享网络以外的任一或任多种网络开关;
12.所述测试终端与被测设备建立连接,进一步包括:
13.所述测试终端与所述被测设备建立usb共享网络连接。
14.在一个优选例中,所述若干测试用例的被测体包括以下的一种或多种:
15.整个系统、模块间的集成和调用关系、模块内部的程序。
16.在一个优选例中,所述系统事件还包括以下的一者或多者:
17.关闭流量开关、关闭蓝牙开关、关闭位置服务开关、增加被测应用权限、减少被测应用权限。
18.在一个优选例中,所述被测设备为安卓设备,所述模拟操作接口为adb命令。
19.在一个优选例中,所述测试终端与所述被测设备建立usb共享网络连接时,还包
括:
20.所述测试终端启动http server;
21.所述测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述测试终端发送模拟该系统事件的请求,进一步包括:
22.所述测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述http server发送包含该系统事件参数的http请求;
23.所述响应于所述请求,所述测试终端向所述被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到所述测试应用,进一步包括:
24.响应于所述http请求,通过所述http server解析所述http请求,查找该http请求中系统事件参数对应的adb命令,向所述安卓设备发送该adb命令模拟系统事件并获取模拟结果,通过http响应将该模拟结果返回给所述测试应用。
25.在一个优选例中,所述测试终端与被测设备建立连接进一步包括:
26.所述测试终端使用adb forward命令启动所述测试终端的第一端口与所述安卓设备的第二端口的转发功能;
27.所述测试终端启动socket客户端连接所述第一端口,所述安卓设备启动socket服务端监听所述第二端口;
28.所述测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述测试终端发送模拟该系统事件的请求,进一步包括:
29.所述测试应用通过所述socket服务端向所述socket客户端发送包含该系统事件参数的报文;
30.所述响应于所述请求,所述测试终端向所述被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到所述测试应用,进一步包括:
31.通过所述socket客户端解析所述报文,查找该报文中系统事件参数对应的adb命令,向所述安卓设备发送该adb命令模拟系统事件,并获取模拟结果,将该模拟结果返回给所述socket服务端;
32.所述socket服务端将所述模拟系统事件的结果转发给所述测试应用。
33.在一个优选例中,所述测试应用根据所述模拟结果执行该依赖系统事件的测试用例,返回执行结果至所述测试终端,进一步包括:
34.若所述模拟结果为“成功”,则所述测试应用执行该依赖系统事件的测试用例,否则判定该依赖系统事件的测试用例执行失败;
35.所述测试应用将所述模拟结果和测试用例的执行结果返回给所述测试终端。
36.本技术还公开了一种自动化测试设备包括:
37.通信模块,用于与被测设备建立连接,安装测试应用到所述被测设备,所述测试应用包含若干测试用例,其中,所述测试应用被配置为被安装到所述被测设备后,依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述自动化测试设备发送模拟该系统事件的请求;
38.模拟操作模块,用于响应于所述请求,向所述被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到所述测试应用,其中,所述测试应用还被配置为根据所述模拟结果执行该依赖系统事件的测试用例,返回执行结果至所述自动化测试
设备。
39.在一个优选例中,所述系统事件包括关闭除usb共享网络以外的任一或任多种网络开关,所述通信模块还用于与所述被测设备建立usb共享网络连接。
40.在一个优选例中,所述若干测试用例的被测体包括以下的一种或多种:
41.整个系统、模块间的集成和调用关系、模块内部的程序。
42.在一个优选例中,所述系统事件还包括以下的一者或多者:
43.关闭流量开关、关闭蓝牙开关、关闭位置服务开关、增加被测应用权限、减少被测应用权限。
44.在一个优选例中,所述被测设备为安卓设备,所述模拟操作接口为adb命令。
45.在一个优选例中,所述通信模块还用于启动http server;
46.所述测试应用还被配置为依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述http server发送包含该系统事件参数的http请求;
47.所述模拟操作模块还用于响应于所述http请求,通过所述http server解析所述http请求,查找该http请求中系统事件参数对应的adb命令,向所述安卓设备发送该adb命令模拟系统事件并获取模拟结果,通过http响应将该模拟结果返回给所述测试应用。
48.在一个优选例中,所述通信模块还用于使用adb forward命令启动所述自动化测试设备的第一端口与所述安卓设备的第二端口的转发功能,启动socket客户端连接所述第一端口,所述安卓设备启动socket服务端监听所述第二端口;
49.所述测试应用还被配置为通过所述socket服务端向所述socket客户端发送包含该系统事件参数的报文;
50.所述模拟操作模块还用于通过所述socket客户端解析所述报文,查找该报文中系统事件参数对应的adb命令,向所述安卓设备发送该adb命令模拟系统事件,并获取模拟结果,将该模拟结果返回给所述socket服务端,通过所述socket服务端将所述模拟系统事件的结果转发给所述测试应用。
51.本技术还公开了一种自动化测试设备包括:
52.存储器,用于存储计算机可执行指令;以及,
53.处理器,用于在执行所述计算机可执行指令时实现如前文描述的方法中的步骤。
54.本技术还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
55.本技术实施方式中,与现有技术相比,至少包括以下有益效果:
56.在安卓(android)平台原生自动化测试框架的基础上增加模拟系统事件的功能,支持用例级模拟系统事件,且测试用例的被测体可以包括整个系统、模块间的集成和调用关系、模块内部的程序中的一种或多种,解决了用例覆盖率低和测试场景受限的问题。
57.而且,本技术的实施方式不仅适用于黑盒测试,也适用于白盒测试。
58.本技术的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本技术所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本技术上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各
种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。
附图说明
59.图1是根据本技术第一实施方式的自动化测试方法流程示意图。
60.图2是根据本技术的一个示例自动化测试方法流程示意图。
61.图3是根据本技术的一个示例自动化测试方法流程示意图。
62.图4是根据本技术第二实施方式的自动化测试设备结构示意图。
具体实施方式
63.在以下的叙述中,为了使读者更好地理解本技术而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本技术所要求保护的技术方案。
64.部分概念的说明:
65.usb共享网络:一种外部被测设备通过usb连接与pc端共享网络资源的技术。
66.adb:android debug bridge。
67.自动化测试:一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。
68.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术的实施方式作进一步地详细描述。
69.本技术的第一实施方式涉及一种自动化测试方法,其流程如图1所示,该方法包括以下步骤:
70.在步骤101中,测试终端与被测设备建立连接。例如,可以但不限于是usb连接。
71.可选地,该测试终端可以但不限于是pc机。
72.可选地,该被测设备可以但不限于是安卓设备,该模拟操作接口为adb命令。
73.之后,进入步骤102,测试终端安装测试应用到该被测设备,该测试应用包含若干测试用例。
74.可选地,该若干测试用例的被测体包括以下的一种或多种:
75.整个系统、模块间的集成和调用关系、模块内部的程序。
76.之后,进入步骤103,该测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向该测试终端发送模拟该系统事件的请求。
77.可选地,该系统事件可以包括关闭除usb共享网络以外的任一或任多种网络开关,例如同时关闭wlan网络开关和移动网络开关,例如只关闭wlan网络开关等。该步骤101进一步实现为:该测试终端与该被测设备建立usb共享网络连接。
78.可选地,该系统事件还可以包括以下的一者或多者:
79.关闭流量开关、关闭蓝牙开关、关闭位置服务开关、增加被测应用权限、减少被测
应用权限。
80.之后,进入步骤104,响应于该请求,该测试终端向该被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到该测试应用。
81.在一个实施例中,该测试终端与该被测设备建立usb共享网络连接时,还包括步骤:该测试终端启动http server。该步骤103可以进一步实现为:该测试应用依次执行测试用例,当执行到依赖系统事件的测试用例时,向该http server发送携带标识该系统事件参数的http请求。该步骤104可以进一步实现为:响应于该http请求,通过该http server解析该http请求的参数,查找该参数对应的系统事件,向该安卓设备发送adb命令模拟系统事件并获取adb命令执行结果,通过http响应将该执行结果返回给该测试应用。
82.在另一个实施例中,该步骤101之后,还包括以下步骤:该测试终端使用adb forward命令启动该测试终端的第一端口与该安卓设备的第二端口的转发功能;该测试终端启动socket客户端连接该第一端口;该安卓设备启动socket服务端监听该第二端口。该步骤103可以进一步实现为:该测试应用通过该socket服务端向该socket客户端发送携带标识该系统事件参数的报文。该步骤104可以进一步实现为:该socket客户端解析该报文中的参数,查找该参数对应的系统事件,向该安卓设备发送adb命令模拟系统事件,并获取adb命令执行结果,将模拟系统事件的结果返回给该socket服务端;该socket服务端将该模拟系统事件的结果转发给该测试应用。
83.之后,进入步骤105,该测试应用根据该模拟结果执行该依赖系统事件的测试用例,返回执行结果至该测试终端。
84.可选地,该步骤105可以进一步包括以下子步骤105a~105c:
85.步骤105a,若该模拟结果为“成功”,则该测试应用执行该依赖系统事件的测试用例;
86.步骤105b,若该模拟结果为“失败”,判定该依赖系统事件的测试用例执行失败;
87.步骤105c,该测试应用将该模拟结果和测试用例的执行结果返回给该测试终端。
88.可选地,该自动化测试方法还包括:该测试应用依次执行测试用例时,在当前测试用例执行结束、下一个测试用例开始执行前,该测试终端向该被测设备发送当前测试用例依赖的系统事件的反向系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到测试应用。例如,当前测试用例依赖的系统事件是“关闭蓝牙开关”,为了不影响下一个测试用例的执行,在执行下一个测试用例前,该测试终端向该被测设备发送“打开蓝牙开关”的模拟操作接口以模拟系统事件。
89.为了能够更好地理解本技术的技术方案,下面结合两个具体的例子(示例1和示例2)来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本技术保护范围的限制。
90.示例1阐述了本发明如何实现用例级的系统事件模拟,其中使用usb共享网络的原因在于安卓设备关闭网络开关后安卓设备依然可以通过共享网络和pc端进行通信,本发明中使用在pc端搭建http server的方式实现设备通信。如图2所示,该示例1具体包括以下步骤1~步骤9:
91.步骤1,将安卓设备通过usb接口连接到pc端;
92.步骤2,开启安卓设备的usb共享网络开关;
93.步骤3,pc端连接安卓设备的共享网络并关闭其他网络连接;
94.步骤4,pc端启动http server用于监听来自安卓设备的http请求;
95.步骤5,pc端完成用例代码编写和编译后安装测试应用到安卓设备,启动自动化测试流程;
96.步骤6,测试应用执行某个依赖系统事件的测试用例,该步骤包含步骤7,8,9;
97.步骤7,测试应用向pc端的http server发送http请求,请求参数标识某个系统事件;
98.步骤8,pc端的http server解析http请求参数,查找参数对应的系统事件,通过usb向安卓设备发送adb命令模拟系统事件并获取adb命令执行结果;
99.步骤9,pc端的http server将模拟系统事件的结果通过http响应返回给测试应用。
100.示例2阐述了本发明如何实现用例级的系统事件模拟,其中使用adb forward进行端口转发的原因在于安卓设备关闭网络开关后安卓设备依然可以通过端口转发和pc端进行通信,本发明中使用在socket通信的方式实现设备通信。如图3所示,该示例1具体包括以下步骤1~步骤9:
101.步骤1,将安卓设备通过usb接口连接到pc端;
102.步骤2,使用adb forward命令启动端口转发功能,该功能可将发往pc设备端口a的报文转发到安卓设备的端口b上,本专利中将端口a称为转发端口,端口b称为接收端口;
103.步骤3,在安卓设备启动一个socket服务端监听接收端口;
104.步骤4,在pc端启动一个socket客户端连接转发端口,实际上是和安卓设备的socket服务端建立了连接,该客户端用于接收来自服务端下发的命令;
105.步骤5,pc端完成用例代码编写和编译后安装测试应用到安卓设备,启动自动化测试流程;
106.步骤6,测试应用执行某个依赖系统事件的测试用例,该步骤包含步骤7,8,9;
107.步骤7,测试应用通过socket服务端向pc端的socket客户端发送tcp报文,报文中携带参数,参数标识某个系统事件;
108.步骤8,pc端的socket客户端解析tcp报文中的参数,查找参数对应的系统事件,通过usb向安卓设备发送adb命令模拟系统事件并获取adb命令执行结果;
109.步骤9,pc端的socket客户端将模拟系统事件的结果通过tcp报文返回给socket服务端,socket服务端转发给测试应用。
110.本技术的第二实施方式涉及一种自动化测试设备,其结构如图4所示,该自动化测试设备包括通信模块和模拟操作模块;
111.该通信模块用于与被测设备建立连接(例如,可以但不限于是usb连接),安装测试应用到所述被测设备,所述测试应用包含若干测试用例,其中,所述测试应用被配置为在被安装到所述被测设备后依次执行测试用例,当执行到依赖系统事件的测试用例时,向所述自动化测试设备发送模拟该系统事件的请求;该模拟操作模块用于响应于所述请求,向所述被测设备发送对应该系统事件的模拟操作接口以模拟系统事件,并返回模拟结果到所述测试应用,其中,所述测试应用还被配置为根据所述模拟结果执行该依赖系统事件的测试用例,返回执行结果至所述自动化测试设备。
112.可选地,该系统事件可以包括关闭除usb共享网络以外的任一或任多种网络开关,例如同时关闭wlan网络开关和移动网络开关,例如只关闭wlan网络开关等,该通信模块还用于与该被测设备建立usb共享网络连接。
113.可选地,该若干测试用例的被测体包括以下的一种或多种:
114.整个系统、模块间的集成和调用关系、模块内部的程序。
115.可选地,该系统事件还包括以下的一者或多者:
116.关闭流量开关、关闭蓝牙开关、关闭位置服务开关、增加被测应用权限、减少被测应用权限。
117.可选地,该测试终端可以但不限于是pc机。
118.可选地,该被测设备可以但不限于是安卓设备,该模拟操作接口为adb命令。
119.在一个实施例中,该通信模块还用于启动http server;该测试应用还被配置为依次执行测试用例,当执行到依赖系统事件的测试用例时,向该http server发送携带标识该系统事件参数的http请求;该模拟操作模块还用于响应于该http请求,通过该http server解析该http请求的参数,查找该参数对应的系统事件,向该安卓设备发送adb命令模拟系统事件并获取adb命令执行结果,通过http响应将该执行结果返回给该测试应用。
120.在另一个实施例中,该通信模块还用于使用adb forward命令启动该自动化测试设备的第一端口与该安卓设备的第二端口的转发功能,启动socket客户端连接该第一端口;该安卓设备启动socket服务端监听该第二端口;该测试应用还被配置为通过该socket服务端向该socket客户端发送携带标识该系统事件参数的报文;该模拟操作模块还用于通过该socket客户端解析该报文中的参数,查找该参数对应的系统事件,向该安卓设备发送adb命令模拟系统事件,并获取adb命令执行结果,将模拟系统事件的结果返回给该socket服务端,通过该socket服务端将该模拟系统事件的结果转发给该测试应用。
121.第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
122.需要说明的是,本领域技术人员应当理解,上述自动化测试设备的实施方式中所示的各模块的实现功能可参照前述自动化测试方法的相关描述而理解。上述自动化测试设备的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本技术实施例上述自动化测试设备如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read only memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
123.相应地,本技术实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本技术的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储
介质的例子包括但不限于,相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
124.此外,本技术实施方式还提供一种自动化测试设备,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(central processing unit,简称“cpu”),还可以是其他通用处理器、数字信号处理器(digital signal processor,简称“dsp”)、专用集成电路(application specific integrated circuit,简称“asic”)等。前述的存储器可以是只读存储器(read-only memory,简称“rom”)、随机存取存储器(random access memory,简称“ram”)、快闪存储器(flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
125.需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
126.在本技术提及的所有文献都被认为是整体性地包括在本技术的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1