2.1 HTML与HTTP协议
URL:统一资源定位符
HTML:超文本标记语言
HTTP:超文本传输协议
2.1.1 URL
实例:http: //localhost/index/.php?m=Home&c=Goods&a=goodsInfo&id=46
格式:
协议:客户端和服务器通讯的标准,http、https、ssh等
ip或域名
端口号:协议默认的端口号是可以省略的。(http:默认端口80;https:默认端口443;ssh:默认端口22;…)
资源路径:资源存放的位置,资源可以是各种超文本信息,如音频、视频等
参数 (如?m=Home&c=GoodsInfo&i d=46)
格式:
用?与URL主体部分分开
参数的格式 参数名=参数值,有多个参数时用&拼接即可
2.1.2 HTML
HTML : Hyper Text Markup Language,超文本标记语言
超文本:声音、视频、图片、超链接等
标记:就是通过【<标记符>内容<标记符>】的格式让内容具有不同的表现形式,从而达到超文本目的。
如:<title>百度一下,你就知道</title>
互联网上浏览的网页,本质上就是超文本标记语言。
2.1.3 HTTP
HTTP:Hyper Text Transfer protocol,超文本传输协议,是互联网上最常用的协议之一。
2.2 HTTP请求与响应
2.2.1 基本概念
客户端:用于发送请求,如浏览器、APP等
服务器:处理客户端请求并返回数据,如apache、nginx等
请求:客户端向服务器索要数据
响应:服务器处理完成后,返回给客户端的数据与信息
2.2.2 HTTP 请求
请求内容:
请求行:位置在第一行(请求方式、请求地址、协议及版本)
请求头:位置在第一行会,到空行之前(用来描述客户端信息的相关参数,一般以键值对的形式存在,如浏览器类型等)
请求体:位置在空行之后
请求方式(GET 和 POST)
get:用于查询、如搜索商品
post:用于提交数据,相对比较安全,如登录、注册等
2.2.3 HTTP 响应(报文)
响应内容
响应行:位置在第一行,包含协议及版本、响应状态、状态消息
响应头:位置在第一行会,到空行之前,告诉客户端服务器相关信息,如web服务器类型等
响应体:位置在空行之后,如登陆成功
响应状态码
由3位数字组成,第一位数字代表响应消息的级别
2XX:成功,如200
3XX:重定向,如301
4XX:客户端存在问题,如404
5XX:服务端存在问题,如501
面试题:GET 和 POST的区别
最直观的区别就是GET把参数包含在URL中,POST通过 request body (请求体)传递参数。
GET比POST更不安全,因为参数直接暴露在URL上,所有不能用来传递敏感信息。
GET在浏览器回退时是无害的,而POST会再次提交申请。
GET请求只能进行URL编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST没有(注意:这个限制是由浏览器导致的)
对参数的数据类型,GET只接受ASCll字符,而POST没有限制。
GET参数通过URL传递,POST放在 request body中。
2.3 抓包
(package capture)就是将网络传输发送与接收的数据进行截取、重发、编辑、转存等操作,也用来检查网络安全。抓包经常被用来进行数据截取等。
功能测试用到抓包工具的场景:
通过抓包工具截取观察网站的请求信息,帮助我们深入了解网站。
通过抓包工具截取、观察网站的请求与返回信息,帮助测试进行BUG定位与描述。
通过抓包工具拦截修改请求信息,绕过界面的限制,测试服务端的功能。
常用的抓包工具:Fiddler、Charles、F12开发人员工具等
2.3.1 Fiddler原理
原理(代理机制)
请求先发给Fiddler,Fiddler接受请求后转发给服务器
服务器处理请求后将响应数据返回给 Fiddler,Fiddler 再转发给客户端(浏览器)
2.3.2 Fiddler 使用
2.3.2.1 删除请求
菜单删除
命令行删除:cls、clear
键盘:delete
快捷键:Ctrl + X
2.3.2.2 设置过滤
1.点击Filters页签,勾选“Use Filters”
2.Hosts下方的第二个下拉框,选择“Show Only the following Hosts”
3.在下方输入框中输入要抓包的主机地址(多个地址用英文分号隔开,如:localhost;127.0.0.1)
4.点击右上角的“Actions” 选择 “Run Filterset Now”
5. 如果取消过滤,去掉“Use Filters”的勾选
2.3.2.3 设置断点
修改请求
- 进入添加会员的页面,填写正确的手机号码和其他信息
- 打开fiddler 拦截开关:Rules==》Automatic Breakpoints ==》Before Requests
- 回到添加会员页面,点击提交按钮
- 回到fiddler,修改【请求体】,如修改手机号内容
- 点击Fiddler中请求下方的绿色按钮 “Run to Completion”
- 关闭Fiddler拦截开关:Rules==》Automatic Breakpoints ==》Disabled
修改响应(扩展)
- 进入添加会员的页面,填写正确的手机号码和其他信息
- 打开fiddler 拦截开关:Rules==》Automatic Breakpoints ==》After Requests
- 回到添加会员页面,点击提交按钮
- 回到fiddler,修改【响应体】,如修改【操作提示】的内容
- 点击Fiddler中请求下方的绿色按钮 “Run to Completion”
- 关闭Fiddler拦截开关:Rules==》Automatic Breakpoints ==》Disabled
2.3.2.4 AutoResponder (扩展)
自定响应
1、进入 AutoResponder
2、选择列表左侧请求,点击【Add Rule】添加mock请求,(或点击【Add Rule】手动填写请求地址)
3、选择响应结果,模拟测试场景(此处支持打开本地文件,根据文件内响应数据(例如json文件)进行mock)
4、点击右下角【save】,保存响应设置
5、勾选上方选项:
(1)Enable rules:开启或禁用自动重定向功能,勾选上时,激活规则
(2)Unmatched requests passthrough:未匹配的请求穿透,即勾选上时,不影响那些没满足我们处理条件的请求
(3)勾选了这个选项,在规则里面就可以设置是立即返回响应,还是隔多少毫秒返回响应