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

11.png

如果录制完了之后,回放时报错, 可以尝试清除浏览器缓存后,重新录制脚本。

 

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

 22.png

 

过滤的设置:

.*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2).*  

 

2  jmeter 录制请求

image.png

 

 

3,实现常用场景:登录一次,循环查询,退出一次。 

blob.png

这样聚合报告中就可以看到如下:

blob.png

 

 

 

 

4,使用模板录制:

33.png



 

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

 

 

6,命令执行jmeter脚本:

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

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

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

 

 

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

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

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

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

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

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

5)响应断言:检查点。

6)集合点:synchronizing time  

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

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

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

10debug sampler :打印信息。

image.png

 

 

8http默认请求值。

image.png

 

 

 

 

9debug sampler 打印信息。

image.png

也可以打印:

image.png

 

 

 

 

 

 

 

10jmeter跨线程组间传递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

 

csv格式的样式:

blob.png

 

查询里面做参数化时,将csv格式放在查询里面。 

blob.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

 

 

 

 

 

11jmeter性能监控(如果监控不到,换成jmeter3.1版本)

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

1下载需要的jmeter插件

   https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118212615904-1513748799.png

       如图上面两个是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以上的版本使用

https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118212900826-1840824490.png 

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

 

      https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118212928670-1682719125.png

 

 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拷贝到需监测的服务器

       https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118213556935-1701881652.png

       windows服务器中启动startAgent.batLinux服务器启动startAgent.sh即可

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

       chmod +x startAgent.sh

       https://images2015.cnblogs.com/blog/1041764/201612/1041764-20161209142144616-1965481400.png

 

 5)准备测试脚本

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

         https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118213924795-1703095846.png 

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

image.png

 

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

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

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

       https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118214234217-683638294.png

 

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

         https://images2015.cnblogs.com/blog/1041764/201611/1041764-20161118214723779-264615096.png

 

注意:

1)如果提示报错:

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

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

 

 

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

blob.png

 

 

 

 

13,不写登录接口,可以通过设置cookie,直接访问其他接口。

blob.png

 

通过浏览器抓包,得到cookie值,如果cookie中包含多个值,需要在上面图中设置多个参数值。 

blob.png

 

 

 

14,不写登录接口,设置token值,也可以访问其他接口。

 先用F12,在浏览器中登录一下,得到一个未失效的token值。然后设置到http请求头中就可以了。 

blob.png

blob.png

将登录后得到的token值,替换http信息头管理的authorization值。 

 

 

 

14jmeter连接oracle数据库:

首先引入oraclejar包:

blob.png

添加线程组,然后添加jdbc connection configuration  

blob.png

 

blob.png