天天看点

软件测试 | 如何运行JMeter

要启动JMeter,在Windows下运行jmeter.bat,或者在UNIIX下运行文件jmeter,这两个文件都可以在bin目录下找到。在一个很短的等待之后,JMeter的图形用户界面就会出现。在bin目录中,还有其他几个测试人员可能会用到的脚本。

Windows脚本文件(.cmd要求Windows2000及其后续版本)。

  • jmeter.bat:运行JMeter(默认GUI模式)。
  • jmeter-n.cmd:加载一个JMX文件,并在非GUI模式下运行。
  • jmeter-n-r.cmd:加载一个JMX文件,并在远程费GUI模式下运行。
  • jmeter-t.cmd:加载一个JMX文件,并在GUI模式下运行
  • jmeter-server.cmd:以服务器模式启动JMeter.
  • mirror-server.cmd:在非GUI模式下启动JMeter镜像服务器。
  • shutdown.cmd:关闭一个非GUI实例(优雅的)。
  • stoptest.cmd:停止一个非GUI实例(中断式的)。

通过环境变量JVM_ARGS,我们可以修改在jmeter.bat中定义的JVM设置。例如:set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=propvalue"

jmeter -t test.jmx...

UNIX脚本文件,应该能在绝大多数Linux/UNIX系统下运行。

jmeter:运行JMeter(默认GUI模式)。定义了一些JVM设置,但并不是对所有JVM都生效。

jmeter-server:以服务器模式启动JMeter(通过合适的参数来调用jmeter脚本)

jmeter.sh:没有指定JVM选项的非常基础的jmeter脚本

mirror-server.sh:在非GUI模式下启动JMeter镜像服务器。

shutdowm.sh:关闭一个非GUI实例(优雅的)。

stoptest.sh:停止一个非GUI实例(中断式的)。

如果当前使用的JVM不支持某些JVM选项,那么测试人员就有必要修改jmeter shell 脚本。另外用户可以使用JVM_ARGS环境变量来修改或者添加JVM选项,例如:

JVM_ARGS="Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]

就会覆盖脚本中的堆设置。

1.JMeter的Classpath

JMeter会通过一下目录中的jar文件加载类。

JMETER_HOME/lib:公用包

JMETER_HOME/lib/ext:包含JMeter元件和补丁。

如果测试人员开发了新的JMeter元件,那么需要将对应jar包放到JMeter的lib/ext目录下。JMeter会自动加载这些jar包中的JMeter元件。

公用支持的jar包,应该被放在lib目录下。如果测试人员不想将JMeter扩展包放在lib/ext目录下,那么就需要jmeter.properties文件中定义属性search_paths。不要在lib/ext目录中放置公用包,它应该只供JMeter元件使用。

其他jar包(JDBS、JMS实现包,以及任何其他支持包)都应该被放置在lib目录,而非lib/ext目录下。

测试人员还可以加载房子啊$JAVA_HOME/jre/lib/ext目录中的公用包,或者在jmeter.properties文件中定义user.classpath属性。

需要注意的是,设置环境变量CLASSPATH对JMeter不起作用。这时因为JMeter是以“java-jar”方式启动,而该Java命令会默默地忽略CLASSPATH变量,而且使用-jar可以携带-classpath/cp选项(这对所有Java程序都是一样的,并非只针对JMeter)。

2.使用代理服务器

如果测试对象隐藏在防火墙/代理服务器之后,那么测试人员需要向JMeter提供防火墙/代理服务器的主机名和端口号。用户可以通过命令行来运行jmeter.bat/jmeter文件 ,并携带如下参数,以达到提供主机名和端口号的目的。

  • -H[代理服务器主机名或者IP地址]
  • -P[代理服务器端口]
  • -N[不使用代理的主机](例如*.apache.org|localhost)
  • -u[代理验证的用户名-如果要求的话]
  • -a[代理验证的密码-如果要求的话]
  • 例如:jmeter-H my.proxy.server -P 8000 -u username -a password -N localhost.

3.非GUI模式(命令行模式)

对于非交互测试,测试人员可以选择不使用GUI来运行JMeter。要达到这一目的,可以使用如下命令选项:

  • -n指明JMeter以非GUI模式运行
  • -t[JMX文件(其中包含测试计划)的名称]
  • -I [JTL 文件(存放测试采样数据)的名称]
  • -j [JMeter 日志文件的名称]
  • -r 在JMeter属性“remote_hosts”中定义的服务上远程运行测试脚本
  • -R [远程服务器列表]在指定的远程服务器上运行测试
  • 这些JMeter脚本同样允许测试人员指明可选的防火墙/代理服务器的信息:
  • -H[代理服务器主机名或者IP地址]
  • -P[代理服务器端口号]

搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核