jmeter是一个开源、轻巧,免费的性能测试工具
随机数,函数助手–_Random(随机数)jmeter导入系统信息:1652
1、不需要写代码的自动化项目
jmeter+ant+jenkins
原理:jnkins驱动ant执行jmeter执行
jmeter +maver+jenkins
原理:jenkins驱动maven执行,maven驱动jmeter执行
2、需要写代码的自动化项目
Java+httpclient+testng
主要引入的是httpclient、httpcore以及testNG三个依赖包:
httpclient是对HTTP协议的基础封装的一套组件,我们测试接口过程中会用到其中的底层网络方法
testNG是一套单元测试框架,为我们提供测试入口和测试组织。
Pthon+repuests+unittest
通过repuests库发送HTTP/HTTPS请求
通过unittest单元测试框架组织和运行形势用例
通过HMLTestRunner生成可视化的html报告
sessionid是服务器保存数据的,时间较长。cookie是客户端保存数据的,时间较短
admin 135492 导入仪盘:1443 jmeter地址: http://url.cn/57I5jGK
4) 录制过滤:选择“Requests Filtering”,在“包含模式”中填入“.+(baidu.com).+”用以过滤非baidu.com的请求
-
同时在“排除模式”中填入“(?i).*.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2|htm|html).”用以过滤js、图片、html等资源文件请求
-
最后点击“启动”按钮启动HTTP代理,如下图所示:
1、ServerAgent是服务端的插件
2、
下载成功后,复制JmeterPlugins-Extras.jar和JmeterPlugins-Standard.jar两个文件,放到jmeter安装文件中的lib/ext中,重启jmeter,即可看到该监视器插件。如下图:
一、资源监控:Perfmon Metrics Collector(性能度量收集器)
测试计划—线程组-- 监控–jp@gc-PerfMon Metrics Collector(CPU,内存Memory,兹盘Disks,网络Network/o)
必须先启动端口4444:
cd C:\a1
startAgent.bat
cpu不超过百分之80就是好的:
内存不超过百分80:
二、响应时间和吞吐量–聚合函数—
1、jp@gc-Transactions per Second (每秒的事务数)
2、jp@gc-Hits per Second (每秒的点击数)
(选择中图形后右键第二个可以保存。)
3、jp@gc-Response Times Over Time:(事务响应时间)
4、jp@ - Transaction Throughput vs Threads 事务吞吐量与线程
CPU Memory(内存)
Disks I/0 (磁盘I/0) Network I/O(网络I/O )
线程组 :
线程数: Ramp-up Period(in seconds) :代表每个请求发生的总时间间隔)
(如果我的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒)
循环次数:
三、网络单位:
在计算机网络或者是网络运营商中,一般,宽带速率的单位用bps(或b/s)表示;bps表示比特每秒即表示每秒钟传输多少位信息,是bit per second的缩写。在实际所说的1M带宽的意思是1Mbps(是兆比特每秒Mbps不是兆字节每秒MBps)。
建议用户记住以下换算公式:
1B=8b 1B/s=8b/s(或1Bps=8bps)
1KB=1024B 1KB/s=1024B/s
1MB=1024KB 1MB/s=1024KB/s
四、即TRT:事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等
五、关联:
后置处理器:——正则表达试—(.+?)(.*)
模板
1
1
1(
2
2
2:表示第二个)
匹配数 1(2也是表示第二个)
正则表达:
具有特殊含义的字符:
( ) :括号界定期望获取字符串的匹配模式
. (字符点): 匹配任何单个字符
+:一次或者多次
?:找到匹配的结果后立刻停止查找
\ : 转义字符
[ ] : 匹配符合 [] 内的字符
具有特殊含义的字符:
[0-9] 匹配所有数字字符
[a-z] 匹配所有小写字母字
[^0-9] 匹配所有非数字字
[^a-z] 匹配所有非小写字
^ 匹配字符开头的字符
$ 匹配字符结尾的字符
加入“后置处理器”->“正则表达式提取器”:引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个数,负数表示全部匹配;缺省值为没有匹配到时的取值。示例中用正则表达式匹配出产品id作为后续使用的参数。提取到的参数,调用时用 p r o d u c t i d 1 , {product_id_1}, productid1,{product_id_2}, p r o d u c t i d 3 … … ; 如 果 想 要 得 到 匹 配 出 的 参 数 的 个 数 , 用 {product_id_3}……;如果想要得到匹配出的参数的个数,用 productid3……;如果想要得到匹配出的参数的个数,用{product_id_matchNr};如果想随机选取其中一个,只需将匹配数字设为0,使用 p r o d u c t i d 调 用 即 可 。 可 以 一 次 匹 配 多 组 ; 示 例 中 只 匹 配 了 一 个 , 假 如 正 则 表 达 式 为 n a m e = " c h k P r o d u c t I d s " i d = " c h k ( . + ? ) " v a l u e = " ( . + ? ) " , 就 会 有 两 组 参 数 ; 想 获 得 匹 配 到 的 组 个 数 用 {product_id}调用即可。可以一次匹配多组;示例中只匹配了一个,假如正则表达式为name="chkProductIds" id="chk(.+?)" value="(.+?)",就会有两组参数;想获得匹配到的组个数用 productid调用即可。可以一次匹配多组;示例中只匹配了一个,假如正则表达式为name="chkProductIds"id="chk(.+?)"value="(.+?)",就会有两组参数;想获得匹配到的组个数用{product_id_g};模板针对的是匹配到的字符串再做组的区分,比如希望${product_id}取出的是第二组参数的值,用 2 2 2。
六、参数化:
1:登录认证信息
2:一些和时间相关的,违反时间约束的
3;一些受其他字段约束
配置元件----CSV Data Set Config (配置元件里的第一个)
1,先在文本txt里写入变量名和值,在CSV Data Set Config 里加入地址和文本名(变量名)。
2,调用时${变量名}
七、断言:(检查点:)
断言—添加响应断言:
1包括:返回结果包括你指定的内容。
2匹配:根据指定内容进行匹配。
3Epuals:返回结果与你指定结果一致。
4Substring:返回结果是指定结果的字符串。
5否:不进行匹配。
二、Size Assertion(返回值大小断言)
三、断言持续时间(超出时间断言)
6。配置元件—事务控制器(什么都不勾就是计算采样器的时间而不会计计算器时间,就是忽略时间)
1)generate parent sample 生成父样本(勾第一个就是所有在事务控制器下的采样器都会在它下面显示,没什么用)
2)lnclude duration oftimer and pre-post processors in generated sample
(勾第二个在它下面的所有采样器,事务会计算加上计时器的时间)
(在生成的样本中包括计时器和前置处理器的持续时间 )
思考时间:
计时器:集合点:Synchronizing Timer(配置元件里倒数第四个)
Numder of Simulated Users to Group by:10(第一框代表10个用户)
Timeoutin milliseconds:1000(第二个框代表1000毫秒,集合之后等待1秒钟,10个用户同时释放)
四、在bin目录下—选择jmeter.properties 打开查找框输入以下就可以修改成xmL格式,默认格式scv
xmL格式比较消耗资源
jmeter.save.saveservice.output_format
八、监视器
1聚合报告
Summary Report
? Label:取样器名称
? Samples:运行时得到的取样器响应结果个数
? Min:所有取样器结果的响应时间最小值
? Max:所有取样器结果的响应时间平均值
? Std.Dev.:所有取样器结果的响应时间标准差
? Error%:出错的取样器结果占所有取样器结果的比例
? Throughput:每秒钟响应的取样器结果个数
? KB/sec:每分钟响应的数据流量
? Avg.Bytes:所有取样器返回 http response data 字节数的平均值
九、Jmeter性能最佳实践
1、使用最新版的Jmeter
2、使用命令行模式运行测试
3、配置合适的Java虚拟机内存大小
4、尽量使用CSV格式输出结果
5、合理的使用Post-Processor和Assertion
6、Regular Expression Extractor注意作用域的合理设置
7、尽量避免使用XPath Extractor
8、尽量少的使用Listener并注意作用域
12、负载生成器:联机负载 在bin目录下打开------jmeter-server.bat
1、在负载生成器(slaves)启动 jmeter-server;
2、在控制台(master)编辑 jmeter.properties文件。查找remote_hosts= 并根据实际情况添
加slave的IP地址到列表中;
3、在master端启动 Jmeter;
4、开始运行。
十、Jmeter组件执行顺序
测试计划的元素执行是有序的,通过以下方式
1–配置节点
2–前置处理器
3–定时器
4–取样器
5–后置处理器(只在有结果可用情况下执行
6–断言(只在有结果可用情况下执行)
7–监听器(只在有结果可用情况下执行)
十一、逻辑控制器:
1、循环控制器:控制循环的。
2、ForEach控制器是跟配置元件里的用户变量使用的:用户变量
可以输出变量名,生成变量。
3、Critical Section Controller (诸存采样器,提供一块空间来存诸采样器的)
4、一次控制器:在它下面添加采样器的不管你循环多少次都会只是运行一次。
ForEach Controller
foreach控制器与用户定义变量(udv)一起使用。它是一个
当我们添加的每个采样器或控制器执行时,循环控制器的变量
根据要重复的次数一次或多次。
Transaction Controller事务控制器
事务控制器生成一个额外的示例,用于测量
执行嵌套测试元素所用的总时间。
If Controller:就是if判断变量是否为True
if控制器允许用户控制下面的测试元素
孩子们)是否逃跑。
十二、资源监控:
可以右击图表,选择保存图片。
监听每秒点击数:在监听器中添加jp@gc - Hits per Second
监听吞吐率即每秒的事务数:在监听器中添加jp@gc - Transactions per Second
5、做好性能测试需要掌握的知识:
掌握一门编程语言
掌握计算机原理和操作系统知识
良好的网络基础
掌握数据库知识
中间件(apache,tomcat)
常用抓包工具
性能测试工具
配置元件------http默认管理器
选择就会全部的http的默认
查看电脑端口号命令:netstat -na
录制过滤:
1.用Jmeter.bat打开录制(否则不能录制)
4) 选择“Requests Filtering”,在“包含模式”中填入 .+(baidu.com).+ 用以过滤非baidu.com的请求
-
同时在“排除模式”中填入 (?i).*.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2|htm|html). 用以过滤js、图片、html等资源文件请求
-
最后点击“启动”按钮启动HTTP代理,如下图所示:
外网访问地址:http://cj405.oicp.net:8889/icp
账号:rjyz123 密码:123456
用账号:admin1 密码:admin1 这个账号
你说的:yw.fjyrdl.com/Login.aspx
账号36001 密码:
wy123456 指标:页面间跳转时间≤3秒,并发20
地址:www.gyrjlc.com
会员名称:VIP190816
账号密码:WX29dtwhdt
此账号可用于您在PC端登陆使用。
聚合报告:
我用百度翻译了一下,大致意思如下:
1、Label - 请求对应的name属性值。
2、 Samples - 具有相同标号的样本数,总的发出请求数。
3、Average - 请求的平均响应时间。
4、Median - 50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值。
5、90% Line - 90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值。
6、95% Line - 95%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第95%的值。
7、99% Line - 99%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第99%的值。
8、Min - 最小响应时间。
9、Max - 最大响应时间。
10、Error % - 本次测试中,有错误请求的百分比。
11、Throughput - 吞吐量是以每秒/分钟/小时的请求量来度量的。这里表示每秒完成的请求数。
12、Received KB/sec - 收到的千字节每秒的吞吐量测试。
13、Sent KB/sec - 发送的千字节每秒的吞吐量测试。
https在传输过程是加密的,接收端需要证书才能知道反回的内容https在传输过程是加密的,接收端需要证书才能知道反回的内容
问题:
1、什么业务、什么数据配置、什么架构
查看数据库,进程,查看日志,排查问题
查看后端服务器日志:
那就问你了呀 你们公司日志放那台服务器哪个目录
你可以在现实中用你提供的参数,手动触发一遍那个接口的请求,看一下响应是否正常。
如果正常,说明jmeter某些地方设置的不对(具体哪里不对需要找大神或开发组的成员来看看)
一、确认服务器上的以下服务为开启状态:
1、Remote procedure Call (RPC)
2、Remote procedure Call (RPC) Locator
3、Remote Registry
4、Workstation
.新增用户:
--普通用户
create user "user" with password 'user'
--管理员用户
create user "admin" with password 'admin' with all privileges
打开服务器:
influxd -config influxdb.conf
create user "pcbank"with password “pcbank”
1、事务吞吐量时间曲线(TPS):展示每秒处理的事务数随时间变化情况,类似于JMeter Plugins在UI上的jp@gc - Transactions per Second
2、每秒点击数曲线:类似于JMeter Plugins在UI上的jp@gc - Hits per Second
3、响应时间变化曲线: 展示平均响应时间随时间变化情况,类似于JMeter Plugins在UI上的jp@gc - Response Times Over Time
4、数据吞吐量时间曲线:展示每秒数据吞吐量随时间变化的情况,类似于JMeter Plugins在UI上的jp@gc - Bytes Throughput Over Time
五、生成HTML报告:
E:>cd E:\apache-jmeter-3.1\bin
E:\apache-jmeter-3.1\bin>jmeter -n -t E:\apache-jmeter-3.1\bin\aa.jmx -l result.jtl -e -o E:\apache-jmeter-3.1\bin\aa
E:\apache-jmeter-3.1\bin>jmeter -n -t (需要生成路径目录) -l result.jtl -e -o (生成保存的路径)
jmeter -n -t E:\apache-jmeter-3.1\bin\aa.jmx -l result.jtl -e -o E:\apache-jmeter-3.1\bin\w
可视化地址:https://www.cnblogs.com/yyhh/p/5990228.html
2.Jmeter生成htmL报告
a. 在压力测试结束时报告
jmeter -n -t E:\apache-jmeter-3.1\bin\aa.jmx -l testLogFile -e -o E:\ddQQ
E:\ddQQ这个文件夹必须不存在
之前考虑过每次执行命令都要先去目录下清空报告文件夹和jtl,还要敲命令,很烦,后来想了一个方法,那就是写一个bat,每次执行bat都自动去清空之前的报告,然后执行命令
命令如下:
del /s /Q D:\apache-jmeter-3.2\bin\result.jtl 删除result.jtl文件
rd /s /Q D:\apache-jmeter-3.2\bin\HttpReport 删除HttpReport文件夹
md D:\apache-jmeter-3.2\bin\HttpReport 重建HttpReport文件夹
专业删除:
del \s \Q E:\apache-jmeter-3.1\bin\h.jtl
生成html:
jmeter -n -t E:\apache-jmeter-3.1\bin\j.jmx -l h.jtl -e -o E:\apache-jmeter-3.1\bin\M3
函数助手:(函数分类)
_counter():计数器
_random():随机数函数 (包含左右临界值)
_time():获取当前时间 的 函数
时间格式:yyyy/MM/dd HH:mm:ss (年/月/ 时:分:秒)
_CSVRead():和 CSV Data Set Config 类似可以 读取CSV文件数据
_setPropert():属性设置
_property():属性获取
[分享]jmeter性能测试你必须掌握的监听器
jmeter的监听器是用来动态观察性能数据的必备插件
http://url.cn/5mF8tLW
来自: 微信
[分享]性能测试系列
http://url.cn/5HL25jw
来自: 微信
查看jmeter在数据库运行数据
select * from jmeter limit 10