概述
性能:
- 时间:系统处理用户请求的响应时间
- 资源:系统运行过程中,系统消耗的资源情况
性能测试:
使用自动化测试工具,模拟不同的场景,对软件的各项性能指标进行测试。
目的:
- 评估当前系统能力
- 寻找性能瓶颈,优化性能
- 评估软件是否满足未来需求
分类:
基准测试:
狭义上讲:就是单用户测试。(单用户循环多次得到的数据)
广义上讲,建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
负载测试
通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能够承受的最大负载量的测试。
稳定性测试
在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器能满足线上业务需求。
压力测试
在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力。
并发测试
并发测试(绝对并发):是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
指标
响应时间
指从客户端发起请求开始,到客户端接收到结果的总时间
包括:服务器处理时间 + 网络传输时间
并发数
某一时刻同时向服务器发送请求的用户数
吞吐量
吞吐量(Throughput):指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力。
- QPS:每秒查询数;即控制服务器每秒处理的指定请求的数量
- TPS:每秒事务数;即控制服务器每秒处理的事务请求的数量
点击数
所有的页面元素(如:图片、链接、框架等)的请求总数量
错误率
指系统在负载情况下,失败业务的概率
资源利用率
资源的使用量/总的资源可用量×100%
流程
JMeter使用
线程组:
Setup线程组:预测试操作,所有脚本之前执行
普通线程组:执行测试用例,可以有1个或者多个(并行/串行)
Teardown线程组:测试后操作,所有脚本之后执行
元件
元件及基本作用域
执行顺序
配置元件 前置处理器 定时器 取样器 后置处理器 断言 监听器(逻辑控制器)
注意:如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的
子节点等)
监听器
用于查看结果,
查看结果树
聚合报告
参数化
位置: 在线程组下面,与http并齐
概念:使用不同的测试数据,调用相同的测试方法进行测试
本质:实现测试数据与测试方法的分离。
实现方式:
用户定义的变量 (全局变量)
用户参数 (为每个用户分配不同的参数值)
CSV数据文件设置 (文件方式参数化)
函数 (随机数据)
断言
位置: 在HTTP请求下面
让程序自动判断预期结果和实际结果是否一致。
响应断言:
适用于一般环境
JSON断言:
判断返回值json数据
断言持续时间:
判断响应时间是否达标
关联
位置: 测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器–>正则表达式提取器
请求之间有依赖关系时(例如:加入购物车 = 登录()+加入购物车)
正则表达式提取器:
位置: 第一个http请求下面(右键)后置处理器–> 正则表达式提取器
任意格式的响应数据,都可以使用正则表达式提取器进行提取
xpath提取器:
位置: 第一个http请求下面(右键)后置处理器–> xpath提取器
针对HTML格式的响应结果数据进行提取
json提取器:
位置: 第一个http请求下面(右键)后置处理器–> JSON提取器
针对JSON格式的响应结果数据进行提取
属性(跨线程传递)
在第一个线程中
- 使用提取器,保存想用的数据
- 使用函数seteroperty
- 使用BeanShell提取器保存该函数
另外一个线程:
- 使用函数property
- 自接在路径中使用 /S?wd=${__property(pro_ttt,)}
脚本
一、录制控制
1、在线程组中,添加录制控制器:(用于记录请求)
二、HTTP(S)测试脚本记录
2、在测试计划中,添加HTTP(S)测试脚本记录器:(用于监控浏览器访问请求)
注意:
1、需要在浏览器下载插件SwitchyOmega,用于管理浏览器代理,防止JMeter记录所有的电脑程序请求。
2、需要下载https安全证书。
3、激活安全证书,双击点击安全证书,一直确定安装就可。
4、浏览器中,代理的切换(安装了上面的插件)和证书的切换
代理的切换:
证书的切换:
设置 隐私与安全 安全 管理证书 受信任的根证书颁发机构 导入上面的证书即可