JMeter的录制功能

jmeter(macOs)下安装证书可以参考这个:

录制脚本步骤:

1.创建https test script recorder:

jmeter脚本转成python脚本_jmeter脚本转成python脚本

2.添加线程组

目的是录制器录制出来的http请求全部都存放在线程组里

jmeter脚本转成python脚本_压力测试_02

3.添加录制控制器

jmeter脚本转成python脚本_jmeter脚本转成python脚本_03

4.配置

jmeter脚本转成python脚本_响应时间_04

  • Target Controller:这里指定录制出的脚本要放到哪里去。如果你想把不同的脚本放到不同的线程组中去,在录制的时候就可以拆分开。
  • Grouping:分组

grouping的设置有如下几种:

jmeter脚本转成python脚本_jmeter脚本转成python脚本_05

  • 第一个选项是Do not group samples,也就是不分组,就没有事务的概念了,每个请求都会单独统计TPS和响应时间信息
  • 第二个选项是Add separators between groups,在组间添加分隔,作为就是为了好看
  • jmeter脚本转成python脚本_压测_06

  • 第三个选项是Put each group in a new controller,每个组放一个新的控制器,作用也就是为了好看
  • 第四个选项是Put each group in a new transaction controller,将每个组放一个新的事务控制器中,Transaction Controller 和 Simple Controller 的区别就是 Transaction Controller 会做为事务统计脚本执行的时间,而 Simple controller 不会
  • 第五个选项是Store 1st sampler for each group only,只存储每个组的第一个样本,资源也会下载,重定向也会开启

jmeter脚本转成python脚本_压测_07


配置ca证书,点击start开始录制

jmeter脚本转成python脚本_压测_08


prefix:请求名的前缀

create new transaction after requests(ms):一个请求完成之后,如果下一个请求超出这里设置的时间间隔,就会常见一个新的事物

5.添加结果树

校验正否正确

jmeter脚本转成python脚本_响应时间_09

6.添加断言

jmeter脚本转成python脚本_线程组_10


jmeter脚本转成python脚本_响应时间_11


jmeter脚本转成python脚本_线程组_12

7.添加聚合报告

jmeter脚本转成python脚本_响应时间_13

性能脚本

jmeter脚本转成python脚本_线程组_14


TCP 脚本和 HTTP 脚本最大的区别就是,TCP 脚本中发送和接收的内容完全取决于 Socket server 是怎么处理的,并没有通用的规则

jmeter脚本转成python脚本_jmeter脚本转成python脚本_15

  • Number of Threads(users):指的是用户数(线程数),这个是产生tps,而一个线程产生多少tps,取决于系统的响应时间有多快,所以用tps这个概念来承载系统的负载能力,而不是用这里的线程数
  • Ramp-up Period(in seconds):递增时间,以秒为单位。指的就是上面配置的线程数将在多长时间内会全部递增完;如果配置了100线程,ramp-up配置了10秒,那么就是100/(10s*1000ms)=1线程/100ms;如果配置了10线程,ramp-up配置了1秒,那么就是10/1000=1线程/100ms
  • Loop Count:这个值指的是一个线程中脚本迭代的次数
  • Delay Thread creation until needed:JMeter 所有的线程是一开始就创建完成的,只是递增的时候会按照上面的规则递增。如果选择了这个选项,则不会在一开始创建所有线程,只有在需要时才会创建;如果不选择,在启动场景时,JMeter 会用更多的 CPU 来创建线程,它会影响前面的一些请求的响应时间,因为压力机的 CPU 在做其他事情嘛。如果选择了的话,就会在使用时再创建,CPU 消耗会平均一些,但是这时会有另一个隐患,就是会稍微影响正在跑的线程。这个选项,选择与否,取决于压力机在执行过程中,它能产生多大的影响。如果你的线程数很多,一旦启动,压力机的 CPU 都被消耗在创建线程上了,那就可以考虑选择它,否则,可以不选择。
  • Scheduler Configuration:这里有一句重要的话,If Loop Count is not -1 or Forever, duration will be min(Duration, Loop Count * iteration duration)。举例来说,如果设置了 Loop Count 为 100,而响应时间是 0.1 秒,那么 Loop Count * iteration duration(这个就是响应时间) = 100 * 0.1 = 10秒。即便设置了 Scheduler 的 Duration 为 100 秒,线程仍然会以 10 秒为结束点。
  • 如果没有设置 Scheduler 的 Duration,那么你会看到,在 JMeter 运行到 10 秒时,控制台中会出现如下信息:
2019-11-26 10:39:20,521 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-10

性能报告参数解读

max:最大的请求响应时间
error%:错误率
throughput:吞吐量
received KB/sec:每秒从服务器端接收到的数据量
sent KB/sec:每秒从客户端发送的请求的数量

静默压测

命令格式:jmeter -n -t $jmx_file -l $jlt_file
jmx压测程序脚本文件,压测控制过程记录在jmx文件中
jtl是压测请求相应数据的原始文件