目录
八、wireshark 与charles 和fiddler区别
一、测试工具
1,自动化功能测试工具:QTP、selenium
2,自动化性能测试功能:LoadRunner、jmeter
3,自动化接口测试工具:Charles、soapUI、LoadRunner、jmeter、fiddler、Wireshark
4,测试管理工具:禅道、qc、jira、testlink
管理需求,管理测试计划、管理测试用例、管理bug、分析bug
二、Charles下载安装
1-1、官方网站下载地址:
Download a Free Trial of Charles • Charles Web Debugging Proxy
![](https://img-blog.csdnimg.cn/20210516214003229.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
三、Charles HTTPS抓包配置
2-1. 如下图,打开菜单,安装根证书,所有操作按默认完成
Help----->SSL Proxying------>Install Charles Root Certificate
![](https://img-blog.csdnimg.cn/20210517215348930.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
2-2. 如下图保存根证书到桌面
Help----->SSL Proxying------>Save Charles Root Certificate……
![](https://img-blog.csdnimg.cn/20210517215902790.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
2-3. 选择保存证书类型:下图中,输入charles为证书名字,下面选择.cer类型
注意事项:保存格式为 .cer
![](https://img-blog.csdnimg.cn/20210519195005369.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
2-4. 保存完成后,在桌面就会有一个证书文件charles.cer,后面会用到的
![](https://img-blog.csdnimg.cn/20210519195227114.jpg)
2-5. PC端安装Charles信任证书
IE浏览器 、 Google浏览器 、 Firefox浏览器安装(以下只列举 IE浏览器、google浏览器)
2-5-1、IE安装Charles信任证书
打开--------Internet选项-----------内容------------证书----------导入
![](https://img-blog.csdnimg.cn/20210521212746792.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
导入-------------下一步--------------浏览-----------选择Charles的证书--------------打开/安装-----------------下一步-------下一步---------完成
![](https://img-blog.csdnimg.cn/20210521213608703.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njc1NzU0,size_16,color_FFFFFF,t_70)
2-5-1、Google安装Charles信任证书
暂时后续,可参考如下
charles最新破解jar文件,及浏览器证书安装 - oucbl - 博客园
6. 导入之后,重启charles
7. 配置ssl代理
四、fiddler修改返回响应
https://www.jianshu.com/p/194a61e2fcca
方式一:命令
请求打断点:bpu XXX 取消断点:bpu+Enter
响应打断点:bpafter XXX 取消断点:bpafter+Enter
·"XXX" 可以是完整的url,也可以是url中的一部分,如:
方式二:全局
菜单栏选择 :Automatic Breakpoints(自动设置断点)
发起请求之前:before
发起请求之后: after
(会全局设置断点)
方式三:修改boby
1.将自己需要的响应保存到 自己本地 保存为 json文件(响应 body保存指定格式)
2.右选择 AutoResponder ----> 选url拖拽到autoResponeder
3. 然后在 Rule Editor 选择自己保存json文件
4.请求发包,查看 注意修改每次接收响应都自己 自定义的
方式四:修改脚本
Rules ----> customize rules ----> 打开文件 找到OnBeforeResponse这个方法,需要修改的内容
5.1 postman 接口测试简介 · 软件接口测试 · 看云
五、fiddler使用小技巧:
fiddler 抓包抓的是http协议的包。不能抓其它协议。
ctrl+x快捷键 清屏。
顶部Decode 解码,默认勾上,返回体的内容会自动解码。 勾上之后是蓝色框框框起的。
rules菜单中,把hide connects 勾上 hide image勾上。
https配置: tools options 中的https菜单, 勾选各种,然后actions里面 先reset 然后 trust。
fiddler本身是在电脑上开了一个代理,用来收发http协议报文,手机如果要抓包,就指定用这个代理就行。
fiddler 的核心功能:
inspector 查看 接口报文信息
filters :过滤器。
composer:发送接口请求。可以直接从抓到的报文拖过去,自动填写,自己修改请求内容。
autoresponder:可以根据规则修改返回的结果。 有时候会用于进行mock测试。伪造返回,供后续测试使用。
六、wireshark 使用
1)过滤源IP以及目的IP:
在wireshark的过滤规则框Filter中输入过滤条件。
①查找目的地址为120.24.89.47 的包,ip.dst==120.24.89.47;
②查找源地址为192.168.1.37的包,ip.src==192.168.1.37。
2)端口过滤:
在wireshark的过滤规则框Filter中输入过滤条件。
①过滤80端口,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。
②使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为80的包。
3)协议过滤:
在wireshark的过滤规则框Filter中输入过滤条件。
①过滤get包,http.request.method=="GET",过滤post包,http.request.method=="POST"。
注:HTTP的协议,TCP协议
4)连接符and的使用。
过滤两种条件时,使用and连接,如过滤ip为192.168.1.37并且为tcp协议的,ip.src==192.168.1.37 and tcp。
七、wireshark 分析
四、报文分析
抓取并且过滤出相应的报文,我们就可以开始进行详细的报文分析了。
双击其中一个报文,即可打开这个报文的详细内容,如下图所示:
第一层Frame I:TCP/IP 协议栈中的物理层
第二层Ethernet II:TCP/IP 协议栈中的数据链路层,也就是现实网卡的源目MAC地址,依据这部分信息来做二层转发;
第三层Internet Protocol : TCP/IP 协议栈中的网络层,发明了IP协议,所以报文在这一层会带上源目IP地址。
第四层 Transmission Control Protocol: TCP/IP 协议栈中的传输层,定义了TCP协议和UDP协议,以及定义了端口的概念。所以在这一层的安博文,会带上协议的源目端口。
————————————————
原文链接:软件测试必须掌握的抓包工具Wireshark,你会了么?_程序员二黑~的博客-CSDN博客_软件测试抓包工具
八、wireshark 与charles 和fiddler区别
原理上
Fiddler进行网络数据并且解析,wireshark是进行分析网络数据的
作用上
Fiddler是在windows上运行的程序,专门用来捕获HTTP,HTTPS的。
wireshark能获取HTTP,也能获取HTTPS,也可TCP、UDP协议
运行环境
Fiddler是在windows上运行的程序,wireshark可以在windows上运行的程序,也可以在linux
页面操作不同
Fiddler可以设置断点,修改请求和返回数据
九、Postman 断言
1.设置环境变量
postman.setEnvironmentVariable("key", "value");
例子:postman.setEnvironmentVariable("url", "http://192.168.36.47/v2/api");
使用环境变量的格式:{{url}}
1.1清除环境变量
postman.clearEnvironmentVariable("variable_key");
例子:postman.clearEnvironmentVariable("url");
3.检查响应体包含一个字符串
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
例子:响应体包含以下字段 "path": "field is read-only",
tests["Body matches string"] = responseBody.has("field is read-only");
tests["Body matches string"] = responseBody.has("path");
4.转换XML身体JSON对象
var jsonObject = xml2Json(responseBody);
5.检查响应体等于一个字符串(所有)
tests["Body is correct"] = responseBody === "response_body_string";
例子:响应体包含以下字段 "path": "field is read-only",
tests["Body is correct"] = responseBody === "response_body_string";
6.检查一个JSON值
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;
7.Content-Type的存在(不区分大小写检查)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
//Note: the getResponseHeader() method returns the header value, if it exists.
8.Content-Type的存在(区分大小写)
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
9.响应时间小于200ms的
tests["Response time is less than 200ms"] = responseTime < 200;
10.状态代码是200
tests["Status code is 200"] = responseCode.code === 200;
例子:状态码是404
tests["Status code is 404"] = responseCode.code === 404;
11.代号包含一个字符串
tests["Status code name has string"] = responseCode.name.has("Created");
例子:Status:201 CREATED
tests["Status code is 201"] = responseCode.code === 201;
tests["Status code name has string"] = responseCode.name.has("Created");
12.成功的POST请求的状态代码
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
13.使用TinyValidator的JSON数据
var schema = {
"items": {
"type": "boolean"
}};
var data1 = [true, false];
var data2 = [true, 123];
console.log(tv4.error);
tests["Valid Data1"] = tv4.validate(data1, schema);
tests["Valid Data2"] = tv4.validate(data2, schema);