JMeter性能测试入门
JMeter是一款性能測試工具。個人認為與其說他是一個工具,不如說他是一個框架。因為JMeter的支持范圍非常廣,目前常見的需要進行性能測試的應用幾乎都能應用(如:files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers)。JMeter的一大好處就是它內部已經有實現好的線程機制,用戶不用寫任何關于并發的東西,只需做簡單配置即可。同時他頁提供了一些類似插件的東西,用于線程運行時的控制;其次,JMeter對測試結果能都產生相應的統計報表,簡單、直觀,對一般性能測試應該足夠。
下載下來的JMeter有以下幾個目錄 bin? docs? extras? lib? printable_docs。bin 自不用說了,運行下面的jmeter.bat就可以看見JMeter的GUI客戶端了,可以對測試進行所有的配置。docs下面的是JMeter的所有用戶手冊,還算詳細,一般需要的都能查到。可惜沒有中文的,英文需要多花點時間。extras下為JMeter對Ant的一些支持。太具體的不是很清楚,不過生產報表這部分必不可少。運行測試時,可以把測試的所有數據記錄下來,JMeter自動生成一個.jtl的文件。把此文件放到extras下,運行 ant -Dtest=文件名 report,即可生成測試統計報表。lib目錄下還有兩個目錄,一個是ext,此目錄存放用戶對JMeter進行擴展的測試應用,一個是junit目錄,此目錄沒用到,不是很清楚。安裝文檔中的說法,ext目錄存放對JMeter的擴展,用戶的擴展所依賴的包則要直接放在lib下(不是lib/ext 下)。
線程組為JMeter的主要插件,其內部實現好了多現在,用戶只要添加、配置即可。
以下為線程組的配置界面:
?
如同所示,可以配置線程數,前一個線程與后一個線程啟動間隔,以及線程的循環次數。
配置元件為所有JMeter可以使用的應用,JMeter提供了一些基礎配置。如圖:
??????????????????
?
監聽器為測試過程中收集數據的。而且可以根據數據生成相應的報表(文字、圖形等)
?
邏輯控制器用于對線程的運行邏輯進行控制.
?
這里我用到主要JMeter的線程和報表,擴展了他的“Java請求”這個應用類別。要擴展此應用,要用到lib/ext/ApacheJMeter_java.jar,他封裝此應用。
首先,需要繼承ApacheJMeter_java.jar中的抽象類AbstractJavaSamplerClient,它提供了四個抽象方法: void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest與JUnit中的類似,分別在測試的開始和結束時執行。 runTest為主要測試方法,所有測試程序都在這里完成,JavaSamplerContext參數封裝測試中需要的所有外界數據(如配置信息等)。其 SampleResult封裝了所有測試結果(如:測試是否成功?程序執行時間等),getDefaultParameters用于把測試的一些默認數據在程序運行前顯示到JMeter客戶端,這個可以和runTest配合使用,實現數據的呈現和配置。
下面為程序:
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();? //記錄程序執行時間,以及執行結果
?????????? 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;
}
}
其次,把寫好的應用打包,放到lib/ext下,JMeter運行時即可找到。同時還要把用戶自己編寫的應用所依賴的包放在lib下。運行JMeter。界面打開后,右鍵“測試計劃”,添加線程組;右鍵“線程組”-添加-Sampler-Java請求,在類名稱處選擇剛才寫好的類。
如圖:
這里,可以同時添加多個線程組、多個java請求、同時可以添加監聽器用于輸出不同的的測試結果圖形、報表,各個請求之間可以用邏輯控制器進行執行流程的控制。如圖:
?
最后,點擊運行-啟動,保存相應的項目,即可開始運行。運行時的數據,可以通過監聽器寫入文件以便需要時生成報表。
在運行JMeter項目前,會讓用戶保存項目,保存為.jmx文件,把此文件放到extras目錄下,即可使用ant實現測試的自動化。ant有以下幾個命令:
ant -Dtest=項目名稱??? 運行項目并生成報表。
ant -Dtest=項目名稱 run??? 只運行項目。
ant -Dtest=項目名稱 report? 只生成報表(這個需要把測試時記錄下來的.jtl文件放到ant目錄下)
報表如下:
?
轉載于:https://www.cnblogs.com/hainange/archive/2009/08/13/6153096.html
總結
以上是生活随笔為你收集整理的JMeter性能测试入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: proxool配置多数据库多连接池
- 下一篇: PASSWORD,ENABLE,CONS