干货分享 ▏Jmeter场景运行

JMeter的场景运行方式分为两种:

◆ GUI(视窗运行, 即我们可以看到运行界面)方式;
◆ 非GUI方式运行(命令窗口) , 在Windows中我们可以在命令窗口运行。

JMeter的场景运行基于运行架构分为两种:
◆ 本地化运行, 即单机运行;
◆ 远程运行。

不管是GUI方式还是非GUI方式都支持本地运行与远程运行。下面我们以Windows系统下的JMeter为例讲解场景运行。

本地运行

本地运行即只运行本地一台JMeter机器, 所有的请求从一台机器发出,下图是GUI方式本地运行,我们启动了5个线程。
干货分享 ▏Jmeter场景运行
在运行前快捷菜单栏是这样的干货分享 ▏Jmeter场景运行

本地运行点击干货分享 ▏Jmeter场景运行

开始运行后菜单栏是干货分享 ▏Jmeter场景运行

同时我们可以看到干货分享 ▏Jmeter场景运行

0代表没有线程异常,一个0代表当前运行(线程活动状态)的线程数是0个,后一
后面绿色框代表线程运行正常,需要停止时点击。
干货分享 ▏Jmeter场景运行

远程运行

远程运行是用一台JMeter控制机(Master) 控制远程的多台机器(Slave) 来产生负载。

JMeter控制机与远程负载机的通信是通过RMI方式来完成的, 在负载机上运行Agent程序(启动命令是%JAVA HOME%\bin jmeter-server bat) ,在JMeter控制机(Master) 上单击运行远程负载机。干货分享 ▏Jmeter场景运行
大家可以在%JMETER HOME%\bin目录下找到Apache JMeter.jar与jmeter-server.bat两个文件。我们通过运行jmeter-server.bat来启动Agent, Agent程序是由Apache JMeter.jar中的程序来实现的。

旧版本的JMeter在进行远程通信时要指定端口, 当前我们用的2.11版本已经不需要指定端口了, JMeter控制机会自动探测, 只要先启动远程负载机上的Agent, JMeter控制机开始运行测试计划时就会自己连接。

不过在连接之前先得告诉JMeter控制机, 让它尝试去连接哪些机器。这个告诉动作是通过配置文件来完成的。打开jmeter.properties文件, 搜索“remote hosts”关键字, 可以找到如下内容:

#Remote Hosts-comma delimited多个IP用逗号隔开remote_hosts=127.0.0.1, 192.168.1. 100#remote hosts=localhost:1099, localhost :2010#RMI port to be used by the server(must start rmiregistry with same port)#server_port= 1099

我们在“remote hosts=”后加上远程JMeter负载机的IP即可(推荐用IP而非机器名) ,多个机器之间的IP以逗号分隔(修改了jmeter.properties文件需要重启JMeter才可以生效) 。

上面表格中我们把127.0.0.1与192.168.168.100两台机器都作为了远程负载机,虽然127.0.0.1就是本地JMeter机器(也是控制机) , 但是我们在运行远程场景时还是会把本机机器当作远程机(除非本地机仅做控制器, 不运行脚本) 。

在本地也需要启动Agent(双击%JMETER HOME%\bin\jmeter-server.bat运行) 。 此Agent被用来连接的端口是7649,192.168.45.1是本机IP,在配置时填写的是127.0.0.1,这并不矛盾。干货分享 ▏Jmeter场景运行

远程运行点击

干货分享 ▏Jmeter场景运行
开始执行测试计划,正常运行时快捷菜单显示器干货分享 ▏Jmeter场景运行
如果要停止当前计划,点击或%都可以,前者是执行完当前迭代停止(比如当前脚本有5个请求,在第2个请求时收到停止命令,那么将继续执行完第5个请求后再停止),后者是立刻终止(立刻中断线程,请求是否运行完成不考虑)。

远程运行与结束时我们在命令窗口可以看到图上所示内容, Starting the test on host…表示开始执行, Finished the test on host…表示执行完成。

最后:

欢迎大家关注公众号:程序员一凡,获取软件测试大厂面试资料。