桥接测试方法、装置、系统及存储介质与流程

文档序号:27321619发布日期:2021-11-10 00:44阅读:191来源:国知局
桥接测试方法、装置、系统及存储介质与流程

1.本公开涉及计算机领域,尤其涉及桥接测试方法、装置、系统及存储介质。


背景技术:

2.随着互联网技术的发展,基于网络提供的业务越来越多样化,业务场景复杂,对于客户端的功能需要高度的动态性,而h5拥有不需要发布新版本的客户端便可以新增功能的能力,所以基于h5页面开发的功能已成为不可或缺的一部分。h5是超文本标记语言(html,hyper text markup language)5的简称,是构建以及呈现互联网内容的一种语言方式。然而,h5往往需要使用客户端的原生(native)程序的能力来实现一些功能,比如获取设备信息,客户端信息,打开新的客户端原生页面等。为此,可以根据业务场景封装出桥接(bridge),来实现h5和客户端的原生程序之间的交互。相关技术中,为保障桥接的功能,需要对桥接进行测试。但是,相关技术中的桥接测试方式,过于依赖人工,测试效率低下。
3.由于h5提供的是展现给用户浏览的前端页面,因此,h5也称前端h5。相关技术中的一种桥接测试方式,依赖h5提供调用桥接的示例代码,并需要人工点击前端页面,通过日志(log)输出来验证桥接的功能。当测试工程师需要测试新增的一个桥接时,需要协调h5的开发人员,如图1所示,步骤s11,将测试的桥接告诉h5的开发人员;步骤s12,开发出新增的桥接的调用方法,以更新h5的前端页面,并重新部署到服务端。然后,执行测试:步骤s13,人工点击测试页面;步骤s14,h5调用桥接的调用方法来调用客户端中设置的原生程序与h5通信的桥接;步骤s15,客户端将桥接的执行结果返回h5;步骤s16,h5输出桥接相关日志给测试端;测试端的测试工程师查看结果,步骤s17,编写测试报告。但是,每次新增桥接需要依赖h5的开发人员修改前端页面,但是桥接的调用语法往往相对固定,每次新增仅仅为了修改桥接的名字、参数、返回值等字段而需要协调h5的开发人员配合修改,并且需要将修改后的前端页面重新部署到服务端,简单的工作需要多人配合,存在耗时且浪费人力的缺点。


技术实现要素:

4.本公开提供一种桥接测试方法、装置、系统及存储介质,以至少解决相关技术中桥接测试方式,过于依赖人工,测试效率低下的问题。本公开的技术方案如下:
5.根据本公开实施例的第一方面,提供一种桥接测试方法,应用于h5端,该方法包括:
6.接收测试端发送的页面请求,页面请求是测试端基于输入的目标参数构造的,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信;
7.从页面请求中解析出目标参数;
8.基于目标参数生成待测试桥接的调用方法;
9.通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果;
10.输出待测试桥接的执行结果。
11.在一种可能的实施方式中,基于目标参数生成待测试桥接的调用方法步骤包括:
12.将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
13.在一种可能的实施方式中,将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法模板步骤包括:
14.将目标参数,构造成参数对象;
15.将参数对象,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
16.在一种可能的实施方式中,输出待测试桥接的执行结果步骤包括:
17.将待测试桥接的执行结果发送至测试端的桥接测试功能的接口,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能,以使得测试端基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
18.在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
19.在一种可能的实施方式中,将待测试桥接的执行结果发送至测试端的桥接测试功能的接口步骤包括:
20.将待测试桥接的执行结果通过客户端发送至测试端的桥接测试功能的接口。
21.在一种可能的实施方式中,目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
22.根据本公开实施例的第二方面,提供一种桥接测试方法,应用于测试端,该方法包括:
23.基于输入的目标参数构造页面请求,并发送至h5端,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信,以使得h5端从页面请求中解析出目标参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果,输出待测试桥接的执行结果;
24.接收待测试桥接的执行结果。
25.在一种可能的实施方式中,基于输入的目标参数构造页面请求步骤包括:
26.将目标参数,传入页面请求模板,得到初始页面请求;
27.对初始页面请求进行编码,得到h5端能够解码的页面请求。
28.在一种可能的实施方式中,接收待测试桥接的执行结果步骤包括:
29.通过测试端的桥接测试功能的接口,接收h5端发送的待测试桥接的执行结果,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能;
30.基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
31.在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
32.在一种可能的实施方式中,通过测试端的桥接测试功能的接口,接收h5端发送的待测试桥接的执行结果步骤包括:
33.通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果。
34.在一种可能的实施方式中,对待测试桥接的执行结果进行校验步骤包括:
35.对比待测试桥接的执行结果与输入的参考结果是否相同;
36.将对比的结果,作为待测试桥接的校验结果。
37.在一种可能的实施方式中,该方法还包括:
38.响应于确定对待测试桥接完成测试,对待测试桥接之外的已测试的至少一个目标桥接进行回测,并记录回测结果。
39.在一种可能的实施方式中,目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
40.根据本公开实施例的第三方面,提供一种桥接测试装置,应用于h5端,该装置包括:
41.接收单元,被配置为执行接收测试端发送的页面请求,页面请求是测试端基于输入的目标参数构造的,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信;
42.解析单元,被配置为执行从页面请求中解析出目标参数;
43.生成单元,被配置为基于目标参数生成待测试桥接的调用方法;
44.调用单元,被配置为执行通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果;
45.输出单元,被配置为执行输出待测试桥接的执行结果。
46.在一种可能的实施方式中,生成单元,具体被配置为执行:
47.将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
48.在一种可能的实施方式中,生成单元,具体被配置为执行:
49.将目标参数,构造成参数对象;
50.将参数对象,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
51.在一种可能的实施方式中,输出单元,具体被配置为执行:
52.将待测试桥接的执行结果发送至测试端的桥接测试功能的接口,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能,以使得测试端基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
53.在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
54.在一种可能的实施方式中,输出单元,具体被配置为执行:
55.将待测试桥接的执行结果通过客户端发送至测试端的桥接测试功能的接口。
56.在一种可能的实施方式中,目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
57.根据本公开实施例的第四方面,提供一种桥接测试装置,应用于测试端,该装置包括:
58.构造单元,被配置为执行基于输入的目标参数构造页面请求,并发送至h5端,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信,以使得h5端从页面请求中解析出目标参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行
结果,输出待测试桥接的执行结果;
59.接收单元,被配置为执行接收待测试桥接的执行结果。
60.在一种可能的实施方式中,构造单元,具体被配置为执行:
61.将目标参数,传入页面请求模板,得到初始页面请求;
62.对初始页面请求进行编码,得到h5端能够解码的页面请求。
63.在一种可能的实施方式中,接收单元,具体被配置为执行:
64.通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能;
65.基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
66.在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
67.在一种可能的实施方式中,接收单元,具体被配置为执行:
68.通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果。
69.在一种可能的实施方式中,接收单元,具体被配置为执行:
70.对比待测试桥接的执行结果与输入的参考结果是否相同;
71.将对比的结果,作为待测试桥接的校验结果。
72.在一种可能的实施方式中,该装置还包括:
73.回测单元,被配置为执行响应于确定对待测试桥接完成测试,对待测试桥接之外的已测试的至少一个目标桥接进行回测,并记录回测结果。
74.在一种可能的实施方式中,目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
75.根据本公开实施例的第五方面,提供一种桥接测试装置,包括:
76.处理器;
77.用于存储处理器可执行指令的存储器;
78.其中,处理器被配置为执行指令,以实现如第一方面和第二方面中任一的桥接测试方法。
79.根据本公开实施例的第六方面,提供一种桥接测试系统,包括:客户端、测试端和h5端;
80.客户端,被配置为执行处理待测试桥接,待测试桥接用于客户端中设置的原生程序与h5端进行通信;
81.h5端,被配置为执行接收测试端发送的页面请求,从页面请求中解析出目标参数,目标参数是待测试桥接的参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果,输出待测试桥接的执行结果;
82.测试端,被配置为执行基于输入的目标参数构造页面请求,并发送至h5端,以及接收待测试桥接的执行结果。
83.根据本公开实施例的第七方面,提供一种存储介质,当该存储介质中的指令由桥
接测试装置的处理器执行时,使得桥接测试装置能够执行如第一方面和第二方面中任一的桥接测试方法。
84.根据本公开实施例的第八方面,提供一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据第一方面和第二方面中任一的桥接测试方法。
85.本公开的实施例提供的技术方案至少带来以下有益效果:
86.对客户端中设置的原生程序与h5端进行通信的待测试桥接,可以由h5端通过页面请求中解析出的测试端输入的目标参数,自动生成待测试桥接的调用方法,无需频繁依赖h5端的开发人员修改前端页面及部署,然后,自动执行该待测试桥接的调用方法,来调用待测试桥接,无需测试工程师手动点击触发待测试桥接的调用,最后,待测试桥接的执行结果输出,从而实现了对待测试桥接的测试,如此,从整体上提高了测试桥接的自动化程度,提高了测试效率。
87.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
88.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
89.图1是根据一示例性实施例示出的一种桥接测试方法的流程图。
90.图2是根据一示例性实施例示出的一种桥接测试方法的系统架构示意图。
91.图3是根据一示例性实施例示出的一种桥接测试方法的流程图。
92.图4是根据一示例性实施例示出的一种桥接测试方法的流程图。
93.图5是根据一示例性实施例示出的一种桥接测试方法的流程图。
94.图6是根据一示例性实施例示出的一种校验方法的流程图。
95.图7是根据一示例性实施例示出的一种测试界面的示意图。
96.图8是根据一示例性实施例示出的一种测试界面的示意图。
97.图9是根据一示例性实施例示出的一种桥接测试装置的框图。
98.图10是根据一示例性实施例示出的一种桥接测试装置的框图。
99.图11是根据一示例性实施例示出的一种桥接测试装置的框图。
100.图12是根据一示例性实施例示出的一种装置的框图。
101.图13是根据一示例性实施例示出的一种装置的框图。
具体实施方式
102.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
103.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面
相一致的装置和方法的例子。
104.为解决上述相关技术中的桥接测试方式,过于依赖人工,测试效率低下的技术问题,本公开实施例提供了一种桥接测试方法,下面进行详细地介绍。
105.图2是根据一示例性实施例示出的一种桥接测试方法的系统架构示意图。如图2所示,本公开实施例提供的桥接测试方法可以应用于图2所示的系统架构中,该系统架构包括测试端201、客户端202和客户端对应的服务端,该服务端部署有h5,称为h5端203。客户端的页面一部分通过原生程序实现,还有一部分通过h5端实现。客户端中设置有原生程序与h5端进行通信的桥接。实际应用中,当需要对客户端的桥接进行测试时,测试工程师可以在测试端进行简单的输入操作,然后,通过测试端、h5端和客户端的配合,自动实现桥接测试,测试端可以快速得到结果,从而提高了测试效率。
106.首先,以h5端的执行为例,对本公开实施例提供的桥接测试方法进行介绍。
107.图3是根据一示例性实施例示出的一种桥接测试方法的流程图,如图3所示,该桥接测试方法用于h5端中,包括以下步骤。
108.在步骤s31中,接收测试端发送的页面请求,该页面请求是测试端基于输入的目标参数构造的,该目标参数是待测试桥接的参数,该待测试桥接用于客户端中设置的原生程序与h5端进行通信。
109.客户端中设置的原生程序与h5端进行通信交互是依赖一套规范来实现的,比如任意桥接的调用均需要一些参数,这里的目标参数即各桥接的调用所共同需要的参数。实际应用中,目标参数是测试端通过测试工程师的输入操作得到的。
110.在步骤s32中,从页面请求中解析出目标参数。
111.本步骤中通过页面请求来实现目标参数到h5端的传递。
112.在步骤s33中,基于目标参数生成待测试桥接的调用方法。
113.在步骤s34中,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果。
114.实际应用中,执行待测试桥接的调用方法之后,就可以调用待测试桥接,相应的,客户端可以处理待测试桥接并返回待测试桥接的执行结果。举例来说,如果待测试桥接为获取设备信息的接口,相应的执行结果则为设备信息。
115.在步骤s35中,输出待测试桥接的执行结果。
116.本实施例中,对客户端中设置的原生程序与h5端进行通信的待测试桥接,可以由h5端通过页面请求中解析出的测试端输入的目标参数,自动生成待测试桥接的调用方法,无需频繁依赖h5端的开发人员修改前端页面及部署,然后,自动执行该待测试桥接的调用方法,来调用待测试桥接,无需测试工程师手动点击触发待测试桥接的调用,最后,待测试桥接的执行结果输出,从而实现了对待测试桥接的测试,如此,从整体上提高了测试桥接的自动化程度,提高了测试效率。
117.在示例性实施例中,上述目标参数可以包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
118.其中,命名空间是用来组织和重用代码的。实际应用中,桥接可能会有很多,分别对应不同类型的功能,通过命名空间来分类,区别不同的功能,例如工具类的桥接,命名空间可以为tool。
119.调用待测试桥接时所需携带的全部参数可以用符号表示,至少可以包括待测试桥接的命名空间和待测试桥接的名称,还可以包括其它的参数。
120.示例性的,命名空间可以用符号namespace来表示。待测试桥接的名称可以用符号name表示。调用待测试桥接时所需携带的全部参数可以用符号bridgeparam来表示。
121.在示例性实施例中,基于目标参数生成待测试桥接的调用方法步骤具体实现方式可以包括:将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
122.实际应用中,可以预先保存桥接的调用方法模板,该桥接的调用方法模板中包含用于调用桥接的公共代码,该公共代码中需要传入调用的桥接的参数。该公共代码中还可以包含本地存储的调用的桥接的标识信息。基于此,将目标参数,传入桥接的调用方法模板中,则可以得到最终的待测试桥接的调用方法。如此,实现了快速、自动构造待测试桥接的调用方法,无需依赖h5端的开发人员。
123.在示例性实施例中,将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法步骤具体实现方式可以包括:将目标参数,构造成参数对象;将参数对象,传入桥接的调用方法模板,以生成待测试桥接的调用方法。本实施例中采用的是先将目标参数,构造成参数对象,然后再传入桥接的调用方法模板的方式,基于此,可以采用面向对象的语言,例如在网页中广泛应用的js(javascript的简称)语言,编写桥接的调用方法模板。
124.举例来说,可以将namespace、name和bridgeparam三个参数,构造成对象bridgeinfo,将bridgeinfo中的namespace、name和bridgeparam传入桥接的调用方法模板,示例性的代码如下:
125.__yodabridge__.invoke(bridgeinfo.namespace,bridgeinfo.name,json.stringify(bridgeinfo.bridgeparam),“1”)。
126.其中的“1”为待测试的桥接的标识信息。
127.由此可见,将桥接的调用方法模板中需要传入调用的桥接的参数的位置,替换成目标参数的取值即可生成待测试桥接的调用方法。
128.另外,也可以直接将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法。采用相适应的语言实现预设的桥接的调用方法即可。
129.以上示例出了通过桥接的调用方法模板来生成待测试桥接的调用方法的方案,也可以通过其它方式来生成待测试桥接的调用方法,例如,可以预先制定桥接的调用方法的生成规则,按照该生成规则,对目标参数进行处理,以生成待测试桥接的调用方法。
130.在示例性实施例中,从页面请求中解析出目标参数步骤具体实现方式可以包括:从页面请求中解析出包含的所有参数,从解析出的所有参数中分割出目标参数。
131.示例性的,可以通过window.location.search.substring(1)方法(一种系统方法)解析出构造的页面请求中包含的所有参数,然后通过预设的分割方法(split)从该页面请求中包含的所有参数中分割出目标参数,示例性的,分割出namespace,name和bridgeparam三个参数。其中的分割方法可以基于分词技术实现。
132.在示例性实施例中,输出待测试桥接的执行结果步骤具体实现方式可以包括:将待测试桥接的执行结果发送至测试端的桥接测试功能的接口,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能,以使得测试端基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及
基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
133.本实施例中,通过对执行结果进行自动校验和自动生成输出测试报告,避免了相关技术中人工校验结果并记录,编写测试报告,容易出错且效率低下的问题,提高了效率和准确性。
134.在示例性实施例中,上述桥接测试功能的接口可以为单元测试功能的接口。
135.实际应用中,除了对桥接进行测试之外,也可以对客户端进行单元测试。单元测试是对软件中的最小可测试单元进行检查和验证。单元测试功能的逻辑中,除了对客户端进行单元测试之外,还对执行结果进行自动校验,以及对校验结果自动生成测试报告并输出。常用的具有单元测试功能的工具包括xctest等。但是,相关技术中传统的客户端的单元测试只能覆盖客户端代码,无法覆盖h5通过桥接和原生程序的完整交互过程。而本实施例中,将待测试桥接的执行结果发送至测试端的单元测试功能的接口,并利用已有的单元测试功能中的第一功能和第二功能,进行执行结果的自动校验以及测试报告的自动生成输出,如此,相当于在原有的单元测试功能的基础上,还增加了对h5通过桥接和原生程序的完整交互过程的测试功能,也即,将对客户端的单元测试和对h5通过桥接和原生程序的完整交互过程的测试结合起来,丰富了单元测试功能。另外,也可以使得本方案的实现更加简单。
136.在示例性实施例中,将待测试桥接的执行结果发送至测试端的桥接测试功能的接口步骤具体实现方式可以包括:将待测试桥接的执行结果通过客户端发送至测试端的桥接测试功能的接口。由于单元测试功能的接口与客户端对接,以便客户端的单元测试的执行结果发送到单元测试功能的接口,实现单元测试,本实施例中,在桥接测试时,也可以将待测试桥接的执行结果通过客户端发送至单元测试功能的接口,实现更加简单。
137.实施中,为方便测试,可以为客户端封装一自定义桥接,该自定义桥接用于将待测试桥接的执行结果发送至测试端的单元测试功能的接口。测试完成之后,可去除该自定义桥接。基于此,将待测试桥接的执行结果通过客户端发送至测试端的单元测试功能的接口步骤具体可以是将待测试桥接的执行结果传入自定义桥接的调用方法中,以调用自定义桥接,将待测试桥接的执行结果转发给测试端的单元测试功能的接口。其中,可以采用objective

c(一种开发语言)中的block传值特性将待测试桥接的执行结果转发给测试端的单元测试功能的接口。采用block传值的方式较为简单,当然也可以通过其它方式实现传值,此处不再一一列举。
138.示例性的,调用自定义桥接的代码如下:
139.__yodabridge__.invoke("test","sendtestresult",json.stringify(bridge入参),"2")。
140.另外,也可以通过其它方式将待测试桥接的执行结果发送至测试端。测试端对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及对待测试桥接的校验结果生成并输出测试报告。为此,测试端中可以预置用于对待测试桥接的执行结果进行校验,以及对待测试桥接的校验结果生成测试报告并输出的逻辑。
141.下面以测试端的执行为例,对本公开实施例提供的桥接测试方法进行介绍。
142.图4是根据一示例性实施例示出的一种桥接测试方法的流程图,如图4所示,该桥接测试方法用于测试端中,包括以下步骤。
143.在步骤s41中,基于输入的目标参数构造页面请求,并发送至h5端,目标参数是待
测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信,以使得h5端从页面请求中解析出目标参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果,输出待测试桥接的执行结果。
144.在步骤s42中,接收待测试桥接的执行结果。
145.本实施例的具体实现方式可以参考h5端的桥接测试方法的相关实施例,此处不做赘述。
146.在示例性实施例中,基于输入的目标参数构造页面请求步骤具体实现方式可以包括:将目标参数,传入页面请求模板,得到初始页面请求;对初始页面请求进行编码,得到h5端能够解码的页面请求。通过页面请求模板的方式,构造页面请求,更加快速、准确。
147.其中的页面请求模板是按照页面请求规范预先编写的。页面请求模板可以为url请求模板。实际应用中,可以预先按照url请求规范,编写url请求模板。该url请求模板中需要传入调用的桥接的参数。
148.示例性的,url请求模板如下:https://www.test.com?cut_bridge=encodeuricomponent(@{@"namespace":@"system",@"name":@"getappinfo",@"bridgeparam":@{}})。
149.示例性的,经过编码之后,最终得到的一个url请求可以如下:https://middle

test

center.corp.kuaishou.com/resource/yoda_js_bridge_test/project/scx_yoda_bridge.html?cut_bridge=%7b%22namespace%22%3a%22system%22,%22name%22%3a%22getdeviceinfo%22,%22bridgeparam%22%3a%7b%7d%7d。
150.可以理解的是,以上仅是示例性的介绍了构造页面请求的方式,也可以采用其它的方式,例如,也可以按照页面请求规范,对目标参数进行处理,构造出页面请求。
151.在示例性实施例中,接收待测试桥接的执行结果步骤具体实现方式可以包括:通过测试端的桥接测试功能的接口,接收h5端发送的待测试桥接的执行结果,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能;基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
152.本实施例中,通过对执行结果进行自动校验和自动生成输出测试报告,避免了相关技术中人工校验结果并记录,编写测试报告,容易出错且效率低下的问题,提高了效率和准确性。
153.在示例性实施例中,桥接测试功能的接口可以为单元测试功能的接口。如前所述,在测试端,在原有的单元测试功能的基础上,还增加了对h5通过桥接和原生程序的完整交互过程的测试功能,也即,将对客户端的单元测试和对h5通过桥接和原生程序的完整交互过程的测试结合起来,不仅丰富了单元测试功能,而且方案实现也更加简单。
154.在示例性实施例中,通过测试端的桥接测试功能的接口,接收h5端发送的待测试桥接的执行结果步骤具体实现方式可以包括:通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果。由于单元测试功能的接口与客户端对接,以便客户端的单元测试的执行结果发送到单元测试功能的接口,实现单元测试,本实施例中,在桥接测试时,也可以将待测试桥接的执行结果通过客户端发送至单元测试功能的接口,
实现更加简单。
155.在示例性实施例中,上述测试端的桥接测试方法还可以包括:通过单元测试功能的入口,获取输入的目标参数。如此,在单元测试功能的基础上,直接利用其输入参数的入口,输入目标参数,进一步降低了方案的实现复杂度。
156.另外,也可以直将接收h5端发送的待测试桥接的执行结果。基于此,测试端对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及对待测试桥接的校验结果生成测试报告并输出。为此,测试端中可以预置用于对待测试桥接的执行结果进行校验,以及对待测试桥接的校验结果生成测试报告并输出的逻辑。
157.在示例性实施例中,对待测试桥接的执行结果进行校验步骤具体实现方式可以包括:对比待测试桥接的执行结果与输入的参考信息是否相同;将对比的结果,作为待测试桥接的校验结果。如果对比结果为相同,说明待测试桥接的功能符合预期,确定测试通过,如果对比结果为不相同,说明待测试桥接的功能不符合预期,确定测试不通过。实际应用中,可以预先输入参考信息。如此,对执行结果自动进行校验,无需人工校验,大大提高了测试效率。
158.回测桥接是当新增桥接之后,需要对原有的桥接再次进行测试。实际应用中,当待测试桥接为新增桥接时,可以对待测试桥接之外的已测试的至少一个目标桥接进行回测。而相关技术中,回测桥接需要人工验证,内容重复且时间成本较高。如果原有的桥接的数量较多,则需要一一进行回测,即使是回测,也需要人工一一点击测试页面,并人工验证结果,内容重复且时间成本较高。为此,在示例性实施例中,待测试桥接为新增桥接,上述桥接测试方法还可以包括:响应于确定对待测试桥接完成测试,对待测试桥接之外的已测试的至少一个目标桥接进行回测,并记录回测结果。
159.其中,至少一个目标桥接可以是默认的已测试的桥接,也可以是选择输入的已测试的桥接。由于已测试的目标桥接已经有对应的目标参数和参考信息,因此,可以在确定对待测试桥接完成测试,对待测试桥接之外的已测试的至少一个目标桥接进行回测,并记录回测结果。如此,可以确定新增桥接是否对已有桥接产生影响。本实施例中,在完成待测试桥接的测试之后,可以自动对已测试的至少一个目标桥接进行回测,并记录回测结果,无需一一进行人工点击页面,并记录结果,避免了相关技术中回测耗时耗力且记录容易出错的问题,从而进一步提高了测试效率和准确性。
160.在示例性实施例中,上述目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
161.下面以具体应用场景为例,对本公开实施例提供的桥接测试方法进行更加详细地介绍。
162.本实施例提供的桥接测试方法中,测试工程师测试新的桥接只需要执行两步,第一步输入待测试桥接的信息,第二步输入用于校验的参考信息。测试已有的桥接,则可以通过单元测试中已有的桥接的信息和参考信息实现,无需人工参与。
163.本实施例中,测试工程师的测试端设置有单元测试工具xctest,基于xctest可以对客户端进行单元测试,以及对待测试桥接进行测试。
164.如图5所示,本实施例的流程如下:
165.测试工程师在xctest的入口输入目标参数,例如namespace,bridgename,
bridgeparam。在步骤s51中,测试端501获取输入的目标参数。
166.在步骤s52中,测试端501基于目标参数构造页面请求,并发送给h5端503。
167.由于h5端通过桥接和原生程序的交互依赖一套规范来实现,比如任意桥接的调用均需要一些参数,例如namespace,name,bridgeparam;为了实现动态化生成h5端桥接的调用方法,通过指定url请求参数规范来实现。示例性的,采用bridgeinfo这个参数用来填写待测试的桥接。namespace:填写待测试桥接的命名空间。name填写待测试桥接的名称。bridgeparam填写调用桥接需要携带的所有参数。
168.基于此,预先构建了url请求模板,然后,将目标参数,传入该url请求模板,得到初始页面请求,对该初始页面请求进行编码,得到最终的页面请求。
169.在步骤s53中,h5端503接收测试端发送的页面请求,从页面请求中解析出目标参数。
170.具体的,h5端通过window.location.search.substring(1)从url页面请求中解析出url页面请求中包含的所有参数,然后通过预设的分割方法(split)从该页面请求中包含的所有参数中分割出目标参数,例如namespace,name和bridgeparam三个参数,保存成对象bridgeinfo。
171.在步骤s54中,h5端503将目标参数传入桥接的调用方法模板中,生成待测试桥接的调用方法。
172.在步骤s55中,h5端503执行待测试桥接的调用方法,以调用待测试桥接。
173.在步骤s56中,客户端502处理待测试桥接并发送执行结果至h5端503。
174.在步骤s57中,h5端503通过自定义桥接将待测试桥接的执行结果透传至客户端502。
175.本步骤中,自定义桥接中提供入参,例如bridgeparam,用来透传待测试桥接的执行结果给客户端。
176.在步骤s58中,客户端502将待测试桥接的执行结果转发至测试端的xctest的接口。
177.在步骤s59中,测试端501通过xctest对待测试桥接的执行结果进行校验,得到校验结果。
178.在步骤s510中,测试端501通过xctest对校验结果生成测试报告并输出。
179.举例来说,h5调用的待测试桥接为用于获取客户端设备信息的桥接getdeviceinfo,测试端可以通过xctest对待测试桥接的执行结果与预设的客户端实际设备信息做对比,保证该待测试桥接的功能符合预期。其中,待测试桥接的执行结果可以保存在第一参数中,示例性的,该第一参数以符号oriret表示。客户端实际设备信息可以保存在第二参数中,示例性地,该第二参数以符号realdeviceinfo表示。对比两个参数的取值是否相同,如果相同,则待测试桥接测试通过,否则,测试不通过。最后,对该校验结果,生成测试报告。示例性的代码如下:ictionary*realdeviceinfo=@{@"systemname":@"ios",@"sys":[ksmwdeviceinfosystemversion]};
[0180]
xctasserttrue([oriret[@"systemname"]isequaltostring:realdeviceinfo[@"systemname"]]);
[0181]
xctasserttrue([oriret[@"sys"]isequaltostring:realdeviceinfo[@"
sys"]])。
[0182]
如图6所示,本步骤的流程如下:
[0183]
在步骤s61中,获取待测试桥接的执行结果以及参考信息。该参考信息为客户端实际设备信息。
[0184]
在步骤s62中,对比待测试桥接的执行结果与参考信息是否相同。如果相同,执行步骤s63,如果不相同,执行步骤s64。
[0185]
在步骤s63中,确定待测试桥接测试通过,执行步骤s65。
[0186]
在步骤s64中,确定待测试桥接测试未通过,执行步骤s65。
[0187]
在步骤s65中,生成测试报告并输出。
[0188]
如此,本实施例的方案中,自动调用待测试桥接的方法,依赖url请求中的参数进行动态构造,通过设计url参数规范,将待测试桥接的name,spacename,bridgeparam传入url请求,h5端通过解析后构成待测试桥接的调用方法。h5端接收到待测试桥接的执行结果后透传给客户端,客户端拿到待测试桥接的执行结果后需要结合xctest,实现输出测试报告的能力。xctest校验待测试桥接的执行结果,并输出单测报告。
[0189]
通过本实施例的方案,带来如下有益效果:
[0190]
一、测试新增桥接h5端页面无需开发人员修改。
[0191]
二、测试新增桥接h5端页面无需重新部署。
[0192]
三、单元测试可以覆盖桥接和原生程序完整交互过程。
[0193]
四、通过xctest输出测试报告,即记录测试结果,桥接的测试结果输出准确。
[0194]
五、提高桥接回测效率。图7示例出了一次测试报告的一部分,从图中右侧方框部分可以看出,单个桥接的测试时间下降至0.21

3s,效率提高非常明显。
[0195]
另外,当桥接测试失败时,通过xctest还可以展示测试失败的提示信息,该提示信息中可以包含测试失败的位置。如图8所示例的测试界面中,中间的方框部分示例了测试失败的位置。
[0196]
图9是根据一示例性实施例示出的一种桥接测试装置框图。参照图9,该装置900应用于h5端,包括接收单元901,解析单元902、生成单元903、调用单元904和输出单元905。
[0197]
接收单元901,被配置为执行接收测试端发送的页面请求,页面请求是测试端基于输入的目标参数构造的,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信;
[0198]
解析单元902,被配置为执行从页面请求中解析出目标参数;
[0199]
生成单元903,被配置为基于目标参数生成待测试桥接的调用方法;
[0200]
调用单元904,被配置为执行通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果;
[0201]
输出单元905,被配置为执行输出待测试桥接的执行结果。
[0202]
在一种可能的实施方式中,生成单元903,具体被配置为执行:
[0203]
将目标参数,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
[0204]
在一种可能的实施方式中,生成单元903,具体被配置为执行:
[0205]
将目标参数,构造成参数对象;
[0206]
将参数对象,传入桥接的调用方法模板,以生成待测试桥接的调用方法。
[0207]
在一种可能的实施方式中,输出单元905,具体被配置为执行:
[0208]
将待测试桥接的执行结果发送至测试端的桥接测试功能的接口,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能,以使得测试端基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
[0209]
在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
[0210]
在一种可能的实施方式中,输出单元905,具体被配置为执行:
[0211]
将待测试桥接的执行结果通过客户端发送至测试端的桥接测试功能的接口。
[0212]
在一种可能的实施方式中,目标参数包括:待测试桥接的命名空间、待测试桥接的名称和调用待测试桥接时所需携带的全部参数。
[0213]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0214]
图10是根据一示例性实施例示出的一种桥接测试装置框图。参照图10,该装置1000应用于h5端,包括构造单元1001和接收单元1002。
[0215]
构造单元1001,被配置为执行基于输入的目标参数构造页面请求,并发送至h5端,目标参数是待测试桥接的参数,待测试桥接用于客户端中设置的原生程序与h5端进行通信,以使得h5端从页面请求中解析出目标参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果,输出待测试桥接的执行结果;
[0216]
接收单元1002,被配置为执行接收待测试桥接的执行结果。
[0217]
在一种可能的实施方式中,构造单元1001,具体被配置为执行:
[0218]
将目标参数,传入页面请求模板,得到初始页面请求;
[0219]
对初始页面请求进行编码,得到h5端能够解码的页面请求。
[0220]
在一种可能的实施方式中,接收单元1002,具体被配置为执行:
[0221]
通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果,桥接测试功能包含用于对执行结果进行校验的第一功能,以及用于对校验结果生成测试报告的第二功能;
[0222]
基于第一功能,对待测试桥接的执行结果进行校验,以得到待测试桥接的校验结果,以及基于第二功能,对待测试桥接的校验结果生成测试报告并输出。
[0223]
在一种可能的实施方式中,桥接测试功能的接口为单元测试功能的接口。
[0224]
在一种可能的实施方式中,接收单元1002,具体被配置为执行:
[0225]
通过测试端的桥接测试功能的接口,接收h5端通过客户端发送的待测试桥接的执行结果。
[0226]
在一种可能的实施方式中,接收单元1002,具体被配置为执行:
[0227]
对比待测试桥接的执行结果与输入的参考结果是否相同;
[0228]
将对比的结果,作为待测试桥接的校验结果。
[0229]
在一种可能的实施方式中,如图11所示,该装置还包括:
[0230]
回测单元1003,被配置为执行响应于确定对待测试桥接完成测试,对待测试桥接之外的已测试的至少一个目标桥接进行回测,并记录回测结果。
[0231]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0232]
图12是根据一示例性实施例示出的一种用于桥接测试的装置1200的框图。例如,装置1200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0233]
参照图12,装置1200可以包括以下一个或多个组件:处理组件1202,存储器1204,电力组件1206,多媒体组件1208,音频组件1210,输入/输出(i/o)的接口1212,传感器组件1214,以及通信组件1216。
[0234]
处理组件1202通常控制装置1200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1202可以包括一个或多个处理器1220来执行指令,以完成上述的测试端的桥接测试方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理组件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
[0235]
存储器1204被配置为存储各种类型的数据以支持在装置1200的操作。这些数据的示例包括用于在装置1200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0236]
电源组件1206为装置1200的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置1200生成、管理和分配电力相关联的组件。
[0237]
多媒体组件1208包括在所述装置1200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当装置1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0238]
音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(mic),当装置1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
[0239]
i/o接口1212为处理组件1202和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0240]
传感器组件1214包括一个或多个传感器,用于为装置1200提供各个方面的状态评估。例如,传感器组件1214可以检测到装置1200的打开/关闭状态,组件的相对定位,例如所述组件为装置1200的显示器和小键盘,传感器组件1214还可以检测装置1200或装置1200一
个组件的位置改变,用户与装置1200接触的存在或不存在,装置1200方位或加速/减速和装置1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0241]
通信组件1216被配置为便于装置1200和其他设备之间有线或无线方式的通信。装置1200可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件1216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1216还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0242]
在示例性实施例中,装置1200可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0243]
图13是根据一示例性实施例示出的一种用于桥接测试的装置1300的框图。例如,装置1300可以被提供为一服务器。参照图13,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述h5端的桥接测试方法。
[0244]
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(i/o)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
[0245]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置1200或者装置1300的处理组件执行以完成上述桥接测试方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
[0246]
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括可读性程序代码,该可读性程序代码可由装置1200或者装置1300的处理组件执行以完成上述桥接测试方法。可选地,该程序代码可以存储在存储介质中,该存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
[0247]
在示例性实施例中,还提供一种桥接测试系统,包括:客户端、测试端和h5端;
[0248]
客户端,被配置为执行处理待测试桥接,待测试桥接用于客户端中设置的原生程序与h5端进行通信;
[0249]
h5端,被配置为执行接收测试端发送的页面请求,从页面请求中解析出目标参数,目标参数是待测试桥接的参数,基于目标参数生成待测试桥接的调用方法,通过执行待测试桥接的调用方法调用待测试桥接,以得到客户端处理待测试桥接并返回的执行结果,输
出待测试桥接的执行结果;
[0250]
测试端,被配置为执行基于输入的目标参数构造页面请求,并发送至h5端,以及接收待测试桥接的执行结果。
[0251]
关于上述实施例中的系统,其中各个端执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0252]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0253]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1