2

我正在使用 jmeter 工具对 N 个用户进行压力测试。

我已经使用 ant 和 jenkins 自动化了测试,我的构建文件被配置为运行一个目标,即 jmeter 脚本。

它工作正常。

现在我正在尝试对詹金斯进行参数化,即尝试在运行时传递用户数“N”有什么办法可以完成吗?请指教。

蚂蚁脚本:

<project basedir=".">
  <property environment="env"/>
  <property name="jmeter-home" location="D:/apache-jmeter-2.7"/>
  <path id="ant.jmeter.classpath">
    <pathelement location="${jmeter-home}/extras/ant-jmeter-1.0.9.jar" />
  </path>
  <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" classpathref="ant.jmeter.classpath" />
  <target name="clean">
    <delete dir="results"/>
    <delete file="jmeter.log"/>
    <mkdir dir="results/jtl"/>
    <mkdir dir="results/html"/>
  </target>
4

2 回答 2

1

请参阅https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build。您可以为您的工作定义一个参数。然后你只需要将它传递给和 -Denv_entry=value (普通的JVM Sswitch,你可以在Jenkins的Ant step的高级设置中找到它),它可以将它传递给jmeter(见这篇文章:http://jmeter. apache.org/usermanual/get-started.html#override

编辑:您根本不在您的 ant 脚本中运行 JMeter。所以一步一步来:

  1. 使用以下命令调用您的 ant 脚本:-DTHREADS=value
  2. Ant 脚本包含<property environment="env"/>正确
  3. 使用您的任务调用 JMeter,并提供如下 JVM 参数:
<jmeter
    jmeterhome="c:\jakarta-jmeter-1.8.1"
    testplan="${basedir}/loadtests/JMeterLoadTest.jmx"
    resultlog="${basedir}/loadtests/JMeterResults.jtl">
  <jvmarg value="-Xincgc"/>
  <jvmarg value="-Xmx128m"/>
  <jvmarg value="-DTHREADS=${env.THREADS}"/>
</jmeter>

然后您将在 JMeter 中拥有一个系统属性。如果您想拥有 JMeter 属性,请改用 -JTHREADS=${env.THREADS} 。

EDIT2:添加:

<taskdef name="jvmarg" classname="org.programmerplanet.ant.taskdefs.jmeter.Arg" classpathref="ant.jmeter.classpath"/>

然后应该工作。

于 2012-11-19T09:50:57.677 回答
0

我认为,如果您不尝试运行 Jenkins 作业 N 次,而是将此 N 参数传递到您的 ant 脚本中,这将是一种更好的方法(请参阅有关如何将参数从 jenkins 传递给 ant 的其他答案)并处理启动测试并行 N 次。

于 2012-11-20T10:35:58.867 回答