
目前我们公司接口使用的是SCF协议,SCF是58自主研发的RPC框架,致力于在分布式环境下提供高性能,高可靠和透明化的RPC远程调用方案。

接口协议目前广泛使用的有http协议和RPC协议和webservice,在了解如何写这三种接口自动化框架前,需要搞明白什么是http协议,什么是RPC协议,以及什么是webservice以及三者的差异点。
HTTP协议
http协议是基于应用层的超文本传输协议,http是一个客户端和服务端请求和应答的标准,客户端发起一个请求到服务端的某个端口上,服务端接收响应并且把响应返回给客户端。
HTTP原理
1、客户端发起请求,想要请求服务器上的某些资源,请求信息携带协议,服务器域名、端口、请求路径、请求头部信息
2、基于域名解析到域名对应的ip地址,这里涉及到域名解析的过程。
(1)客户端在发起请求时首先查找浏览器缓存是否保留了域名和ip的对应关系
(2)如果找不到会去本地host文件查找
(3)第二步找不到就去查找本地DNS解析器缓存
本地DNS服务器查找的过程又是一个递归的过程,首先查找根域名服务器,查找到直接返回,查找不到就去顶级域名服务器查找最后返回ip和域名的对应

3、TCP 三次连接
所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。以下为客户端主动发起连接的图解

(1)首先客户端像服务器发送一段TCP报文,SYN表示“请求建立连接”,seq=x,随后客户端进入SYN-SENT状态
(2)服务端接收客户端的TCP报文后结束LISTEN阶段,发送SYN,ACK标记,表示“允许建立连接”,服务端进入SYN-RECEIVE状态
(3)客户端收到服务端的TCP报文后再次给服务端发送SYN、ACK标记,明确客户端和服务端可以通信。客户端和服务器端都进入ESTABLISHED状态。
4、服务器处理客户端的请求,并把结果以response报文的形式发给客户端
5、TCP四次挥手

6、客户端渲染解析响应报文。
RPC协议
简单来说RPC就是从一台机器通过组装接口参数调用另外一台机器上的函数或者方法,并得到返回的结果。
RPC原理
比如说,一个方法可能是这样定义的:
Employee getEmployeeByName(String fullName)
那么:
首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。
第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。
第三,当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。
第四,B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。
第五,返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的应用
RPC和HTTP的区别:
(1)传输协议 rpc是基于tcp的, HTTP是基于应用层的
(2)因为rpc是基于tcpd 所以传输速度和效率更高,http是基于应用层的,报文有很多无用内容,传输效率低
(3)RPC的框架有Dubbo,可以跨操作系统在同一编程语言内使用
http框架有httpclient,跨系统跨编程语言的远程调用框架
相同点:底层通讯都是基于socket,都可以实现远程调用,都可以实现服务调用服务
WebService是什么?
- 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
- 一个跨语言、跨平台的规范(抽象)
- 多个跨平台、跨语言的应用间通信整合的方案(实际)
1、SOAP协议是什么?
Webservice是基于SOAP协议传输数据。 SOAP又是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。
2、WSDL是什么?
- WSDL(Web Services Description Language)基于XML语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅的,这将是一个很大的好处。——可以视为接口文档
- WSDL 文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
三、 请求webservice接口
- 获取WSDL文件
- 通过eclipse获取开发的源码
- 准备接口入参数据调用接口数据,获取响应结果
接口测试就是依据接口文档,对接口入参以及接口的场景所做的一系列数据校验的过程,保证单个接口和接口之间数据的交换、传递和控制管理过程,以及相互逻辑依赖关系
本质上接口测试也是一种功能测试。
基于接口实现容易维护成本低,测试收益大,有着更高的产出比,是每个公司开展自动化测试的首选
既然接口很容易实现自动化,如果让你来做接口自动化那么你需要思考以下几个问题,
1、接口自动化框架用到哪些技术?
2、接口自动化测试有哪些难点?
3、如何维护测试数据?
4、接口自动化如何做到持续集成?