过了那么久终于要开始学习接口了!学习三个工具 1.fiddler 抓包工具 2. postman 3.soupUI
首先讲这个 fiddler
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展
你对HTTP 协议越了解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。
Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。
Fiddler的工作原理
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。
下载的完毕的时候,打开fiddler,这个时候打开浏览器随意登个网站看看 fiddler是否有截获到信息!如果没有就去设置一下,我这里用的是google浏览器 右上角点击设置,滑到最下面点击高级,然后找到 打开代理设置 ,打开后点击链接,再点击局域网设置,勾选 “为LAN使用代理服务器” 再点击高级, 在http和安全,地址写 127.0.0.01 端口写8888.这个时候就能截获拉!
有两种代理模式
1.流模式(streaming)2 .缓冲模式(buffering)
区别:
流模式:可实时把服务器数据返回给客户端,最接近于真正的浏览器本身
缓冲模式:是http请求所以的数据都准备好后才把数据返回给客户端,它可以控制最后的服务器响应
使用环境
1. 开发环境host配置:简化了不同环境下的配置
2.前后端接口调试:不需要花费很大时间来创建假数据
3.线上bugfix:可将发布文件代理到本地,快速定位线上bug
4.性能分析和优化:提供清晰请求实际图,清晰明了网站需优化的部分
工具条介绍
1.备注 ,comments 选中一个会话,添加备注信息
2.Replay ,回放按钮,选中一个会话,点击回放,快捷键r
3.× : 清空面板,里面还有可选清除
4.Go:调试Debug 发出的request请求 和 反应的 response请求作断点
5.Stream:模式切换: 默认是缓存模式 ,被选中状态下就是流模式
6.Decode :解压请求,解压http请求里面的东西,便于查看
7.Keep:保持会话
8.Any Process :过滤请求:点击Any 再点击你想捕获的浏览器界面,他就可以只捕获选中的浏览器
9.find 查找会话,可选择查找到的会话的颜色
10.save 保存会话
11.相机:保存截图
12.时钟:计时
13 e :快速启动浏览器
14.clear Cache :清除浏览器缓存
15.TextWizard:编码解码 选择url 复制到解码界面上 选择 URLDecode 他可以解码多种格式
16.Tearoff:分离左右面板,关闭就恢复
17. MSDN Search:MSDN搜索,几乎不用
19:黑色长条框:控制台,可以输入命令 不懂得可以输help 就会出来一个页面告诉你里面有哪些命令
20.Capturing:显示出来就代表fiddler在工作,点掉就不工作
21.红色的那个就是结合 Go调试BeDug的 箭头向上就表示停在发送请求阶段,点go就执行了,箭头向下就是停在返回请求阶段。
左侧监控面板的使用:
1.记录了来自 Web server请求的会话,以及会话的状态。
右侧面板
Statistics: 数据统计。一个请求的性能指标,用于分析性能和优化
ClientConnected:客户端连接建立的时间
ClientBeginRequest: 请求开始时间
GotRequestHeaders: 请求头时间
ClientDoneRequest: Determine Gateway: DNS Lookup: TCP/IP Connect: HTTPS Handshake: ServerConnected: FiddlerBeginRequest: ServerGotRequest: ServerBeginResponse: GotResponseHeaders: ServerDoneResponse: ClientBeginResponse: ClientDoneResponse: 各种时间
RTT :请求往返的总时间
最下面有一个 show chat :图形化
inspectors: 对请求解包 他有Request 和 Response
AutoResponder:文件代理 可将左侧会话拖进右侧,在最下面选择返回响应,例如 200 502 点击 save 再重跑次会话。还可以上传代理文件,从本地获取代理服务器文件
Composer:前后端接口连调 可查看传递的参数,也可以将会话拖进右侧 修改 请求方式
log:记录log日志
timeline :网站性能分析 ,选中有关的会话进行查看
常用功能使用
1.host配置:点击tools,选中hosts 输入域名地址就可以了 把所有文件映射到指定服务器
2.文件替换,把线上文件拖到 AutoResponder,可以排查线上文件的bug 最下面有一个 Rule Editor 地址前的EXACT 表示精准匹配 ,也可以写复杂的正则表达式。
然后选择本地的文件替换线上的文件 执行。 还可以替换响应
3.前后端接口连调, get请求 直接在url跟参数,post请求在response body写参数 点击execute 即可查看会话 也可以输入cookie
4.网络限速: 需要下载一个插件 fiddle script 把一个请求代码化, 限速 需要用到 代码化里面一个 叫 onBeforeRequest
下面写上 延迟指令
oSession["request-trick-delay"] = "3000" 延迟三秒发送 oSession["response-trick-delay"] = "3000" 延迟三秒返回
fiddler还提供了各种插件、
接下来讲讲 postman
Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括:
- 模拟各种HTTP requests
从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。
- Collection 功能(测试集合)
Collection 是 requests的集合,在做完一個测试的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里面的所有人共享你建立起來的 Collection。
- 人性化的Response整理
一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。这会造成阅读的障碍 ,而 Postman 可以针对response内容的格式自动美化。 JSON、 XML 或是 HTML 都會整理成我们可以阅读的格式
- 内置测试脚本语言
Postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
- 设定变量与环境
Postman 可以自由 设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,postman允许我们设定变量来保存这些值。并且把变量保存在不同的环境中。比如,我們可能会有多种环境, development 、 staging 或 local, 而这几种环境中的 request URL 也各不相同,但我们可以在不同的环境中设定同样的变量,只是变量的值不一样,这样我们就不用修改我们的测试脚本,而测试不同的环境。
直接扔下载地址 http://pan.baidu.com/s/1pKJDURL
下载完之后 将postman.rcx文件改为postman.zip 然后解压
在Chrome的地址栏中输入:chrome://extensions/ 打开Chrome浏览器的扩展程序管理界面,并在该界面的右上方的开发者模式按钮上打勾
然后点击加载已解压的扩展程序,导入文件,如果出现错误就把一个叫_metadata的文件夹名改为 metadata 刷新重新加载 就可以了
接口 、功能测试
不过chrome版本已经落后了 现在应该装native版本 直接访问官网 www.getpostman.com下载
官方文档 https://www.getpostmman.com/docs/
发送第一个Api
测试专用网址 :https://www.v2ex.com/api/topics/hot.json
get请求 type :NoAuth 会以Json格式返回
Content-Type →application/json;charset=UTF-8
右侧上一小部分表示request 请求 下一大部分表示 response 响应
必须掌握 http协议
http请求:
http消息是服务器和客服端交换数据的方式
两种类型:
请求 -- 客户端发送用来触发一个服务器上的动作 响应:--来自服务器的应答
参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Messages
http请求构成
1.起始行 startline POST / HTTP /1.1 2. Headers 3. Body
起始行3要素 1.POST/GET 一个http方法 ,2. url 请求目标 3. http版本
headers (配置项) 客户端我要啥
不区分大小写的字符串
包括 Request headers General headers Entity headers
body post才会有body
http 响应
1.状态行 2 headers 3,body
1. 状态行
1.协议版本 2. 状态码 。200,400 3. 状态文本
200 :OK 成功 201: 成功创建/更新
300 : 重定向 301: 转变目的地 302 found
400 :bad request 401 402 403 404:没找到
500:服务器错误 502
2.headers 服务器我做了啥
set-Cookie
断言 预期与实际结果的判断
Assert
在http (Responses)响应里面断言 状态码 body
给v2ex 增加断言
1,返回的状态码必须是200 2. 返回10条
postman 的Test功能
设置全局变量
设置环境变量
拿到并处理请求的响应
定义测试检查点和断言
tests["Body is correct"] = responseBody ==="response_body_string'
在tests里面写
tests["状态码必须是200"] = responseCode.code ===200;
var res =JSON.parse(responseBody);
console.log(res.lentsh);
tests["必须是10条"] = res.length ===10;
点击send查看结果
sandbox
运行一下js代码
1.公共库(js) 2。 操作cookie
chai断言
pm.test('ztm', function () {
pm.expect(pm.response).to.have.status(200);
pm.expect(pm.response).to.be.success(200);
});
参考网站:https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference
postman做简单ui测试
用到的库 Cheerio 有点类似于 jQuery
var cheerio = require('cheerio');
var $ = cheerio.load(responseBody);
pm.test("4门课程",function(){
pm.response.to.be.success;
pm.expect($('.service-block-in').length === 4 )
});
局限 交互一般 无法处理ajax请求 没有更多的js
Request methods
get post put patch 更新 delete
cookie
添加cookie
查看cookie responseBody.has("cookies");
pm.cookies.get("cookiename")
postman 鉴权
basic authentication
https://postman-echo.com/basic-auth
必须先登入
collection
容器 组织业务逻辑 导入导出 其他功能
pre-request Script 发送请求前执行的一个js 可以初始化数据
变量
api.itest.info/tasks api.itest,info/tasks/:task_id 不写死
{{itest.domain}}/tasks 通过变量去传递
变量作用域
Global 全局,错误信息设置成全局
Environment : 环境变量 domain
Local 环境变量 在sandbox中定义
Data 测试数据中导入变量,参数化
变量引用
builder里引用
{{variable}}
https://www.v2ex.com/api/nodes/show.json?name={{node_name}}
在环境变量里面设置
在全局变量设置 就是全局变量 不用环境也行
环境变量会覆盖全局
点击save 取名,介绍 ,保存成功后 点击右侧collentions 点击 > 再点run
就会打开一个runner界面
可选择环境变量, 循环次数 ,延迟,也可导入json/csv文件 参数驱动化, data file type 要选择对应文件的类型,也可预览数据。
去文件中的数据通过 date.yourname
var jsondata = JSON.parse(responseBody) tests["dengx"] = JSONdata.name === data.yourname
如果有不会的就去访问官方文档!!!!!最好的学习途径!!
https://www.getpostmman.com/docs/
命令行运行postman脚本
在runner 右上角点击Run in Commad Line
在命令行 输入 cnpm install newman --global
要先下载node.js
检查是否下载完毕 newman -h
回到主界面 选择文件夹点击Export
选择collection v2
打卡命令行 newman run export.postman_collection.json -d data.json -r html,cli,json,junit 生成各种文件
下载python 下载 requests pip install requests