文章目录
- fiddler
- 简介
- URL与HTTP
- URL
- http
- 模拟测试场景
- 弱网测试
- 自定义规则
- 前端性能分析及优化
fiddler
简介
Fiddler是位于客户端和服务端的HTTP代理
- 目前最常用的http抓包工具之一
- 功能非常强大,是web调试的利器
- 监控浏览器所有的HTTP/HTTPS流量
- 查看、分析请求内容细节
- 伪造客户端请求和服务端响应
- 测试网站的性能
- 解密HTTPS的web会话
- 全局、局部断电功能
- 第三方插件
- 使用场景
- 接口调试、接口测试、线上环境调试、web性能分析
- 判断前后端bug、开发环境hosts配置、mock、弱网断网测试
只能抓http/https的包
配置支持HTTPS抓包
Tools-OptionsS-Https
URL与HTTP
URL
URL:统一资源定位符,通过URL的方式去访问的资源(接口)
URI:统一资源标识符,抽象的概念。URL可以理解为为URI的子集或具体实现方式。URI没有具体的实现
一般来讲URL分为5个部分
protocol、domain、port、path、url parameters
-
protocol(协议)
url中://之前的部分
通信双方对于通信过程中的数据、数据组织格式、规程、含义等等所作出的约定。
一般来说,按照TCP/IP模型,不同的层有不同的协议
接口测试一般来说从应用层的协议着手来模拟实现接口请求和访问的
常见的应用层的协议有:
- http
- https(http+ssl/tls)
- ssh
- ftp
- smtp
- pop3
- mysql
- oracle
- MS SQL
-
domain(域名)
- 要访问的服务器地址,可以是服务器的域名/ip地址/机器名
-
port(端口)
-
由服务器提供,用来监听客户端的请求
-
格式上:domain:poart
-
PS如果服务器所设置的监听端口和其应用所采用的通信协议是默认的对应关系,则用户在通过URL来访问是,可以省略端口。
-
常见的协议及其默认的通信端口对应关系
协议 默认通信端口 http 80 https 443 or 8443 ftp 21 ssh 22 smtp 25 pop3 110 oracle 1521 mysql 3306 MS SQL 1433
-
-
path(路径)
要访问的资源在服务器的容器路径下的相对地址
PS:一般来说:路径适合要访问的接口直接相关的
-
url parameters(URL地址参数)
通常是以问好?作为连接符拼接在path之后
url地址是键值对应的,即key=value的格式多个键值之间使用&作为连接符
http
- Hyper Text Transfer Protocol(超文本传输协议)
- 用于从万维网服务器传输资源到本地浏览器的传送协议
- HTTP协议是基于TCP的应用层协议,他不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80
- http是基于请求与响应模式、无状态的应用层的协议
特点
-
基于request(请求)和response(响应)的协议。
-
简单、灵活的协议
- 仅需url和请求方法
- 可以实现任何类型的静态和动态资源的交互
-
一种快速的协议
-
http1.0及0.9版本,http协议默认是一种短链接的协议。
短连接:一个tcp连接上只能建立一个http连接,http结束之后,tcp连接也释放结束
-
http1.1开始,http协议默认是一种面向长连接的协议。
长连接:一个tcp连接上可以建立多个http连接。
通过信息头:Connection来实现的。keep-alive就是表示长连接
-
-
无状态的协议
详细构成
http协议包含两个部分:http request、http response
-
http request:http请求,影响的是脚本的实现
-
request line
请求行,是指请求数据包中的第一行内容
GET /baidu/ HTTP/1.1
通常包含以下信息
-
request method
请求方法,所有的http请求都必须指定请求方法,如果没有指定,则默认使用get方法
常见的请求方法有:**get、post、put、patch、delete、**options、header、trace等
方法 GET 请求资源 POST 提交资源 Head 获取响应头 PUT 替换资源 DELETE 删除资源 OPTIONS 允许客户端查看服务器的性能 TRACE 回显服务器收到的请求,用于测试或诊断 -
request path
请求路径,就是指URL中的path和utl地址参数两个部分
-
protocol/verseion
协议版本
-
-
request headers
请求头,是指请求数据包中的第二行到第一个空行之前的部分
请求头是客户端用来和服务器进行通信信息、控制信息等交互的。
一般来说和业务逻辑无关(处理状态类的信息头)。
信息头是键值对应的。
信息头的类型是由协议规定的,不同的信息头具有不同的作用
信息头 User-Agent 简称UA,是客户端用来告知服务器,客户端的一些配置信息。服务器往往就是通过该信息头来判断“用户”是不是同一个用户。
一般作为全局信息头。Content-Type 该信息头是客户端用来告知服务端,客户端向服务器所发送的请求body中的数据的数据组织格式。
要求和实际发送的数据格式保持一致。状态有关的头 token、author等 请求头 描述 Host 主机IP地址或域名 User-Agent 客户端相关信息,操作系统、浏览器等信息 Accept 指定客户端接受信息类型,如:image/jpg,text/html,application/json Accept-Charset 客户端接受的字符集,如gb2312,iso-8859-1 Accept-Encoding 可接受的内容编码,如gzip Accept-Language 接受的语言,如Accept-Language:zh-cn Authorization 客户端提供给服务端,进行权限认证的信息 Cookie 携带的cookie信息 Referer 当前文档的URL,即从哪个链接过来的 Content-Type qing’qiqingqi打内容类型,如Content-Type:application/x-www-form-urlencoded Content-Length 数据长度 Cache-Control 缓存机制,如Cache-Control:no-cache Pragma 防止页面被缓存,和Cache-Control:no-cache作用一样 -
request body
请求指数提,是指从请求数据包中的第一个空行之后的所有内容。
一般来说,get方法发送的数据位于url地址参数,反之放在url地址参数中的数据,服务器认为试通过get方法发送的
post方法发送的数据一般是位于请求主体中
PS:请求主体中的数据组织格式是由接口本身所决定的
一旦请求主体哟数据,则信息头中一定要指定Content-Type
-
-
http response:http响应,影响的是脚本的增强处理
HTTP响应报文主要由状态行、消息报头、空一行、响应正文四部分组成
-
response line
响应行,是指响应数据包中的第一行内容
HTTP/1.1 200 OK
portocol/version 协议/版本 response code 响应代码(又叫status code、状态码),是服务器用来告知客户端,服务对于请i去的处理状态。
响应代码给出的置视通信层面的处理状态。
业务的成功是建立在通信成功的基础之上。
- 1xx:表示连接建立过程中双方的通信控制信息
- 2xx:服务器处理成功
- 3xx:重定向
一般来说1~3都表示通信成功
- 4xx:客户端错误
- 5xx:服务器错误response message -
response headers
响应头,是服务器返回给客户端的
可能会有服务器返回的一些状态有关的信息头需要关联处理
响应头 描述 Server HTTP服务器的软件信息 Date 响应报文的时间 Expires 指定缓存过期时间 Set-Cookie 设置Cookie Last-Modified 资源最后修改时间 Content-Type 显影的类型和字符集,如:Content-Type:text/html;charset=utf-8 Content-Length 内容长度 Connection 如Kepp-Alive,表示保持tcp连接不关闭,不会永久保持连接,服务器可设置 Location 知名重定向的位置,新的URL地址,如304的情况 -
response body
响应主体是指响应数据包中的第一个空行之后的所欲内容
响应主体就是服务器对于请求的处理结果
要去判断请求是否成功,要去进行数据关联,很多时候都是和响应主体有关
-
BS架构:浏览器到服务器
- 编写程序部署到web服务器
- web服务器运行在服务器上,绑定ip地址并监听某端口,接收和处理http请求
- 客户端通过http协议获取服务器上的网页、文档等资源
模拟测试场景
- 模拟发送请求,进行接口测试
- 需求文档中说明,某个接口限制同一账号只能请求一次,同一设备只能请求一次
- 存在页面输入限制,需要模拟特殊情况请求(例如特殊字符,空格等参数),测试程序处理机制
- Mock接口返回数据,测试程序
- 需要验证接口数据能否正常处理,但程序处于开发过程中,后台无法对发送请求给出响应
- 需要验证程序针对404,500,502等不同状态的处理机制
弱网测试
日常进地铁、上公交,进电梯等,如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到app闪退、ANR、数据丢失等问题
- 打开限速开关
- 设置弱网环境
- 使用app进行操作验证
自定义规则
修改自定义文件后需要重新打开限速开关
if (m_SimulateModem){
//Delay sends by 300ms per KB uploaded.
//每上传KB延时300ms
oSession["request-trickle-delay"]="300";
//Delay receives by 150ms per KB downloaded.
//每下载KB延迟接收150ms
oSession["response-trickle-delay"]="150";
}