1.0 非功能性测试
1.1 兼容性测试
1.1.1 定义
在不同的平台,系统上都能正常工作
1.1.2 测试关注点
- 浏览器: IE 谷歌 火狐浏览器等
- 操作系统: 不同的操作系统:win linux mac redhat等 不同的版本:win7 xp win10等
- 分辨率
- 网络
1.2 性能测试
- 用户量大,并发测试,压力测试,负载测试
- 对性能有要求
1.3 安全测试
- 关注点 sql注入
- 渗透测试:安全测试工程师
业务层面
输入数据
重要信息不允许被复制
敏感信息进行脱敏
输出数据
数据库中的敏感信息加密
传输数据:数据加密
需要加密算法
1.4 易用性测试
用户群体
项目复杂度
快捷键
追求:易用,易懂,易学
1.5 界面测试
UI
参照原则:需要UI设计图
布局
风格
按钮风格
2.0 网络知识
2.1 案例:
在浏览器输入www.baidu.com/, 回车之后,会查看到望都首页,在这段网络通信过程中,发生了什么?
1.浏览器通过DNS服务器查找域名对应的IP地址
2.向IP地址对应的web服务器发送请求
3.web服务器相应请求,返回需要的数据
4.浏览器进行渲染,展示
2.2 http与https(重要)
http:超文本传输协议,是一种发布和接收HTML页面的方法,端口号是80
https:是http的安全版本,在http的基础上增加了ssl安全套接层,端口号是443
s:ssl:安全套接层,在传输层对网络连接进行加密,保证数据传输安全
2.3 URL
2.3.1 URL定义
统一资源定位符
<https://tieba.baidu.com/f?kw=%C3%C0%CA%B3&fr=ala0&tpl=5>
2.3.2 URL解析
基本格式:schema://host[:port]/path?query_string#anchor
schema:协议(http、https/ftp)
host[:port]:服务器的域名或者IP地址
port:端口
path:访问资源的路径
query_string:查询参数,发送给服务器,表达形式:参数名=对应的值
anchor:锚点,定位
?:后面的查询字符串不参与路径匹配
&:出现多个查询参数之后,进行连接,
2.4 案例 get请求与post请求的区别?(重要)
get | post |
---|---|
get将请求参数以 键名=值 的形式拼接在URL地址中 | post请求将请求参数以请求体的形式进行传递 |
get请求是直接暴露在URL地址上,不安全 | post比较安全,敏感信息传递放在post中 |
get请求在浏览器回退无害的 | post再次提交请求 |
get请求只能进行URL编码 | post支持多种编码 |
get请求的参数会完整的保留在浏览器的历史记录中 | post参数不保留 |
get请求在URL中传参是有长度限制的 | post没有长度限制 |
get的接收的参数数据类型,ASCLL字符 | post没有限制 |
get从服务器请求资源 | post向服务器提交资源 |
2.5 常用请求报头
第一排数据:请求方式 请求路径 协议
类型 | 描述 | 说明 |
---|---|---|
host | 主机和端口号 | |
Connection | 连接类型 | keep—alive HTTP1.1的默认值,支持长链接 |
User-Agent | 浏览器名称 | 标记浏览器身份 |
Accept | 传输文件类型 | 标记浏览器或者其他客户端可以接收的文件类型 |
Referer | 标记当前的请求网页来自于哪一个URL | |
Accept-Encoding | 文件的编解码格式 | 标记浏览器接收的编码方式,编码为了压缩文件,提高了文件传输速度,浏览器接收到响应之后,先解码 |
Accept-Language | 语言种类 | |
cookie | 保存状态 |
2.6 响应
2.6.1 响应
1.状态行
表达形式:协议版本 响应状态码 响应信息
2.响应头
藐视的是服务器的基本信息,或者数据描述,提示客户端如何处理响应数据
3.响应体
就是数据,数据可以是图片、文字、json、html、xml
2.6.2 响应头信息
类型 | 描述 |
---|---|
Connection | 回应的客户端的connection,告知服务器也是支持长链接 |
Content-Type | 告诉客服端,资源文件的类型,客户端乐意通过utf-8来进行编码 |
Date | 服务器发送资源的服务器时间 |
Server | 服务器 |
2.6.3 响应状态(重要)
状态码 | 描述 |
---|---|
100-199 | 服务器成功的接受了部分请求,继续提交其他请求,才能完成整个处理过程 |
200-299 | 表示服务器已经成功的接收请求并且完成整个处理过程,常用的200 OK |
300-399 | 重定向,表示客户需要更加细化请求 |
400-499 | 客户端请求有错误,404 not found 403被拒绝 |
500-599 | 服务端出现错误,常用500 |
著名状态
状态码 | 显示 | 请求类型 | 描述 |
---|---|---|---|
200 | OK | get | 服务器成功的返回用户请求的数据 |
201 | created | post/put | 用户新建或者修改成功 |
202 | accepted | 异步任务,请求正在后台排队 | |
204 | no content | delete | 用户删除数据成功 |
401 | unauthorized | 用户没有权限 | |
400 | bad request | post/put | 前端请求有语法错误,后端不能理解 |
403 | forbidden | 访问被禁止 | |
404 | not found | 错误的URL | |
406 | not acceptable | get | 用户请求的格式不存在,例如存在响应json,用户想要xml |
500 | server unavailable | 服务器发生错误 |
- 请求总结:
1.请求行:
位置信息:在第一行
表达格式:请求方式 请求地址 协议版本
常用的请求方式
类型 | 描述 |
---|---|
get | 向服务器请求资源 |
post | 在服务器新建资源 |
put | 在服务器更新资源 |
delete | 在服务器删除资源 |
head | 获取响应报头 |
options | 请求查询服务器性能,或者查询与资源相关的选项和需求 |
2.请求头:
位置信息:在第一行之后,空行之前
表达格式:键值结构,描述的是客户端的消息,例如user_agent描述了浏览器的类型
重要参数:content-type 标记请求体数据类型
类型 | 描述 |
---|---|
application/x-www-from-urlencoded form | 表单数据被编码为键值结构的格式发送给服务器 |
application/json | json数据格式 |
text/html | html格式 |
text/plain | 纯文本 |
image/jepg | ipg图片格式 |
multipart/form-date | 在表单中进行文件上传 |
3.请求体:
在post、put方法中使用较多,不在get中使用
请求体数据:表单数据,文本,HTML,json
2.6.4 网络通信
2.6.4.1 IP地址
IP地址=网络地址+主机地址
在网络中,标记一台电脑,地址唯一
2.6.4.2 IP地址的分类(重要)
A类地址
1字节的网络地址+3字节的主机地址组成,网络地址的最高位为0
B类地址
2字节的网络地址+2字节的主机地址组成,网络地址的最高位为10
C类地址
3字节的网络地址+1字节的主机地址组成,网络地址的最高位为110
D类地址
第一个字节是1110开始,专门的保留地址,用于多点广播
E类地址
第一个字节是11110开始,为将来保留,作为实验或者开发使用
私有IP 不在公网中使用
10.0.0.0 | 10.255.255.255 |
172.16.0.0 | 172.31.255.255 |
192.168.0.0 | 192.168.255.255 |
注意点:
127.0.0.1代表的是本机地址
2.6.5 端口(重点)
2.6.5.1 著名端口0-1023
80端口分配给http服务
linux端口2^16=65536
2.6.5.2 动态端口
1024-65535
程序关闭之后,会释放端口
IP是标记网络地址
端口是程序用来收发网络数据的通道
2.7 网络协议
2.7.1 osi模型(重点)
2.7.1.1 模型
OpenSystemInterconnect开放式系统互联
2.7.1.2 物理层
作用:为传输数据所需要的物理链路进行创建、维持、拆除。
常见的物理层设备是:中继器、集线器,这一层,数据的单位称为比特(bit)
2.7.1.3 链路层
它为网络层提供服务,在不可靠的物理介质上提供可靠的传输。 作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 常见的链路层设备是:二层交换机、网桥。 这一层,数据的单位称为帧(frame)
2.7.1.4 网络层
使数据路由经过大型网络。
这一层,数据的单位称为数据包(packet) 网络层主要设备:路由器
2.7.1.5 传输层
提供终端到终端的可靠连接。
这一层,数据的单位称为数据段(segment)
2.7.1.6 会话层
会话层:管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
2.7.1.7 表示层
表示层:编码、加密解密、压缩
2.7.1.8 应用层
应用层:DNS、HTTP 、邮件服务、文件传送服务等
2.7.1.9 七层模型总结
层 | 描述 | 案例 |
---|---|---|
应用层 | OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。 | 实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 |
表示层 | 表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。 | 由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 |
会话层 | 会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 | 会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。 |
传输层 | 传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。 | 传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。 |
网络层 | 本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。 | 网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。 |
数据链路层 | 将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。 数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。 MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。 | |
物理层 | 实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。 | 快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。 |
2.7.2 tcp/ip协议
2.7.2.1 模型(重点)
2.7.2.2 osi与tcp/ip协议对比
2.7.2.3 tcp/ip协议传输示意图
2.7.2.4 IP协议
一个IP分组由首部和数据两部分组成。首部的前20字节是所有IP分组必须具有的,也称固定首部。在首部固定部分的后面是一些可选字段,其长度是可变的
2.7.2.5 tcp协议
头部
---Source Port是源端口,16位。
---Destination Port是目的端口,16位。
---Sequence Number是发送数据包中的第一个字节的序列号,32位。
---Acknowledgment Number是确认序列号,32位。
---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。
---标志位: 6位,URG表示Urgent Pointer字段有意义:
ACK表示Acknowledgment Number字段有意义
PSH表示Push功能,RST表示复位TCP连接
SYN表示SYN报文(在建立TCP连接的时候使用)
FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)
Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
---Checksum是校验和,16位。
---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。
2.7.2.6 tcp三次握手(重点)
2.7.2.7四次挥手
2.7.2.8长短链接
2.7.2.8.1 tcp短连接
1.客户端向服务端发起连接请求
2.服务端接收请求,建立连接
3.客户端向服务端发送数据
4.服务器向客户端发送数据
5.一次读写完成,一般都是客户端发起断开连接
2.7.2.8.2 长链接
1.客户端向服务端发起连接请求
2.服务端接收请求,建立连接
3.客户端向服务端发送数据
4.服务器向客户端发送数据
5.一次读写完成不关闭,接着进行数据交互
6.全部操作完成之后,由客户端发出连接断开申请
2.7.2.8.3 长短链接
长链接 | 短连接 |
---|---|
省去了TCP多次建立和关闭的操作,节省时间 | |
适合请求频繁的客户 |
2.7.3 udp
广播
2.7.4 udp和tcp异同点(重点)
tcp | udp | |
---|---|---|
1 | tcp面向连接 | udp不面向连接 |
2 | 能有保证数据有效性,有序性 | 不保证数的有效性,有可能会出现错误显示 |
3 | tcp超时重传 | 没有 |
4 | tcp接收到一定数量的数据之后,不再接收,等待消息全部接收完成之后再接收 | udp一直收,可能会卡死 |
5 | 没有 | 广播 |
2.7.5 fiddler
- 原理
代理
- 抓包
- 会话区
参数 | 描述 |
---|---|
# | 顺序号,抓包顺序 |
result | http状态码 |
protocol | 请求使用的协议 |
host | 请求地址的主机名或者域名 |
url | 路径 |
body | 请求大小 |
caching | 请求的缓存过期时间或者缓存控制值 |
content-type | 请求响应的类型 |
process | 发送请求的进程 |
comments | 备注 |
custom | 自定义值 |
http request
类型 | 描述 |
---|---|
headers | 信息头 |
textview | 以文本的形式显示请求信息或者响应信息 |
syntaxview | 效果和textview 是一致的,但是语法会有不同颜色展示 |
webform | 以表单的形式展示所有的参数 |
hexview | 16进制 |
auth | 显示认证信息 |
cookie | 保存cookie |
raw | 显示的request的请求头和请求体数据 |
json | 以json形式展示请求或者响应内容 |
xml | 以xml形式展示请求或者响应内容 |
编解码:
点击粉红色框内容
类型 | 描述 |
---|---|
transformer | 显示响应的编码信息 |
imageview | 请求的是图片资源,显示相应的图片信息 |
webview | 响应在浏览器中的预览效果 |
caching | 缓存信息 |
- post
- get
2.8 删除过滤
2.9 弱网测试
2.9.1 弱网测试
2.9.2 需要关注的场景
关注场景 |
---|
断网 |
网络故障 |
各种类型网络的最低速率 |
低于2G速率 |
也可以将3G划分为弱网 |
弱信号的WiFi |
结合业务场景 |
应用类型 |
目的:保证APP在弱网甚至在无网的情况下,能正常运行
2.9.3 设置自定义网络速度
找到修改的位置 Ctrl+F
进行修改
注意点:修改完成之后,必须在performance中打开开关,因为打开配置文件修改的时候,默认是关闭的
2.9.4 关于2G 3G设置问题
2.9.5 断点
2.9.5.1 原理
2.9.5.2 直接更改响应
2.9.5.3 修改响应
直接修改响应
run to comlietion
2.9.6 自动响应
1.打开菜单 AutoResponder
2.点击Add Rule
3.选择响应结果
注意点:可以不选择自带的响应,可以选择find a file 选择自定义响应
4.需要将设置进行保存
5.勾选选项
enable rules 勾选进行激活规则
unmatched 勾选,不影响不满足规则的请求
latency 勾选进行时间响应设置
2.9.7 composer
接口