1,  jmeter 录制脚本需要设置ie 代理服务器:设置完成后,关闭浏览器,重新打开就生效了。

11.png

2,  jmeter 录制请求

image.png

工作台--http代理服务器,中的“目标控制器”,如果选择在线程组中,录制的脚本就会显示在线程组里。 

 22.png

3,使用模板录制:

33.png



4,模板中文化后,看的更清楚:image.png



5,命令执行jmeter脚本:

建一个jmetercmd.bat,输入命令行

jmeter的安装目录 -n -t “jmx脚本路径”

例如:D:\apache-jmeter-3.2\bin -n -t D:\apache-jmeter-3.2\bin\templates\zgl.jmx



6,jmeter中常用组件介绍。(必须有线程组和http请求。之后可以加http cookie管理器,涉及防盗需要加http信息头管理器。增强脚本加关联、检查点、集合点)

1)HTTP cookie 管理器:页面间靠cookie传参时,需要这个元件。 

2)HTTP信息头管理:涉及加密或是防盗信息时,在http信息头管理器中管理。 

3)HTTP默认请求值:在每个http请求中都一样的参数提取出来放在这里统一管理,在http请求中可以不用填写了,使用默认值。

3)正则表达式提取器:关联。 

4)固定定时器:思考时间

5)响应断言:检查点。

6)集合点:synchronizing time 。 

7)逻辑控制器:有很多种,仅一次控制器表示在循环场景中只执行一次。例如唯一登录。 还有循环控制器或是if控制器,根据执行场景情况使用。 

8)csv data set config :设置参数化。 多参数用逗号分开。

9)查看结果树:显示结果信息的。

10)debug sampler :打印信息。

image.png



7,http默认请求值。

image.png




8,debug sampler 打印信息。

image.png

也可以打印:

image.png








10,jmeter跨线程组间传递sessonid值。

通过以下四步的设置,在两个线程组间,可以传递sessionid的值。

1)首先查看结果树中,响应头包含了返回值的sessionid。

image.png


2)添加正则表达式提取器。

image.png


3)添加beanshell postprocessor:设置全局函数。${__setProperty(newJSESSIONID,${JSESSIONID},)};

image.png


4)在线程组2中通过函数获取。 ${__P(newJSESSIONID,)}

image.png




jmeter打印调试语句:

6,用debug sampler 进行调试:

image.png



jmeter参数化:

7,参数化时,调整取值顺序

image.png



8,参数化txt文档中包含多列记录。 

image.png


jmeter正则表达式,提取多个值。

9,正则表达式提取器: 0表示随机,-1表示所有值,1表示第一个,2表示第二个值。 image.png



定时器:集合点和思考时间

10.集合点:指定集合50并发用户,在5ms内集合完成,如果没有集合的算是超时。可以放在http请求下,也可以放在线程组下,作用范围不一样。 

image.png




stepping thread group:

image.png

This group will start 100 threads - 设置单台负载机,线程组启动的线程总数为100个

First,wait for n seconds - 启动第一个线程之前,需要等待0秒,也就是不等待直接启动线程

Then start 0 threads - 设置最开始启动0个线程

Next,add 10 threads every 30 threads,using ramp-up 5 seconds - 每隔30秒,然后在5秒内启动10个线程

Then hold load for 60 seconds - 单台负载机启动的线程总数达到100个,持续运行60秒

Finally,stop 5 threads every 1 seconds - 最后每隔1秒,停止5个线程数








jmeter常用函数:

—Random 随机函数。 

—randomstring 随机字符串函数。 

—threadnum当前线程号。并发用户的编号 。 

—time将当前时间格式化为你设定的格式。 

—UUID:通用唯一识别码。 

—counter该函数生成并发时用户的迭代次数 。 

image.png






11,jmeter性能监控

jmeter也可以像loadrunner一样监控服务器CPU、内存等性能参数,不过需要安装一些插件

1)下载需要的jmeter插件

   

       如图上面两个是jmeter插件,可以再下面的链接中下载:

https://jmeter-plugins.org/downloads/old

 第三个是放在服务器中的,可在下面的度盘中下载:

serverAgent下载

 

2)解压压缩包

参见包里面的说明文档:”Just copy the JAR file into JMeter's lib/ext directory.Then you can start JMeter and add additional items to your Test Plan.Java version 1.6 and JMeter 2.4 are required.”   

所以我们需要找到解压包中的JAR文件,并拷贝到jmeterlib/ext目录下,这里下载的1.4版本的插件需要在jdk1.6jmeter2.4以上的版本使用

 

   如上图,把的两个jar包放到JMeter的 lib/ext目录下,重启jmeter,出现如下新增的组件,则说明启动成功

 

      

 

 3)常用组件简要介绍:

  1. jp@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表) 
    聚合报告里,Throughput是按请求个数来展示的,比如说1.9/sec,就是每s发送1.9个请求;而这里的展示是按字节Bytes来展示的图表

  2. jp@gc - Composite Graph: 混合图表 
    在它的Graphs里面可以设置多少个图表一起展示,它可以同时展示多个图表

  3. jp@gc - Hits per Second每秒点击量

  4. jp@gc - PerfMon Metrics Collector服务器性能监测控件,包括CPUMemoryNetworkI/O等等

  5. jp@gc - Reponse Latencies Over Time记录客户端发送请求完成后,服务器端返回请求之前这段时间

  6. jp@gc - Reponse Times Distribution 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数

  7. jp@gc - Transactions per Second 每秒事务数,服务器每秒处理的事务数

 4)将监控服务器的serverAgent拷贝到需监测的服务器

       

       windows服务器中启动startAgent.bat,Linux服务器启动startAgent.sh即可

       在linux中启动 ./startAgent.sh 是,可能会提示:“-bash: ./startAgent.sh: 权限不够”,那么我们需要执行命令:

       chmod +x startAgent.sh

       

 

 5)准备测试脚本

        这里用到一个登陆测试系统的简单脚本做压力测试demo

          

 5.1)在选项---plugins manager 中,执行apply changes and restart jmeter。开始下载插件。 

image.png


  6)配置监控服务器性能参数的组件

        主要用到这个组件:jp@gc - PerfMon Metrics Collector,配置如下:

如果执行时间长或是为了方便查看测试结果,需要多添加几个jp@gc - PerfMon Metrics Collector组件,每个组件加一个cpu 或是一个memory 。 

       

 

    7)设置负载,执行脚本,查看监控结果

         

 

注意:

1)如果提示报错:

ERROR: java.io.IOException: Agent is unreachable via TCP的错误。 说明4444端口被占用了。 执行下面的语句:

./startAgent.sh --tcp-port 3401 --udp-port 3402 --sysinfo  将端口更改成3401 和 3402 。 



     8)图表可导出成csv文件,配合聚合报告,分析服务器性能状况