一、性能测试和功能测试,自动化测试的思维差异
- 功能测试、自动化测试
- 输出: 找bug 预期结果与实际结果进行比较
- 隐藏的前提:模拟都是1个用户的操作
- 性能测试
- 不是模拟1个人,而是模拟多个人同时操作
- 关注点:
- 多个人操作时的响应时间
- 接口服务器性能测试中,一定是多个人同时操作,才是性能测试
二、 性能测试概念
-
100个人同时登录接口进行登录,性能中的avgRT应该在多少,是可以被接受的?
- 可接受的范围 1.5s
- 1.5 APDEX 用户满意度指数
-
事务:一个请求行为,并不一定只有一个接口,所以,一个事务可能是多个接口。
-
jmeter:默认情况下,1个接口请求一次,认为一个1个事务Transation。
也可以是通过事务控制器,挂载多个接口请求,合并成为1个事务。
是从发起,到网络传输,收到响应
-
三、 性能测试相关工具
- 通过工具,模拟多用户发起请求,获取性能指标值
- 用工具来模拟多个人的方式很多
- 线程:使用进程的资源。jmeter、lr
- 进程:资源拥有者,资源消耗会比较大。LR
- 进程+线程:ngrinder
- 协程:python+locust
- 用工具来模拟多个人的方式很多
四、 性能指标介绍
-
平均响应时间 avgRT 90%
-
TPS: 服务器每秒处理的事务数
- 衡量服务器处理能力的最主要的指标
-
RPS: 请求,每秒用户请求率 发起方
-
QPS: 每秒查询率, 服务器的查询
在企业中,如果没有严格区分,是把1个事务,当做只查询1次,但,实际请求可能是 1事务: n个查询
-
HPS:hitpers 每秒用户点击率 页面点击
-
吞吐量:网络中每秒传输的事务数
- 1、没有网络瓶颈:tps 数值 = 吞吐量数值
- 2、如果网络有瓶颈: tps 数值 != 吞吐量数值
-
吞吐率:每秒钟能通过多少kb数据
-
服务器资源利用率
- cpu、内存、io的利用率
-
并发用户数:
- 同一时间发起请求 用户数
- 广义并发: 同一时间发起请求(相同、不相同)
- 狭义并发:同一时间发起相同请求
- 集合点:集合多个人在同一时间发起相同请求
并发用数100 发起请求,一秒钟会发起多少请求?(请求的频率)不知道,所以1秒钟总请求量,不知道,
- 同一时间发起请求 用户数
-
负载测试
- 逐步增加并发用户数,找出最大 拐点区间
- 逐步增加并发用户数,
- 区间怎么判断
- 有没有报错
- tps下降
- 响应时间变长
50tps: 服务器每秒能处理50个事务
50 t/s * 60 * 60 = 18w 300tps
18w * 8h = 144w
- 逐步增加并发用户数,找出最大 拐点区间
-
压力测试
使用一定量的并发用户数,持续比较长时间向服务器发起请求,查看服务器的稳定性
一定量:访问 小于最大并发用户数 20% 或 80% maxThreads -
容量测试:
- 在性能测试时,如果数据库的数据量级是不一致的,性能指标值,也可能存在差异。 所以在做性能测试时,数据库的数据量级一定要保证一致。
- 生成的数据库数据量级: 百万级
- 测试用的环境,独立性能测试环境, 不超过万
五、性能测试注意点
-
性能测试 需要自己搭建性能测试独立环境,不能使用功能测试环境、自动化测试环境、验收、生成环境都不能用。
独立环境:真正的性能测试环境,机器资源配置是和生产完全一样(硬件配置一样、数量一样、网络一样、架构参数一样)
网络:网络架构,网络基础,性能测试,不能使用无线网络,也不要去使用vpn等桥连,尽可能使用局域网
-
性能测试并不是想做就做,要优先做核心的业务,用户量最大优先
-
具备可测性:反复沟通确定性能指标
六、性能测试流程
- 性能测试准备
- 搭建性能测试环境
- 性能测试脚本开发
- 性能测试脚本执行
- 结果分析与调优
- 测试报告与结果跟踪
七、性能测试所需知识面
- 服务器的发展
- 台式机器 —> 刀片机有了n个操作系统后,
- vmware虚拟技术:vmware、
- 虚拟出操作系统
- 理论上1个刀片机安装1个操作系统之后,可以虚拟出n多个操作系统
- 1:n操作系统
- 1个刀片机 n个刀片机
- 08-15年左右,企业中服务器为虚拟机非常流向
- 用vmware 虚拟技术虚拟的操作系统,是非常消耗本机的硬件资源
- 用vmware虚拟技术虚拟的机器,能产生多个操作系统,更大化使用本机资源,但是,vmware也非常消耗资源,会使用大量的磁盘空间和cpu、内存资源。它对我们本机的性能是有影响,但是因为虚拟了多个操作系统,可以更大化利用空间。
- 虚拟出操作系统
- 云服务器
- 也是虚拟技术发展的产品,虚拟操作系统(比较完整的操作系统)
- docker
- 也是linux操作系统,定制化, 缩减版的操作系统(namespace、unionFS、cgroup)
- 应用发展
- os系统: linux(常用命令)
- 常用名称
- 配置环境变量
- 防火墙、网络
- linux的性能分析命令(top、ps、netstat、)
- cpu
- OOM
- jvm 前面这些内容,快速浏览,暂时不要深入研究
- os系统: linux(常用命令)
- 应用的发展
- 最开始,所有的代码都在一个工程下面,生成一个项目包,随着项目开发,代码越来越多,要运行这个工程的硬件资源配置就要越来越高
- 然后,就是拆项目和数据库Oracle sqlserver access mysql postgrasql、文件服务ftp、oss器、 项目服务器apache、tomcat、springboot、 springcloud、docker 、集群nginx
- 数据库: 主从、非关系型(mongodb、memcache、redis)、时序数据库(influxdb\ prometheus)
- 拆项目:前 后端(最初)中台, 后台逐步模块化,微服务
八、USE方法
USE(utilization saturation errors)对于所有资源,查看它的使用率,饱和度和错误
- 资源:硬件资源(服务器所有元器件)、软件资源(文件描述符、连接跟踪数、套接字大小、中间件连接数)
- 使用率:在规定时间间隔内,资源用于服务工作的时间百分比
- 饱和度:资源不能再服务更多额外工作的程度
- 错误:错误事件的个数