lable: sampler的名称
Samples: 一共发出去多少请求,例如10个用户,循环10次,则是 100
Average: 平均响应时间
Median: 中位数,也就是 50% 用户的响应时间
90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
95% Line : 95% 用户的响应不会超过该时间
99% Line : 99% 用户的响应不会超过该时间
min : 最小响应时间
max : 最大响应时间
Error%:错误的请求的数量/请求的总数
Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps
KB/Sec: 每秒接收数据量
第2集 Jmeter实战压测结果之响应断言
简介: Jmeter实战之压测结果响应断言
什么是断言assert
指期望用户指定的条件满足,它是当用户定义的约束条件不满足时触发异常
简单说:**判断程序结果是否符合预期 **
什么时候应该用断言
多数情况都可以,但是推荐使用较为简单的断言,比如响应断言
复杂断言会消耗压测机器的性能
增加断言
步骤: 线程组 -> 添加 -> 断言 -> 响应断言
测试字段(选择哪些字段进行断言)
**响应文本 Text response: **响应服务器返回的文本内容
响应代码 Response Code: 断言Http 响应码是否符合预期,比如 200
响应消息 Response Message : 验证响应消息是否按预期显示
响应标头 Response Headers : 断言查看特定的 HTTP 标头是否存在
文档(文本)Document (text): 基本不用,高负载可能会占用大量内存导致OOM
URL样例 URL Sampled : 针对请求的 URL 使用以确保它符合预期
模式匹配的规则
包括 Contains: 响应内容【包含】需要匹配,支持正则表达式。
匹配 Matches: 响应内容要【完全匹配】需要匹配代表响应成功,大小写不敏感,支持正则表达式。
相等 Equals: 响应内容要【完全等于】需要匹配代表响应成功,大小写敏感,内容是字符串
字符串Substring: 响应内容【包含需要匹配】的内容才代表响应成功,大小写敏感,内容是字符串
不相等 Not: 取反操作,不相等
OR: 应用 OR 组合中的每个断言,将多个断言模式进行OR连接
案例实战
http响应码断言
响应文本断言
第3集 高并发业务下Jmeter压测之持续时间断言
简介: 高并发业务下Jmeter压测之持续时间断言
什么是持续时间断言Duration to assert
用于判断服务器的响应时间,作用对象是服务器
Duration in milliseconds:响应时间设置(单位毫秒),如果响应时间大于设置的响应时间,断言失败,否则成功
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
解决方式
可以使用自定义变量,在一处定义四处使用,改的时候只要改一次即可
案例实战
线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
引用方式${XXX},在接口中变量中使用
看结果树
第2集 Jmeter性能测试之CSV多个可变参数压测实战
**简介:Jmeter性能测试之CSV多个可变参数压测实战 **
需求
业务开发里面参数一般不是固定方式,而是采用可变参数进行压测
比如压测商品详情,查看id从1~100 的商品详情
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
解决方案 CSV可变参数
线程组—>添加—>配置原件—>CSV Data Set Config
提前准备好一批id, 直接使用jmeter压测
CSV参数读取配置
请求应用
简介: 互联网公司标准压测流程和压测脚本JMX讲解
互联网公司常规压测流程
多环境区分
本地开发环境生成脚本,上传压测机器
内网环境,非GUI下压测
停止其他无关资源进程
压测机和被压测机器隔离
避免资源争夺:内存、CPU、磁盘IO、网络IO
Jmeter执行压测核心是JMX脚本
打开方式sublime,或者xml编辑器
常规修改项
请求地址修改
参数化文件路径修改
第4集 【重点】高并发业务下Jmeter集合点应用实战
简介: 高并发业务下Jmeter集合点应用实战
性能测试
是多用户并发测试,但真正的并发其实是不存在的,用工具模拟并发
前面的测试“线程数”是并发用户数,启动需要时间,不是并发同一时刻访问
常规压测需要模拟全部用户同一时刻访问,比如 秒杀 案例场景
需求:先让全部请求 同时集合在一起,然后再一起访问,实现真正的并发
解决方式 :Jmeter的同步定时器
将多个请求同步并发操作,同步定时器又可称之为“集合点”
将需要做并发的请求集合在一起后再进行请求
注意事项
设置的值不能大于线程组 数量
最好的情况是 【线程组】 可以被 【用户组】整除
超时时间以毫秒为单位:指定人数 多少毫秒没集合到算超时
超时时间是0则无限等待,如果是大于0,则未达到集合的【用户组】数量,会在超时后执行
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
第4集 Jmeter压测post方式接口和关联接口场景《上》
简介: Jmeter压测post方式接口和关联查询场景
需求
常规接口需要登录后才可以压测,这个怎么处理
使用接口关联进行压力测试????
案例操作
登录接口压测 post方式
个人信息接口压测 get方式
误区
个人信息接口需要登录才可以访问,为了压测这个接口,则需要先压测登录获取token
访问了A接口,再访问了B接口,那你怎么断定是哪个接口影响了性能?哪个接口QPS多少?
正确方式
第一接口:参数化批量请求接口,获取相关响应,提取数据保存文件,作为下个接口的入参
第二接口:通过参数化,读取第一个接口的文件进行操作
实操
批量参数化操作调用登录接口生成token
post方式提交json数据,参数化时候整行是一个变量
第5集 Jmeter压测post方式接口和关联接口场景《下》
简介: Jmeter压测post方式接口和关联查询场景
存储第一个登录接口结果
BeanShell提取登录结果,写入到本地文件
代码语言:javascript
复制
import org.json.*;
//String responseCode = prev.getResponseCode();
String data = prev.getResponseDataAsString(); //获取响应信息
JSONObject jsonobj = new JSONObject(data); //转json对象
log.info(jsonobj.toString());
int code = jsonobj.getInt("code");
if(code == 0 ){
FileWriter fstream = new FileWriter("/Users/gaotengfei/Desktop/tokens.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(jsonobj.get("data")+"\n");
out.close();
fstream.close();
}else{
}
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get
第2集 Jmeter压测生成多维度图形化HTML测试报告讲解
简介: Jmeter压测生成多维度图形化HTML测试报告讲解
dashboard讲解
Test and Report informations
Source file:jtl文件名
Start Time :压测开始时间
End Time :压测结束时间
Filter for display:过滤器
Lable:sampler采样器名称
APDEX(Application performance Index)
apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意
T(Toleration threshold):可接受阀值
F(Frustration threshold):失败阀值
Requests Summary
OK:成功率
KO:失败率
Statistics 统计数据
lable:sampler采样器名称
samples:请求总数,并发数*循环次数
KO:失败次数
Error%:失败率
Average:平均响应时间
Min:最小响应时间
Max:最大响应时间
90th pct: 90%的用户响应时间不会超过这个值
95th pct: 95%的用户响应时间不会超过这个值
99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)
throughtput:Request per Second吞吐量 qps
received:每秒从服务器接收的数据量
send:每秒发送的数据量
charts讲解
Over Time(随着时间的变化)
Response Times Over Time:响应时间变化趋势
Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分
Active Threads Over Time:并发用户数趋势
Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
Latencies Over Time:平均响应延时趋势
Connect Time Over Time :连接耗时趋势
Throughput
Hits Per Second (excluding embedded resources):每秒点击次数
Codes Per Second (excluding embedded resources):每秒状态码数量
Transactions Per Second:即TPS,每秒事务数
Response Time Vs Request:响应时间和请求数对比
Latency Vs Request:延迟时间和请求数对比
Response Times
Response Time Percentiles:响应时间百分比
Response Time Overview:响应时间概述
Time Vs Threads:活跃线程数和响应时间
Response Time Distribution:响应时间分布图
第3集 异常场景下的多维度图形化HTML测试报告
简介: 异常场景下的多维度图形化HTML测试报告
第七章 【高级】 linux下非GUI压测和性能优化案例
第1集 linux下非GUI压测实战需求和环境说明
简介:linux下非GUI压测实战需求和环境说明
前言
前面内容适合Jmeter快速入门,本章内容是高级篇幅,需要一定的技术栈
掌握:linux、jvm
高级测试工程师 就是 测试开发工程师,需要达到中高级后端开发水平
知道性能瓶颈所在,才可以做性能优化,性能瓶颈存在哪里;
需求
常规图形下压测会影响相关性能指标
实际工作里面压测会在linux压测,才更加准确
性能测试后,会做部分轻量级性能优化提升吞吐量
相关准备
两个接口的jmx脚本(集合点500并发,持续2分钟)
linux服务器CentOS 7.8
安装jdk8、文件上传下载工具 (看【环境安装视频】)
mac: filezilla、item2
win: winscp、putty
后端接口说明,端口 8080
接口介绍 接口路径 参数和备注 method 商品列表 /api/v1/product/list 不用参数 get 登录接口 /api/v1/user/login post 用户信息 /api/v1/user/info 需要登录,http的header里面加入token字段 get 秒杀接口 /api/v1/product/second_kill 不用参数,用于测试接口耗时情况 get 商品详情 /api/v1/product/detail 用于可变参数压测,参数: id 和 title get