JMeter中重要的元素就是ThreadGroup, 代表着模拟的用户,threads, loop, ramptime是三个经常要调整的参数,在非图形界面下要修改的话,虽然可以直接jmx, 但是次数多了也是麻烦,于是有了以下方案。
我通常是用ant方式来运行JMeter(Jmeter/extras/下有build.xml),所以我的办法也是通过ant传参
1. 在build.xml中加入参数
<target name="run"> <echo>funcMode = ${funcMode}</echo> <delete file="${testpath}/${test}.html"/> <jmeter jmeterhome="${jmeter.home}" testplan ="${testpath}/${test}.jmx" resultlog="${testpath}/${test}.jtl"> <!-- <jvmarg value="-Xincgc"/> <jvmarg value="-Xmx128m"/> <jvmarg value="-Dproperty=value"/> <jmeterarg value="-qextra.properties"/> --> <!-- Force suitable defaults --> <property name="jmeter.save.saveservice.output_format" value="xml"/> <property name="jmeter.save.saveservice.assertion_results" value="all"/> <property name="jmeter.save.saveservice.bytes" value="true"/> <property name="file_format.testlog" value="${format}"/> <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/> <property name="request.threads" value="${th}"/> <property name="request.threads.loop" value="${loop}"/> <property name="loadtest.rampUp" value="${ramp}"/> </jmeter> </target>
最后三个参数就是将用到的threads, loop, ramp
2. 在jmx中做修改
线程数 ${__P(request.threads)}
ramptime ${__P(loadtest.rampUp)}
loops: ${__P(request.threads.loop)}
3. 在ant运行时加上对应的参数
C:apache-jmeter-2.10extras>ant -f build1.xml -Dtest=mainlg -Dhost=192.168.16.212 -Dport=80 -Dth=10 -Dloop=10 -Dramp =1 -Dconfig=C:apache-jmeter-2.10extrasdatalogin_data.txt
4. 如果不想每次都敲这么长的命令,有一个固定的默认值,也可以给ant运行配置一个默认的参数,可以参考JMeter是如何定义属性"test"的
<!-- Name of test (without .jmx) --> <property name="test" value="Test"/>如果不在命令行中给ant加载test参数,那么它就会使用默认值 "Test"
同理我们也可以修改像host, port, url这样的值了。
下一篇说一下CVS Data Set config,这个可以取代CVSRead()的东东