性能测试06:性能测试工具JMeter

JMeter 4.0风格默认为黑色背景:Options选项下的 Look and Feel 还有多种风格可以选

 

JMeter的组成:

测试计划  -> (线程组, 它还包括 断言,定时器,监听器,配置元件, 后置处理器,前置处理器,逻辑控制器,Sampler)

Jmeter实现多并发

线程组:负载发生器,用多线程或者多进程的方式来模拟用户的使用行为。JMeter是以线程的方式来进行模拟用户的并发访问的。

 

JMeter实现逻辑分支控制:

逻辑控制器:用来控制测试脚本的逻辑判断,也可以理解为如何控制脚本的运行。例如,如果控制器,就是当满足什么样的条件后执行哪一步操作。

 

JMeter实现配置管理:

配置元件:用来提供一些配置相关的信息,如HTTP请求头、cookie管理,提供参数化数据。还可以进行用户自定义 变量等配置,用来定义常量等。

 

JMeter实现关联:

后置处理器:用于对Sampler发出的请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据。
System.out.println("${title}");   - 如果使用Bean Shell去提取字符串的话,那么一定记得加上引号

 

JMeter实现数据预判

断言:断言用于检查测试中得到的相应数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。

Jmeter断言失败的时候会打印断言,成功的话不会打印断言。 一般断言用户功能测试验证。响应断言基本能满足大部分需求。

 

JMeter监控数据可视化

监听器:这个监听器不是用来监听系统资源的组件。它是用来对测试结果数据进行处理和可视化的一系列组件。例如:查看结果树、聚合报告。

 

JMeter函数助手例子:注意对于结果是字符串的函数,必须用引号括起来

随机数(__Ramdom):           例如 System.out.println(${__Random(0,99,rad)});

参数化助手(__CSVRead)  :注意文件列号从0开始, 循环的时候,一个线程会读取银行,如果某行已经被一个线程读取了,那么当前现成不会去读取它,但是如果线程数大于csv中的文件行数,那么多余的线程会循环读取csv中的行。

                                  例如: System.out.println("${__CSVRead(E:\Guweiping\software\apache-jmeter-2.10\myJmeter\csvData.csv,0)}");

计数器(__counter):            例如 System.out.println("False = " + ${__counter(False,counter)});

唯一数(__UUID):               例如 System.out.println("UUID = " + "${__UUID}");

 

JMeter实现分布式并发:一般在大并发量的情况下,一台电脑不至于支撑压力的时候,使用分布式

1) Master(主压力机器)在jmeter.properties中添加remote_hosts,e.g. remote_hosts=127.0.0.1,172.19.248.248:1099

2) Slave(从压力机器)在jmeter.properties中添加server_port, e.g. server_port=1099

3) Slave启动jmeter-server, e.g.  ./jmeter-server  (这里假设Slave机器是Ubutu)

4) 重启Master机器的Jmeter

操作:

(1)   如在windows机器上(Master),进入jmeter bin 目录(E:\Guweiping\software\apache-jmeter-2.10\bin), 编辑jmeter.properties文件, 去掉remote_hosts前面的注释符号#, 改成remote_hosts=127.0.0.1,172.19.248.248:1099       (注意:如果slave是linux 机器,首先在其上使用ifconfig查看其ip地址)

(2)   在Linux机器上(Slave),进入jmeter bin 目录(/opt/apache-jmeter-4.0/bin), 编辑jmeter.properties文件, 去掉server_port前面的注释符号#, 成为server_port=1099

(3)   在Linux机器上(Slave),进入jmeter bin 目录(/opt/apache-jmeter-4.0/bin), 运行 ./jmeter-server 去启动Slave.

(4)   在Master机器上,重启JMeter, 检查菜单Run -> Remote Start,可以看到上面配置的Slave机器ip和port显示出来了 (改示例中是172.19.248.248:1099 )

注意:有时候如果失败,那么检查一下防火墙是否关闭,可能的失败原因:

1) 启动 ./jmeter-server 失败,错误为:

Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

解决方法: 修改jmeter.properites: server.rmi.ssl.disable=true (实际检测结果是,Master和Slave机器上的jmeter.properites中都必须对此项做同一修改)

看到如下信息,表示成功启动了:

root@agu:/opt/apache-jmeter-4.0/bin# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[172.19.248.248:40385](local),objID:[-3a930e1f:16416c9ce6d:-7fff, 4070085255494437772]]]

posted on 2018-06-19 10:36  alicegu  阅读(249)  评论(0编辑  收藏  举报