# 接口测试技术分享  
## 接口测试概述  
接口测试：  
接口测试也是功能测试的一种，通过接口文档，使用不同的参数值请求接口来覆盖不同接口用例。其实很多时候界面的功能测试已经能覆盖了部分的接口用例，但是接口能更加直观的去验证服务器的逻辑与查看返回情况。  

### 接口测试用例  

用例的设计跟正常功能用例相差不大，只能接口这边的参数是可以任意输入，可造性比较强。  

用例的设计点:  
1. 接口正常功能的正确与异常情况  
2. 接口参数的不同输入   
3. 接口的安全性，通过接口改数据，能不能做些非法的事  

## 自动化接口测试  
自动化接口的概念：  
通过写好的接口请求、对接口返回进行验证，并且可以达到重复使用的程度。这样的好处在于每次迭代上线，可以通过自动接口，快速验证已有的接口是否正常，保证老版本的正常使用。相对而言，接口的自动化比ui的自动化实现比较来的实用的多  
![图片22](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E8%B5%B5%E8%B6%85%E8%83%BD/%E5%9B%BE%E7%89%8722.png)
这边介绍的是jmeter工具，该工具可以做接口测试也能做性能测试，属于开源项目，会Java的可以自己编写个jar包做插件。  

jmeter的功能组件：  
线程组：做性能测试的时候会通过线程组里面的设置来进行性能测试  
配置元件：配置一些数据，像请求头、数据库连接属性、自定义的变量  
监听器：主要是查看运行结果的，常用的是查看结果树和聚合报告  
定时器: 主要满足性能测试的一些需求  
前后处理器：在运行接口之前或者之后可以做一些加密、提取接口返回值、修改数据等操作  

断言：检查测试中得到的响应数据等是否符合预期  
sample ：一些支持的请求，像HTTP请求、操作数据库请求  
逻辑控制器：用来控制脚本的运行逻辑  

jmeter 保存之后会生成一个xx.jmx的文件，所有的组件跟接口请求都写在里面，所以保存到时候运行下这个jmx文件就能自己跑接口  

[推荐网站](https://www.cnblogs.com/imyalost/p/7062784.html?utm_source=itdadao&utm_medium=referral)

## 抓包工具介绍  
常用的抓包 工具：Fiddler  、charles、wireshark  

工具的应用场景:  

1. 可查看客户端请求的接口，便于分辨出客户端还是服务器的问题，更好的定位问题所在  
2. 修改返回值，验证客户端在某些不好造数据的展示情况或者想更快的验证某些客户端展示逻辑  

chales的简单使用：打开charles，默认端口是8888，打开手机 将同一个网段下的WiFi代理设置成电脑主机上面的ip地址和8888端口。charles允许链接之后，手机操作app就能在charles 上面展示了  
![图片23](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E8%B5%B5%E8%B6%85%E8%83%BD/%E5%9B%BE%E7%89%8723.png)

如果是https协议的话，数据会被加密，可以在连上代理的时候，通过浏览器输入chal.pro/ssl   下载证书安装，然后在charles菜单栏->proxy->ssl proxying settings ,添加host \port为 *后，就能查看数据了  
iOS需要去通用-》本机 -》设置安装的信任证书  
![图片24](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E8%B5%B5%E8%B6%85%E8%83%BD/%E5%9B%BE%E7%89%8724.png)  
如果要修改返回值的话，右键选中接口，点击save respone，把返回的请求保存文件之后，再右键选中接口 ，点击map local  ，把保存的文件加进去，之后只要文件是什么内容就返回什么  



 