一.性能测试
1 .性能:时间:系统处理用户请求的响应时间 资源:系统运行过程中,系统资源的消耗情况
2.性能测试:(1).概念:通过工具来模拟系统正常、异常、峰值场景对系统各项性能指标测试
(2).原因:①.评估当前系统能力 ②.获取系统性能瓶颈,进行性能优化 ③.招聘需求
④.评估系统是否满足未来的需求
(3).分类:基准测试:建立基准线,当系统软硬件环境发生变化后再进行基准测试以确定变化对 性能的影响.(单用户测试)
*负载测试:通过逐步增加系统负载,确定在满足性能指标的情况下,找出系统所能 承受最大负载量的测试.
*稳定性测试:在服务器稳定运行的情况进行长时间测试,并最终保证服务器能满足 线上业务需求
压力测试:在强负载下测试,查看系统在峰值下是否功能隐患、系统是否具有良好 的容错能力和可恢复的能力。
并发测试:在极短时间内,发送多个请求,来验证服务器对并发的处理能力
(4).性能指标:①.响应时间:发送请求+服务器处理请求+接受响应
*258原则:响应时间2s为优秀 5s为一般 8s为bug 超8s严重bug
②.并发用户数:同一时刻向发送请求的用户数,秒杀、请购、红包等
③.吞吐量(throughput):单位时间内处理请求数
④.QPS(Query per second):每秒查询数,单位时间内服务器处理请求数
⑤.TPS(Transaction per second):每秒事务数,单位时间内服务器处理事务请 求数.
*QPS与TPS不一样的区别:QPS:处理单个请求 TPS:处理多个请求
⑥.点击数:页面所有元素请求数量
⑦.错误率:失败个数.(在满足系统指标的情况下,失败的个数)
⑧.资源使用率:系统各种资源的使用情况率=资源使用量/总资源可用量x100%
3.性能测试工具:jmeter、loadrunner
二.Jmeter
1.下载安装即启动:配置环境变量→找到jmeter解压→打开bin→打开jmeter.bat 即启动
2.基本使用:测试计划→线程组(线程数、准备时间、循环次数)→采样器(http)→监听器(聚合报告、察看结 果树、用表格查看)
3.组件介绍:①.测试计划:jmeter性能测试起点,其他元件容器
②.线程组:性质相同的一组线程 线程数:模拟用户数
准备时间:启动所有用户所用的时间 循环次数:在时间内创建完所有的线程
③.采样器:http:协议、主机地址、端口(选填)、请求方法、路径、编码格式(选填)、参数
④.监听器:采集测试结构 ample# 放前面表示: 样本个数 后面表示:案例编号
(1).察看结果树:采样器结果、请求、响应数据
(2).聚合报告
(3).用表格查看
⑤.循环控制器:控制单个采样器或单个事务的执行次数
⑥.事务控制器:(事务就是多个操作的组合)勾选
作用:事务控制器会生产一个额外的采样器,用来统计控制器子结点的所有时间
⑦.断言:用来判断请求响应的结果是否如用户所期望的.
1.Json断言:判断某个key对应某个value 2.响应断言:响应中包含某个串
⑧.前置处理器和后置处理器:负责在生成请求之前和之后完成工作
前置处理器常用来修改请求的设置,后置处理器则常常用来处理响应的数据
⑨.定时器:定义请求之间的延迟间隔
4.jmeter组件参数化:①.参数化:动态的获取并设置数据
②.为什么使用参数化:人工效率低 、安全高效 、模拟多个用户同时登录系统
③.参数化实现功能:1.用户自定义变量
(1).作用:提供全局变量,方便修改
(2).使用:配置元件 → 用户定义的变量 → key value → ${key}
2.CSV Data Set Config
(1).配置文件:a.txt中添加字段如1,2,1 2,3,2 3,4,3(英文) →几条循环几次
(2).添加元件:CSV data set config → 选中文件 → 编码 → 字段1,字段2
(3).在采样器界面:添加参数 → 调用${字段名称}
3.使用Jmeter函数助手(文件中不要出现中文)
工具 → 函数小助手 → 选择CSV Read → 复制文件路径 → 字段编号 → 生成 → 自动复制,过去粘贴
5.Jmeter正则表达式提取:可以从请求的响应结果中取到需要的内容从而实现关联.(关联是请求与请求之间存在数据依 赖关系,需要从上一个请求获取下一个请求需要回传回去的数据)
(1).正则语法:* + ? . ()
(2).实现:①添加HTTP请求,使用正则提取一个需要字段
②在第一个HTTP请求里边调用字段${字段}
6.Jmeter脚本录制:(1).概念:使用工具录制请求脚本
(2).作用:方便并发压力测试
(3).分类:①.APP:添加非测试元件→添加录制控制器→HTTP代理服务器,设置目标控制器为刚刚创建的录制控制器→设置端口、IP→手机请求网络→在录制控制器里边
②.Web: badboy:地址,录制(蓝色背景正在录制),导出脚本
7.压测:1.连接数据库:(1).添加jar包:mysql-connector-java-8.0.11.jar
(2).配置元件→JDBC connect configuration
①.连接池名字
②.DataBaseURL:jdbc:mysql://127.0.0.1:3306/mydb2(可变)?serverTimezone=UTC&allowMultiQueries=true
③.JDBC driver class:com.mysqljdbc.driver
④.UserName:数据库名称 ⑤.password:数据库密码
(3).采样器→JDBC request:①.连接池名称:池名
②.查询类型:
select statement:功能:查询 注意:只支持单条查询,只支持第一条数据查询
updata statement:功能:修、添、删 注意:同时支持新增和修改,但查询只能放在最后
callable statement:支持查询、修改 支持多个查询
preoared select statement:功能:参数化
操作:①.sql中用?代替参数值
②.添加CSV data set config
③.Parameter Values:${变量名}
④.Parameter Types:值的类型,只能varchar
③.SQL语句
2.Windows压测:(1).添加jar包:JMeterPlugins-Extras.jar、JMeterPlugins-Standard.jar到lib/ext
(2).监听服务:server-agent,双击启动
(3).给服务器(用本地数据库模拟服务器)添加监听器-jp@gc - PerfMon Metrics Collector
(4).添加性能指标,线程组设置线程数和时间:①.CPU ②.Memory ③.disk IO ④.network IO
(5).压测:线程组:线程数(500等不限)pamp-Up时间(60不限)
3.Linux压测(与Windows压测一致)