一、接口测试
接口测试是测试系统组件间接口的一种测试。主要用于检测外部系统于系统之间以及系统内部各个子系统之间的交互点。重点测试的时数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等等,这要求对业务逻辑有一定程度上的理解,对数据流向有较好的定位。
国内大部分由开发完成的单元测试其实就是一种接口测试,而我们测试人员所说的接口测试,如今大部分是指走HTTP协议的网络接口。
1. 接口测试的分类
a) 系统与系统之间的调用
b) 上层服务对下层服务的调用
c) 服务之间的调用
不同类型的接口测试方法可能不一致,但总体来说,不管是哪种类型,被测接口即为服务方,测试手段为客户方,接口测试的目的就是:通过我们的测试手段,去验证满足其声明提供的功能。
2. 接口测试的原理
通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request→response)
3. 接口测试的内容
接口测试内容一般从下图着手:
二、HttpClient
由于接触接口测试时,我常用语言是Java,所以最早接触到的工具就是HttpClient,它是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HttpClient实现了基于HTTP的各种方法,Get,Post,Put等等,支持HTTPs,关于如何支持,可以参考我之前的文章 Apache HttpClient 4.5实现https_编故事的逗老师的专栏-CSDN博客
HttpClient基本的用法也很简单,一看就会,主要是看你怎么构建代码,以post请求为例:
1. 初始化httpclient
CloseableHttpClient httpClient = HttpClientBuilder.create().build()
2. 创建请求
HttpPost httpPost = new HttpPost("url");
3. 设置header(可选)
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
4. 设置参数(可选)
Parameters parms = new User();
parms .setXxx("xxx");
// required fastjson
String jsonString = JSON.toJSONString(user);
StringEntity entity = new StringEntity(jsonString, "UTF-8");
httpPost.setEntity(entity);
5. 执行请求
CloseableHttpResponse response = httpClient.execute(httpPost);
6. 获取相应
HttpEntity responseEntity = response.getEntity();
将方法封装,将参数对象化,再使用Junit,TestNG等工具搭建框架,则一个基于HttpClient的接口测试框架就能够实现了。