您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
關(guān)于Ant+JMeter進(jìn)行Web應(yīng)用的穩(wěn)定性測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/19 14:29:13 ] 推薦標(biāo)簽:

使用Ant+JMeter進(jìn)行Web應(yīng)用的穩(wěn)定性測(cè)試

Ant是一個(gè)快速開(kāi)發(fā)的工具,類似Unix下的make,很方便的組織項(xiàng)目,編譯,打包,布署等。對(duì)于Ant的使用這里不介紹了,若未使用過(guò),可以在網(wǎng)上找到很多文章和例子。也可聯(lián)系我kui.yao@163.com。

JMeter也是Apache的一個(gè)開(kāi)源工具,是一個(gè)比較流行的WEB應(yīng)用測(cè)試工具,當(dāng)然作為測(cè)試工具,也可以進(jìn)行其它測(cè)試,比如數(shù)據(jù)庫(kù),JDBC等。其本身的使用,比如如何創(chuàng)建一個(gè)測(cè)試計(jì)劃,建立監(jiān)聽(tīng)器,比如使用表格進(jìn)行結(jié)果查看,將測(cè)試結(jié)果記錄到文件中等,也不在這里介紹,如果不清楚,也可以聯(lián)系我kui.yao@163.com。

由于JMeter本身主要用于性能測(cè)試,也即是峰值測(cè)試,同時(shí)在線的人數(shù)和系統(tǒng)壓力等。而在實(shí)際系統(tǒng)中還需要對(duì)“穩(wěn)定性”測(cè)試。比如根據(jù)的總量(如60000警情),平均間隔多久會(huì)有一個(gè) 新警情發(fā)生,要求服務(wù)器連續(xù)工作24或7*24小時(shí)的情況進(jìn)行測(cè)試。這樣思想是根據(jù)估計(jì),間隔一定時(shí)間重復(fù)運(yùn)行一個(gè)“測(cè)試計(jì)劃”達(dá)到此要求。

1,使用ant進(jìn)行jmeter測(cè)試,同時(shí)利用xsl樣式查看結(jié)果。詳細(xì)可以參考文章。

2,這里進(jìn)入本主題,利用ant進(jìn)行穩(wěn)定測(cè)試。

a,這里我有一個(gè)http的測(cè)試web1.jmx,測(cè)試結(jié)果記錄到web1.jtl中。利用ant的build.xml文件可以是這樣的。

< project name="antjmeter" default="run" basedir=".">
< property name="out" value="."/>
< target name="test">
< taskdef
name="jmeter"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>

< jmeter
jmeterhome="D:ProgramFilesjakarta-jmeter-2.1.1"
testplan="${basedir}/web1.jmx"
resultlog="${out}/web1.jtl">
< jvmarg value="-Dgroup1.threads=10"/>
< /jmeter>
< echo message="jmeter web1.jmx finished"/>
< /target>
< target name="interval">
< echo message="sleep 5 seconds"/>
< sleep seconds="5"/>
< echo message="continue"/>
< /target>
< target name="tfile">
< xslt
in="${basedir}/web1.jtl"
out="${basedir}/web1.html"
style="${basedir}/jmeter-results-report.xsl"/>
< /target>
< target name="run" depends="test,interval,tfile"/>
< /project>

運(yùn)行結(jié)果查看。

b,從上面可以運(yùn)行一次“測(cè)試計(jì)劃”,如果要連續(xù)運(yùn)行24小時(shí)呢?其中加了一個(gè)sleep目的是想在每次運(yùn)行完后暫停一下。這個(gè)根據(jù)你的系統(tǒng)要求估算。

c,從基本思想上大家可以想象,如果ant有l(wèi)oop或for的話,也可設(shè)定運(yùn)行次數(shù)來(lái)達(dá)到這個(gè)目的。但是目前Ant沒(méi)有此功能。所以達(dá)不到。通過(guò)我查看文檔,其中有ant和antcall的task,是不是可以利用這個(gè)來(lái)達(dá)到目的呢?

即build.xml中寫(xiě)為

< target name="test">
< taskdef
name="jmeter"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>

< jmeter
jmeterhome="D:ProgramFilesjakarta-jmeter-2.1.1"
testplan="${basedir}/web1.jmx"
resultlog="${out}/web1.jtl">
< jvmarg value="-Dgroup1.threads=10"/>
< /jmeter>
< echo message="jmeter web1.jmx finished"/>

< antcall target="interval"/>

< antcall target="test"/> < !--循環(huán)調(diào)用自已來(lái)達(dá)到持續(xù)運(yùn)行的目的。-->
< !--ant antfile="build.xml"/-->
< /target>

結(jié)果是使用ant或是antCall都不行。錯(cuò)誤如下:

antcall運(yùn)行報(bào)錯(cuò)
BUILD FAILED
D:ProgramFilesjakarta-jmeter-2.1.1mytestweb3uild.xml:18: antcall task call
ing its own parent target.
ant 運(yùn)行報(bào)錯(cuò)
BUILD FAILED
D:ProgramFilesjakarta-jmeter-2.1.1mytestweb3uild.xml:19: ant task calling
a target that depends on its parent target 'test'.

d,不過(guò)從前者的結(jié)果看,是不能call its own。因此我將原target test一樣考貝一份取名test2。
則在test中< antcall target="test2"/>,在test2中< antcall target="test"/>,這樣運(yùn)行可以達(dá)到
我想要的連續(xù)測(cè)試的要求。
3,只是這樣也有缺陷,因?yàn)檫@沒(méi)有編程功能,不能在之中加入比如測(cè)500次或測(cè)24小時(shí)后不再antcall
而結(jié)束的功能。所以要在你想停止的時(shí)候手動(dòng)停止了。
4,這樣xslt轉(zhuǎn)換不能寫(xiě)在這個(gè)功能中了,后手動(dòng)停止后再做xslt轉(zhuǎn)換或直接在xml中加入xsl顯示即可。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd