目录
接口测试—基础篇
1.什么是接口?什么是接口测试?
接口是主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
2.接口的类型
接口一般分为两种:1.程序内部的接口 2.系统对外的接口
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
3.接口返回的数据类型
接口数据返回的方式主要有两种:XML和JSON
XML方式:格式统一,数据共享比较方便,但是xml文件比较庞大,格式比较复杂,解析比较困难,解析代码复杂度高
Json方式:返回的数据为json,json是javascript主要支持的语言,数据格式较为简单,易于读写,易于解析,现在一般都是采用json格式。
4.怎么测试接口
由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
5.HTTP请求的几种常见方式
1、Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
2、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
3、Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
4、Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
5、Delete 请求服务器删除request-URL所标示的资源(请求服务器删除页面)
6、Trace 回显服务器收到的请求,用于测试和诊断
7、opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
8、Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器
6.Cookie与Session
- Cookie
- Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。
- 具体来说Cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制。
- Cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力。
- Session
- Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
- 当程序需要为某个客户端的请求创建一个Session时,服务器首先检查这个客户端的请求里是否已包含了一个Session标识(称为Session id),如果已包含则说明以前已经为此客户端创建过Session,服务器就按照Session id把这个session检索出来使用,如果客户端请求不包含Session id,则为此客户端创建一个Session并且生成一个与此Session相关联的Session id,Session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
- Cookie与Session的区别
- 存取方式的不同
Cookie只能保存ASCII,Session可以存任意数据类型 - 隐私策略的不同
Cookie存储在客户端阅读器中,Session存储在服务器上 - 有效期不同
Cookie可设长时间,Session关闭浏览器就失效 - 服务器压力不同
Cookie压力小于Session - 存储大小不同
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 - 浏览器支持的不同
Cookie是需要客户端浏览器支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失 效。 - 跨域支持上的不同
Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
7.常见的HTTP状态码
2xx:成功
200:OK,请求成功
201:OK,新的资源建立(post命令)
202:请求被接受,但处理未完成
204:OK,但没有内容返回
3xx:重定向:需要用户代理执行更多的动作
301:Moved Permanently永久转移(所请求的资源已被指派为新的固定URL)
302:Found 暂时转移(所请求的资源临时位于另外的URL)
304:文档没有修改(条件GET)
307:Temporary Redirect(临时重定向)
4xx:客户端差错
400:Bad Request 请求错误
401:Unauthorized 未认证(该请求要求用户认证)
403:Forbidden 不明原因的禁止
404:Not Found 未找到
5xx:服务器差错
500:Internal Server Error(服务器错误)
501:没有实现
502:错误的网关(网关或上游服务器来的无效响应)
503:Service Unavailable(一般是访问人数过多)
8.Get 和 Post区别
1.get请求无消息体,只能携带少量数据,且不安全
post请求有消息体,可以携带大量数据,且安全
2.携带数据的方式:
get请求将数据放在url地址中
post请求将数据放在消息体body中
3.GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
接口测试—工具篇
Postman
1.Postman的简单使用
- 直接去官网下载,官网链接:https://www.getpostman.com/postman,下载好的安装程序双击安装即可。
- 打开Postman如下图,可跳过登录注册页面
- 点击左上角New按钮,选择Collection新建一个文件夹用于保存创建的请求
- 命名为“测试”,点击Create创建
- 点击测试文件夹右边的更多按钮,选择Add Request创建一个请求,命名为“登录”,点击“Save to 测试”保存(也可以直接在右边界面的左上角点击加号新建请求,最后保存的时候选择对应文件夹即可)
2.新建一个POST请求
添加请求信息,请求方式为POST,添加完成后点击运行即可查看结果,一个简单的POST请求就创建完成了
3.添加一个JSON类型入参的请求
如图,Body下选择raw格式,参数类型选择JSON
4.上传文件
在KEY中选择File类型,点击VALUE中的Select File按钮选择文件
5.定义全局变量
当我们想切换环境但又不改变请求的参数和路径时,我们需要手动的把请求的域名给替换掉,如果接口多的话就会显得很麻烦,所以这里我们可以把域名设置为一个全局变量,到时候只需要改变变量的值就可以轻松搞定切环境的问题了
点击右上角小齿轮的图标,然后点击Add添加一个环境命名为测试环境,并在key和value中添加对应的值,然后回到主界面,把之前的url改成两个花括号引用key,点击运行,查看接口返回成功。
6.断言
选择Tests,再到右边列表选择response body:containg string,修改代码中需要断言的字段,点击Send运行,然后点击返回结果中的Test Results查看断言是否成功
7.参数化
点击文件夹右侧的三角形展开,然后点击Run进入设置页面
设置好运行参数
运行后查看返回结果
Charles
1.安装
-
下载
打开安装程序 -
安装
一路按下 next 即可安装(保证电脑里没有其他 charles 即可) -
破解
打开汉化补丁 选择“中文破解版”,按下 patch 即可 -
进入界面
2.PC端抓包
- PC 抓包只需要点击上方的代理—windows 代理即可
3.手机端抓包
- 电脑 charles 客户端下载 SSL 证书
- 帮助—SSL 代理—安装 charles 证书
- 选择当前用户
- 将所有的证书都放入下列存储—受信任的根证书颁发机构—下一步—完成
- 配置代理服务器,端口号默认8888,可自行修改
- 手机配置代理
手机端连入和电脑同一网络WIFI,然后在代理设置里设置服务器主机名及 IP 端口号,端口号为Charles里设置的端口号。
- 手机端下载 charles 证书
手机配置代理后打开网页http://charlesproxy.com/getssl,下载证书(证书下载下来格式为pem的,需手动改成crt格式)
注:iOS的需要在设置→通用→关于本机→证书信任设置里面设置为信任 - 抓取https
抓取https的请求需要添加SSL代理,如图,主机与端口都设置为*,代表所有ip和端口都可抓到。
4.功能
从左到右分别为:
(1)清除当前会话
(2)停止记录
(3)开始限流/停止限流
(4)开始断点/停止断点
(5)根据所写内容撰写新请求
(6)重发选定请求
(7)工具
(8)设置
显示模式:有结构和序列两种模式
(1)结构模式:可以很清晰的看到请求的数据结构,而且是以域名划分请求信
息的,可以很清晰的去分析和处理数据。
(2)序列:可以看到全部请求,这里的结果以数据请求的顺序来显示,可以根据时间、
大小等自由排序
5.模拟网速
在线上环境通常有些因为网速慢导致的 bug,在本机无法重现,那时候就很抓
瞎,模拟网速功能支持对带宽、利用率、往返延迟、字节进行配置,并且支持
3G/4G 或者其他网络模式。
上方工具栏的代理—限流设置—启用限流
6.过滤
(1)软件下方的过滤可以进行简单的过滤
(2)上方工具栏的代理—记录设置—包括—添加
可以对网络请求进行过滤。
然后填入需要监控的协议,主机地址,端口号等。这样就可以只截取目标网站的封包
了。
然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。
7.拦截与修改请求及响应
- 选择一个请求右键打开断点
- 启用断点后重新刷新页面获取请求,这里点击编辑请求即可编辑请求,或者直接点击执行到下一步。
- 编辑请求页面,点击执行。
- 编辑响应,
- 查看请求及响应
- 查看网页,原本的百度页面被我们改成了Hello World了
8.映射
-
当我们测完测试环境后想切换到生产环境时一般是让开发重新打包,让他们把请求改为生产环境。其实用Charles,我们也可以做到不用开发打包而实现切换环境,这就用到映射了。
-
映射分为远程映射和本地映射
(1)远程映射是直接把某某域名映射到另外一个域名
(2)本地映射是访问这个域名直接读取本地文件里的内容 -
远程映射
(1)工具→远程映射→启用→添加
(2)配置参数,比如把百度映射到好123,点击确定后保存。
(3)查看结果,输入的百度地址,但是页面却是好123的页面,这就代表映射成功了
-
本地映射
(1)工具→本地映射→启用→添加
本地文件内容:
(2)配置参数,点击选择按钮选择文件,点击确定后保存。
(3)查看结果,输入百度的地址,页面内容显示的为我本地文件内保存的内容。