文章目录
功能测试与数据库
项目与数据库的关系
- 浏览器<—>(请求/响应)Web服务器Apache<—>(转发/响应)PHP网站框架ThinkPHP<—>(请求/响应数据)数据库MySQL
功能测试与抓包工具
- 抓包:(package capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包经常被用来进行数据截取等。
- 功能测试用到抓包工具的场景:
- 通过抓包工具截取观察网站的请求信息,帮助我们更深入的了解网站
- 通过抓包工具截取、观察网站的请求与返回信息,帮助测试进行Bug定位与描述
- 通过抓包工具拦截修改请求信息,绕过界面的限制,测试服务端的功能
- 常用的抓包工具:Fiddler、Charles、F12开发人员工具等
HTML与HTTP 协议
- URL:统一资源定位符
- HTML:超文本标记语言
- HTTP:超文本传输协议
URL
- 示例:http://localhost/index.php?m=Home&c=Goods&a=goodsInfo&id=46
- 格式:
- 协议:客户端和服务器通讯的标准,http、https、ssh等
- IP或域名
- 端口号:协议默认的端口号是可以省略的
- http:默认端口80
- https:默认端口443
- ssh:默认端口22
- 资源路径:资源存放的位置,资源可以是各种超文本信息,如音频、视频等
- 参数
- 格式:用?与URL的主体部分分开
- 参数格式
参数名=参数值
,有多个参数时用&拼接即可
HTML
HTML:HyperText Markup Language,超文本标记语言
- 超文本:声音、视频、图片、超链接等
- 标记:就是通过【<标记符>内容</标记符>】的格式让内容具有不同的表现形式,从而达到超文本的目的
- 如:
<title>百度一下,你就知道</title>
- 互联网上浏览的网页,本质上就是超文本标记语言
- 如:
HTTP
HTTP:HyperText Transfer Protocol,超文本传输协议,是互联网上最常用的协议之一
HTTP请求与响应
基本概念
- 客户端:用户发送请求,如浏览器、APP等
- 服务器:处理客户端请求并返回数据,如apache,nginx等
- 请求:客户端向服务器索要数据
- 响应:服务器处理完以后,返回给客户端的数据与信息
HTTP请求
-
请求内容
- 请求行:
- 位置是在第一行
- 请求方式、请求地址
- 协议及版本
- 请求头:
- 位置是在第一行之后,到空行之前
- 用来描述客户端信息的相关参数,一般以键值对的形式存在,如描述浏览器类型等
- 请求体:位置是在空行之后
- 请求行:
-
请求方式(GET和POST)
- get:用于查询,如搜索商品
- post:用于提交数据,相对比较安全,如登录、注册
HTTP响应
- 响应内容
- 响应行:位置是在第一行,包含协议及版本、响应状态码、响应消息
- 响应头:位置是在第一行之后,到空行之前,告诉客户端服务器相关信息,如web服务器类型等
- 响应体:位置是在空行之后,如登陆成功
- 响应状态码:由三位数字组成,第一位数字代表响应消息的级别
- 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只接受ASCII字符,而POST没有限制
- GET参数通过URL传递,POST放在Request body中
抓包工具
Fiddler原理:
- 请求先发送给Fiddler,Fiddler接受请求后转发给服务器
- 服务器处理请求后将响应数据返回给Fiddler,Fiddler再转发给客户端(浏览器)
Fiddler使用
- 删除请求
- 菜单删除
- 命令行删除:cls、clear
- 键盘:delete
- 快捷键:Ctrl+X
- 菜单删除
- 设置过滤
- 点击Filter页签,勾选“Use Filters”
- Hosts下方的第二个下拉框,选择“Show Only the following Hosts”
- 在下方输入框中输入要抓包的主机地址(多个地址用英文分号隔开,如:localhost;127.0.0.1)
- 点击右上角的“Actions”,选择“Run Filterset Now”
- 如果取消过滤,去掉Use Filters的勾选
- 设置断点
- 自动响应
- 进入AutoResponder
- 选择列表左侧请求,点击【Add Rule】添加mock请求(或点击【Add Rule】手动填写请求地址)
- 选择响应结果,模拟测试场景(此处支持打开本地文件,根据文件响应数据(例如json文件)进行mock)
- 点击右下角【save】,保存响应设置
- 勾选上方选项:
(1)Enable rules :开启禁用自动重定向功能,勾选上时,激活规则
(2)Unmatched requests passthrough:未匹配的请求穿透,即勾选上时,不影响那些没满足我们处理条件的请求
(3)勾选了这个选项,在规则里面就可以设置是立即返回响应,还是隔多少毫秒返回响应
HTTPS请求(扩展)