JMeter性能测试入门
JMeter是一款性能測(cè)試工具。個(gè)人認(rèn)為與其說(shuō)他是一個(gè)工具,不如說(shuō)他是一個(gè)框架。因?yàn)镴Meter的支持范圍非常廣,目前常見(jiàn)的需要進(jìn)行性能測(cè)試的應(yīng)用幾乎都能應(yīng)用(如:files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers)。JMeter的一大好處就是它內(nèi)部已經(jīng)有實(shí)現(xiàn)好的線程機(jī)制,用戶不用寫任何關(guān)于并發(fā)的東西,只需做簡(jiǎn)單配置即可。同時(shí)他頁(yè)提供了一些類似插件的東西,用于線程運(yùn)行時(shí)的控制;其次,JMeter對(duì)測(cè)試結(jié)果能都產(chǎn)生相應(yīng)的統(tǒng)計(jì)報(bào)表,簡(jiǎn)單、直觀,對(duì)一般性能測(cè)試應(yīng)該足夠。
下載下來(lái)的JMeter有以下幾個(gè)目錄 bin? docs? extras? lib? printable_docs。bin 自不用說(shuō)了,運(yùn)行下面的jmeter.bat就可以看見(jiàn)JMeter的GUI客戶端了,可以對(duì)測(cè)試進(jìn)行所有的配置。docs下面的是JMeter的所有用戶手冊(cè),還算詳細(xì),一般需要的都能查到。可惜沒(méi)有中文的,英文需要多花點(diǎn)時(shí)間。extras下為JMeter對(duì)Ant的一些支持。太具體的不是很清楚,不過(guò)生產(chǎn)報(bào)表這部分必不可少。運(yùn)行測(cè)試時(shí),可以把測(cè)試的所有數(shù)據(jù)記錄下來(lái),JMeter自動(dòng)生成一個(gè).jtl的文件。把此文件放到extras下,運(yùn)行 ant -Dtest=文件名 report,即可生成測(cè)試統(tǒng)計(jì)報(bào)表。lib目錄下還有兩個(gè)目錄,一個(gè)是ext,此目錄存放用戶對(duì)JMeter進(jìn)行擴(kuò)展的測(cè)試應(yīng)用,一個(gè)是junit目錄,此目錄沒(méi)用到,不是很清楚。安裝文檔中的說(shuō)法,ext目錄存放對(duì)JMeter的擴(kuò)展,用戶的擴(kuò)展所依賴的包則要直接放在lib下(不是lib/ext 下)。
線程組為JMeter的主要插件,其內(nèi)部實(shí)現(xiàn)好了多現(xiàn)在,用戶只要添加、配置即可。
以下為線程組的配置界面:
?
如同所示,可以配置線程數(shù),前一個(gè)線程與后一個(gè)線程啟動(dòng)間隔,以及線程的循環(huán)次數(shù)。
配置元件為所有JMeter可以使用的應(yīng)用,JMeter提供了一些基礎(chǔ)配置。如圖:
??????????????????
?
監(jiān)聽(tīng)器為測(cè)試過(guò)程中收集數(shù)據(jù)的。而且可以根據(jù)數(shù)據(jù)生成相應(yīng)的報(bào)表(文字、圖形等)
?
邏輯控制器用于對(duì)線程的運(yùn)行邏輯進(jìn)行控制.
?
這里我用到主要JMeter的線程和報(bào)表,擴(kuò)展了他的“Java請(qǐng)求”這個(gè)應(yīng)用類別。要擴(kuò)展此應(yīng)用,要用到lib/ext/ApacheJMeter_java.jar,他封裝此應(yīng)用。
首先,需要繼承ApacheJMeter_java.jar中的抽象類AbstractJavaSamplerClient,它提供了四個(gè)抽象方法: void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest與JUnit中的類似,分別在測(cè)試的開(kāi)始和結(jié)束時(shí)執(zhí)行。 runTest為主要測(cè)試方法,所有測(cè)試程序都在這里完成,JavaSamplerContext參數(shù)封裝測(cè)試中需要的所有外界數(shù)據(jù)(如配置信息等)。其 SampleResult封裝了所有測(cè)試結(jié)果(如:測(cè)試是否成功?程序執(zhí)行時(shí)間等),getDefaultParameters用于把測(cè)試的一些默認(rèn)數(shù)據(jù)在程序運(yùn)行前顯示到JMeter客戶端,這個(gè)可以和runTest配合使用,實(shí)現(xiàn)數(shù)據(jù)的呈現(xiàn)和配置。
下面為程序:
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.ebupt.wv.client.WVClient;
public class Login2 extends AbstractJavaSamplerClient {
private static String label = "userLogin"
private String name;
private String address;
public void setupTest(JavaSamplerContext arg0) {
???? System.out.println("setupTest");
}
public SampleResult runTest(JavaSamplerContext arg0) {
???? name = arg0.getParameter("name");
???? address = arg0.getParameter("address");
???? SampleResult sr;
???? sr = new SampleResult();
???? sr.setSampleLabel(label);
???? try{
???????????sr.sampleStart();? //記錄程序執(zhí)行時(shí)間,以及執(zhí)行結(jié)果
?????????? sr.setSuccessful(true);
???? ????? System.out.println("send over!");
???? }catch(Throwable e){
???? ???? sr.setSuccessful(false);
???? }finally{
???? ???? sr.sampleEnd();
???? }
?????return sr;
}
public void teardownTest(JavaSamplerContext arg0) {
}
public Arguments getDefaultParameters() {
???? Arguments params = new Arguments();
???? params.addArgument("name", "JMeter");
???? params.addArgument("address", "localhost");
???? return params;
}
}
其次,把寫好的應(yīng)用打包,放到lib/ext下,JMeter運(yùn)行時(shí)即可找到。同時(shí)還要把用戶自己編寫的應(yīng)用所依賴的包放在lib下。運(yùn)行JMeter。界面打開(kāi)后,右鍵“測(cè)試計(jì)劃”,添加線程組;右鍵“線程組”-添加-Sampler-Java請(qǐng)求,在類名稱處選擇剛才寫好的類。
如圖:
這里,可以同時(shí)添加多個(gè)線程組、多個(gè)java請(qǐng)求、同時(shí)可以添加監(jiān)聽(tīng)器用于輸出不同的的測(cè)試結(jié)果圖形、報(bào)表,各個(gè)請(qǐng)求之間可以用邏輯控制器進(jìn)行執(zhí)行流程的控制。如圖:
?
最后,點(diǎn)擊運(yùn)行-啟動(dòng),保存相應(yīng)的項(xiàng)目,即可開(kāi)始運(yùn)行。運(yùn)行時(shí)的數(shù)據(jù),可以通過(guò)監(jiān)聽(tīng)器寫入文件以便需要時(shí)生成報(bào)表。
在運(yùn)行JMeter項(xiàng)目前,會(huì)讓用戶保存項(xiàng)目,保存為.jmx文件,把此文件放到extras目錄下,即可使用ant實(shí)現(xiàn)測(cè)試的自動(dòng)化。ant有以下幾個(gè)命令:
ant -Dtest=項(xiàng)目名稱??? 運(yùn)行項(xiàng)目并生成報(bào)表。
ant -Dtest=項(xiàng)目名稱 run??? 只運(yùn)行項(xiàng)目。
ant -Dtest=項(xiàng)目名稱 report? 只生成報(bào)表(這個(gè)需要把測(cè)試時(shí)記錄下來(lái)的.jtl文件放到ant目錄下)
報(bào)表如下:
?
轉(zhuǎn)載于:https://www.cnblogs.com/hainange/archive/2009/08/13/6153096.html
總結(jié)
以上是生活随笔為你收集整理的JMeter性能测试入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: proxool配置多数据库多连接池
- 下一篇: PASSWORD,ENABLE,CONS