
一、基本概念1.什么是接口测试接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换传递和控制管理过程以及系统间的相互逻辑依赖关系等。2.为什么要做接口测试接口测试相对于UI来说更加稳定也可以说接口测试是一种特殊的单元测试当一个系统提供了大量的后台服务有较少或者基本没有页面操作比较适合开展接口测试。例如某个系统大概有100多对外的接口每次上线测试人员不得不一个个验证此时如果开展自动化将大大提高回归的效率和测试的效率。二、接口测试流程其实流程和测试流程大概相似。1.与产品、开发一起梳理需求确定实现哪些接口和功能2.编写测试计划开发人员开发预估时间、风险预估及解决时间测试人员用例准备、数据准备、环境准备、与开发产品等协调测试等时间3.测试计划review4.编写测试用例及自动化脚本5.测试用例review6.执行测试用例提交bug验证bug7.测试总结包括测试过程、开发过程遇到的问题解决的问题小组内讨论以后遇到同样问题如何更快解决三、接口测试常用工具1、PostmanPostman是一个Chrome 扩展能提供强大的 Web API HTTP 请求调试功能。Postman能够发送任何类型的http请求支持GET/PUT/POST/DELETE等请求头中可以附带任何数量的headers信息。Postman支持不同的认证机制basicdigestOAuthPostman非常简单易用通过填写URL、header、body等就可以发送一个请求这对于我们平时做一些简单的测试是够用的。Postman有一个“集合”功能用于存储所有请求相同的API/域这个功能能方便我们重新发送请求。2、FiddlerFiddler是一个HTTP/HTTPS协议调试代理工具, 它能够记录客户端和服务器之间的所有 HTTP/请求可以针对特定的HTTP请求分析请求数据、设置断点、调试WEB应用、修改请求的数据、修改服务器返回的数据。当浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信浏览器默认通过系统HTTP代理发送到服务器Fiddler工作于七层中的应用层默认端口为8888可以访问 http://127.0.0.1:8888 会显示Fiddler的页面。但一般fiddler是用来抓包的可以用来抓取请求和返回的数据查看内容postman是模拟请求和返回的工具填写对应的地址、参数和数据就可以向服务器发送请求查看返回值。3.postman的使用1HTTP的五种请求方法GET POST HEADOPTIONS PUT DELETE TRACE 和 CONNECT 方法。GET请求请求指定的页面信息并返回实体主体。通常用来接收数据。POST请求向指定资源提交数据进行处理请求数据被包含在请求体中。POST请求可能会导致新的资源的建立、已有资源的修改。通常用来发送数据。HEAD请求类似于get请求只不过返回的响应中没有具体的内容用于获取报头。PUT请求从客户端向服务器传送的数据取代指定的文档的内容。DELETE请求请求服务器删除指定的页面。CONNECT请求能够将连接改为管道方式的代理服务器。OPTIONS请求允许客户端查看服务器的性能。TRACE请求显示服务器收到的请求主要用于测试或诊断。2接口调用传参方式key-value参数形式Json串传参形式。key-value参数把参数拼接在url的后面由?相连多个参数之间用相连。Json串传参需要在请求的body写中入Json格式参数。5.fiddler的使用通过主界面左下方的“web browser”按钮打开目标浏览器,这样就能监控到该浏览器所有的HTTP请求了。下面开始分析主界面的功能区:1、Fiddler菜单栏,上图黑色部分,包括捕获http请求停止捕获请求保存http请求载入本地session、设置捕获规则等功能。2、Fiddler的工具栏,上图黄色部分,包括Fiddler针对当前view的操作暂停清除session,decode模式、清除缓存等。3、Web Session面板,上图红色部分,主要是Fiddler抓取到的每条http请求每一条称为一个session,主要包含了请求的url协议状态码body等信息详细的字段含义如下图所示#顺序号按照抓包的顺序从1递增ResultHTTP状态码Protocol请求使用的协议如HTTP/HTTPS/FTP等HOST请求地址的主机名或域名URL请求资源的位置Body请求大小Caching请求的缓存过期时间或者缓存控制值Content-Type请求响应的类型Process发送此请求的进程IDComments备注Custom自定义值另外注意请求的host字段。可以看到有来自多个www.csdn.net的子域名的响应说明在大型网站的架构中大多需要多个子域名这些子域名可能是单独用于缓存静态资源的也可能是专门负责媒体资源的或者是专门负责数据统计的如pingback右键单击其中的一条请求。可以选择的操作有save(保存请求的报文信息可以是请求报文可以是响应报文),将整条会话作为txt保存到桌面,当然你可以保存为zip。4、详情和数据统计板,针对每条http请求的具体统计例如发送/接受字节数发送/接收时间还有粗略统计世界各地访问该服务器所花费的时间和数据包分析。如inspector面板下提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息5、详情和数据统计板(1)、inspector提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,分为上下两个部分上半部分是请求头部分下半部分是响应头部分。对于每一部分提供了多种不同格式查看每个请求和响应的内容。a、TextView 标签HTML/JS/CSS 使用TextView 可以看到响应的内容。选择一条Content-Type是text/html的回话,点击TextViewb、Raw标签Raw标签可以查看响应报文和响应正文,但是不包含请求报文c、Auth标签Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息d、Cookies标签Cookies标签可以看到请求的cookie和响应的set-cookie头信息。(2)、AutoResponder标签Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求并重定向到本地的资源或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置因为拦截和重定向后实际上访问的是本地的文件或者得到的是Fiddler的内置响应。当勾选allow autoresponser 并设置相应的规则后本例中的规则是将http://blog.csdn.net/aaa的请求拦截到本地的文件http://localhost:54321/WebForm1.aspx,如下图所示(3)、Statistics面板HTTP请求的性能和其他数据分析我们可以从中看出一些基本性能数据如DNS解析的时间消耗是8ms,建立TCP/IP连接的时间消耗是8ms等等信息。(4)、composer面板可以模拟向相应的服务器发送数据的过程不错这就是灌水机器人的基本原理,也可以是部分http flood的一种方式。(5)、Filters面板Filter标签则可以设置Fiddler的过滤规则来达到过滤http请求的目的。最简单如过滤内网http请求而只抓取internet的http请求或则过滤相应域名的http请求。Fiddler的过滤器非常强大可以过滤特定http状态码的请求可以过滤特定请求类型的http请求如css请求image请求js请求等可以过滤请求报文大于或则小于指定大小byte的请求四、接口测试用例编写1接口测试用例编写要点a测试每个参数类型不合法的情况类型不合法容易遗漏掉NULL型b测试每个参数取值范围不合法的情况c测试参数为空的情况d测试参数前后台定义的一致性e测试每个参数的上下限这里容易出致命的BUG如果程序处理不当可能导致崩溃f测试每个参数取值不合理的情况包括取的值不属于自己取值在这阶段不会出现取值超过了自己所拥有的数量或者范围g如果两个请求有严格的先后顺序需要测试调转顺序的情况2接口测试常见问题a可重复请求成功数据b可修改请求状态并正常完成请求c修改用户ID为其他用户ID查看各显示项是否正常或异常的处理d用户车系、车型字段为负数添加之后显示等e并发请求某个链接五、接口测试质量评估标准a) 业务功能覆盖是否完整b) 业务规则覆盖是否完整c) 参数验证是否达到要求边界、业务规则d) 接口异常场景覆盖是否完整e) 接口覆盖率是否达到要求f) 代码覆盖率是否达到要求g) 性能指标是否满足要求h) 安全指标是否满足要求