接口学习

一、粗谈接口测试

  接口有两种分类:一种是程序内部的接口,一种是系统对外的接口。目前最常用的两种接口就是webservice接口和http api接口。其中webservice接口是走soap协议通过http传输,请求报文和报文都是xml格式的。http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文都是json串。http接口最常见的的两种请求方式get和post,两者区分在于一般get请求用来获取数据,post请求用来发送数据。 
  接口测试其实就是通过接口规范文档上的调用地址、请求参数、拼接报文,然后发送请求,检测返回结果。接口测试的必要性有以下几点:(1)可以发现很多在页面上操作发现不了的bug;(2)检测系统的异常处理能力;(3)检测系统的安全性、稳定性;(4)后端不变下,接口改动,前端随意变。 
  接口测试一般考虑测试点包括:通过性测试(备注:根据接口文档上参数,正常传入)、业务逻辑验证测试(根据自己项目的业务逻辑来)、参数组合测试、接口安全测试和异常验证。其中接口安全主要测试四点:(1)是否能绕过验证:比如购买商品,提交订单时候,通过接口修改商品价格,验证是否能提交成功;(2)是否能绕过身份授权:比如某个功能只有A权限用户可以使用,通过接口传B权限用户,验证是否能使用该功能;(3)关键参数是否加密:比如登陆接口的用户名和密码是否加密 ;(4)加密安全规则是否复杂。其中异常验证包括两种:不按照接口文档上要求输入参数(比如:必传非必传、参数类型、入参长度),还有一种就是一些异常的场景(比如:网路连接异常,数据库连接不上,服务断开重连等等)。 
  接口请求报文拼接,两种调用方式:key_value形式和json串传参。key_value形式就是问号前面是请求url,后面是请求的参数名和参数值,多个参数用&拼接;json串传参就不能拼接参数,需要用第三方测试工具来完成比如postman。 
  接口测试基本流程:需求评审->开发提供接口文档->编写接口测试用例->用例评审-进入测试阶段->提交测试报告。 
  接口文档包含的基本内容有接口描述、请求地址、请求方式、入参(要说明数据类型、是否必填)、返回参数说明和示例。接口测试用例包含的要素有项目、模块、用例id、接口名称、用例标题、请求方式、请求url、请求参数、前置条件、结果验证、请求报文、返回报文、测试结果和测试人员等。 
  目前接口测试工具太多,http api接口的测试工具比如有:fiddler、postman、restclient、charles、jemeter,webservice接口的测试工具有soapui。

二、 SoapUI工具

webservice接口不需要拼报文,直接在SoapUI导入,就可以看到里面的所有接口。SoapUI工具基本上就是解析wsdl地址,针对出现的接口设计建立testcase进行全面测试,简单如下所示: 
SoapUI

三、postman

postman是谷歌浏览器的一个插件,它可以用来做接口测试,发送get、post请求,添加cookie、header、权限验证信息,查看接口返回接口,接口响应时间等。

发送get、post请求

  • get请求直接在接口请求地址后面拼接参数,参数之间通过“&”拼接。同时get请求可以直接在浏览器里访问。get请求例子如下所示:

这里写图片描述

  • post请求参数一般放在body里,key-value参数类型可以直接在请求地址后面拼接参数,json串参数类型就不能直接在请求地址后面拼接参数。post请求例子如下:

这里写图片描述

不同的参数类型

传参类型包括key_value和json串两种形式。

  • key_value传参如下:

这里写图片描述

  • json串传参如下: 
    body里选择“raw”,同时选择“json”,例子如下: 
    这里写图片描述

添加信息

添加信息包括http请求添加权限验证Authorization、添加header头信息、添加cookie信息。

  • 添加权限验证例子如下:

这里写图片描述

  • 添加header头信息例子如下:

这里写图片描述

  • headers里添加“Cookie”,同时添加cookie需要装inerceptor插件,例子如下: 
    这里写图片描述

上传文件

  • body里添加名称为“file”的Key。请求上传文件例子如下:

这里写图片描述

扫描二维码关注公众号,回复: 2430733 查看本文章

四、fiddler

fiddler有很多功能,比如自动发请求,修改请求头、修改请求响应、设置断点和限速等等。这里主要说用fiddler设置代理,抓取相关接口请求,打上断点,修改接口信息操作。

  • 过滤请求Filters

    filters可以过滤只显示指定的请求。最关键的是‘Hosts Filter’,其中‘No Host Filter’是不过滤host的请求,‘Hide the following Hosts’是隐藏不显示指定的域名请求,‘Show only the following Hosts’是仅仅显示指定的域名请求,最后一个‘Flag the following Hosts’是标记指定的域名请求,其他的请求也会显示,只是不做标记。

    下面是过滤指定显示天天网和百度网的请求例子,如下所示: 
    这里写图片描述

  • 请求重定向AutoResponder

请求重定向就是把前端的一些css、js、图片和接口请求等返回结果替换成我们想要的结果。重要提示:记得一定要勾选‘Enable rules’和‘Unmatched requests passthrough’

(1)替换接口请求响应数据。比如修改登录接口返回的数据,使得用户登录失败的例子。接口返回的json格式数据,则先写好我们要替换上去的json文件,然后fiddler抓到登录请求接口,让它请求到我们的json文件,效果如下:

这里写图片描述

这里写图片描述

(2)替换图片请求资源文件

我们使用fiddler抓捕这个文件请求,替换图片。比如土豆网的视频封面,替换成本地的任意图片的例子如下: 
这里写图片描述

这里写图片描述

(3)请求响应设置404或502等状态码,查看页面加载样式。 
这里写图片描述

这里写图片描述

  • 修改请求头Before Requests(从前端读到请求后,在请求被发送到服务端之前)

    (1)先打开勾选Rules->Automatic Breakpoints->Before requests

    这里写图片描述

(2)刷新页面重新请求,fiddler截取请求,修改请求头。比如截取土豆网的发送评论接口,修改评论内容,截图所示:

这里写图片描述

(3)点击‘Run to Completion’,查看请求响应和前端显示是否成功。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41554671/article/details/79267042