Java 接口並發性能測試——loadrunner11


最近在使用loadrunner11測試Java 接口的並發性能,記錄自己從小白到勉強做出合理的結果的過程,以便有需要的朋友參照,歡迎挑錯。

1.loadrunner11介紹

  LoadRunner,是一種預測系統行為和性能的負載測試工具。通過以模擬上千萬用戶實施並發負載及實時性能監測的方式來確認和查找問題,LoadRunner能夠對整個企業架構進行測試。企業使用LoadRunner能最大限度地縮短測試時間,優化性能和加速應用系統的發布周期。 LoadRunner可適用於各種體系架構的自動負載測試,能預測系統行為並評估系統性能。-百度百科。

  loadrunner是惠普公司開發的測試工具,目前有社區版可以免費無限期試用。下載注冊方式參見:http://www.oschina.net/news/59345/loadrunner-free

  本人是測試小白,目前了解到的測試工具:

  ①loadrunner 做性能測試,並發性能、負載測試。收費版功能強大,能夠模擬各種情況。

  ② Apache JMeter是Apache組織開發的基於Java的壓力測試工具,用於測試靜態和動態資源例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、 數據庫, FTP 服務器, 等等。JMeter 可以用於對服務器、網絡或對象模擬巨大的負載,來在不同壓力類別下測試它們的 強度和分析整體性能。開源免費。

  ③JUnit  單元測試

  我選擇loadrunner11,是因為服務器上有現成的,不用自己安裝,直接拿來用。此處省略安裝步驟……

2.測試Java接口

2.1編寫測試腳本

  

  打開loadrunner,首先是創建測試腳本,loadrunner有很強大的錄制腳本功能。可以錄制模擬web頁面登陸、點擊等復雜的腳本。

  我要測試的是Java 接口,需要創建Java Vuser。具體步驟:Create/Edit Scripts—>File—>New—>New Single Protocol Script—>Java Vuser

在action中編寫你的Java代碼。下面是我寫的腳本: 

import lrapi.lr;
public class Actions{
    public int init() throws Throwable {
	return 0;
    }//end of init


    public int action() throws Throwable {
        try{
             CloseableHttpClient httpClient = HttpClients.createDefault();					
             HttpPost httpPost = new                                
                                         HttpPost("http://www.xx.com/detect");			
             String text = "我愛這藍色的海楊。";
	     String type = "字詞;";			
             List<NameValuePair> parameters = 
                                                 new ArrayList<NameValuePair>();					
             parameters.add(new BasicNameValuePair("text", text));
             parameters.add(new BasicNameValuePair("type", type));				
             HttpEntity entity1 = 
                            new UrlEncodedFormEntity(parameters, "utf-8");					
            httpPost.setEntity(entity1);	
            lr.rendezvous("point");//設置集合點
            lr.start_transaction("auto");//設置事務開始點
            HttpResponse response = httpClient.execute(httpPost);
	    lr.end_transaction("auto", lr.AUTO);//設置事務結束點			
            StatusLine statusLine = response.getStatusLine();					
            int code = statusLine.getStatusCode();					
            if (code == 200) {					
               HttpEntity entity2 = response.getEntity();					
               System.out.println(EntityUtils.toString(entity2, "utf-8"));					
            }					
        }catch(IOException e){					
            e.printStackTrace();					
      }
       return 0;
    }//end of action

    public int end() throws Throwable {
	return 0;
    }//end of end
}                    

保存腳本,運行一下腳本(Vuser—>Run),測試一下是否有錯誤。

解釋幾個概念:

①集合點

  用以同步虛擬用戶,以便恰好在同一時刻執行任務。集合點更多用於混合並發,只是為了嚴格意義所謂的並發二設置。覺得理解困難的請參照:http://www.cnblogs.com/Uther/p/5301958.html。設置集合點方式,直接寫代碼或者Insert—>Rendezvous—>輸入Rendezvous Name

②事務

  loadrunner運行到事務start時開始計時,運行到end時結束計時。這個時間loadrunner會記錄下來,並幫你分析平均響應時間等一些特征。

  事務是LoadRunner度量系統性能指標的唯一手段,事務用來衡量系統的響應時間。我之前在腳本代碼中計算響應時間,寫到日志中。但是日志分析起來十分麻煩,寫日志的過程涉及Java多並發,不如loadrunner事務簡單方便准確。了解更多請參照:http://blog.csdn.net/liuyuzhu111/article/details/49803813

  設置事務方式,直接寫代碼或者Insert—>Start Transaction/End Transaction

2.2 運行負載測試

  Run Load Tests—>選擇剛才編寫的測試腳本—>選擇Manual Scenario 手動場景

設置完場景之后Run即可。注意點:

  在Global Schedule中設置Vuser個數,也就是並發數。

  由於我測試的接口比較簡單,只添加一個組。多個組時設置Vuser個數及運行原理目前沒搞懂,等有空繼續學習。  

 

3.記錄和分析結果數據

   運行結束后,Results—>Analyze Result

 

4.編寫測試報告

  我認為並發性能需要考慮兩點:①在程序不崩潰的情況下,可承受的最大並發數②在某一並發下,性能最優。

  測試1-1000並發下,5min成功處理的請求數來衡量性能。

  測試總數據量為1w條數據,在1-1000並發下,控制迭代次數(即處理完1w條數據),用耗時來衡量性能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM