1. 程式人生 > >JMeter壓力測試案例大全 之(http測試和socket測試)

JMeter壓力測試案例大全 之(http測試和socket測試)

目錄
1.jmeter安裝

2.資料庫的壓力測試

3. ftp伺服器的壓力測試

4. sftp的壓力測試(缺)

5.http請求的壓力測試

6. socket的壓力測試

7.郵件伺服器測試

7.1基於命令列

7.2基於介面

8.元件介紹

9.1執行緒組

9.2控制器

9.3監聽器

9.4定時器

9.5執行順序

5.http請求的壓力測試(此篇部分參考百度文庫)

(1)新增執行緒組

(5)選擇視覺化介面中左邊樹中的“測試計劃”節點,點選“編輯”選單---> “添 加”--->”執行緒組”,新增一”執行緒組”後,“測試計劃”節點下多了“執行緒組” 節點

(2)新增HTTP請求預設值(用來配置公共引數,

不是http請求)

通過下面的步驟來設定HTTP請求預設值
1.選中視覺化介面中左邊樹的“執行緒組”節點,單擊右鍵,選擇“新增”—〉 “配置元件”—〉“HTTP請求預設值”,點選“HTTP請求預設值”後可視 化介面中左邊樹的“執行緒組”節點下多了“HTTP請求預設值”節點。

2. 設定“HTTP請求預設值”的主要引數:
伺服器名稱或IP:被測試伺服器的ip地址或者名字。在這裡設定為 192.168.10.91

埠號:伺服器的埠號,192.168.10.91機器上的Websphere埠號為9080 在這設定為9080

協議:傳送測試請求時使用的協議,CSP接受的是http請求

路徑:servlet的路徑。因為效能測試用的servlet

CSPReqServletTest ,所 以路徑設定為/csp/CSPReqServletTest
設定後的螢幕截圖如下:

3)新增HTTP請求

設定HTTP請求
1.選中視覺化介面中左邊樹的“執行緒組”,單擊右鍵,選擇“新增”—〉 “Sample—〉“HTTP請求”,點選“HTTP請求”後視覺化介面中左邊樹 的“執行緒組”節點下多了“HTTP請求”節點,如下圖:

2. 設定“HTTP請求”的主要引數:
方法:選擇POST

post方式可以進行引數的新增,對伺服器端傳送引數。

4新增監聽器
1.選中視覺化介面中左邊樹的“執行緒組”節點,單擊右鍵,選擇“新增”—〉 “監聽器”—〉“用表格檢視結果”,點選“用表格檢視結果”後視覺化介面 中左邊樹的“執行緒組”節點下多了“用表格檢視結果”節點

2. 設定“用表格檢視結果”的主要引數:

Configure:點選“Configure”按鈕,在彈出的視窗中選中“Save Response Data 項,以儲存響應資料,如下圖:

檔名:在“檔名”處填寫檔案的地址和名稱,以儲存相關的資料。在此 填寫為“F:\執行緒組.jmx”如下圖:

(5)點選檢視中的“執行”測試即可。

6.socket的壓力測試

(1)socket測試需要寫一個測試jar包。

首先建立一個工程,匯入lib\ext\ApacheJMeter_core.jar,ApacheJMeter_java.jar

然後建立下面的程式碼:(IP和埠可以根據自己的需要修改

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 java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
  
/**
 *
 * @author howsky
 *
 */
public class Test extends AbstractJavaSamplerClient {
 // Sock begin----------------------------------------------
 private Socket sid;
 private PrintWriter out;
 private BufferedReader in;
 private String ip;
    private String port;
 // Sock end------------------------------------------------
   
    private static String label = "howsky.net";
     
 // 測試結果
 private SampleResult sr;
   
 /**
  * 初始化
  */
 public void setupTest(JavaSamplerContext arg0) {  
        System.out.println("setupTest");  
    }
   
 /**
  * 設定請求的引數
  */
 public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("ip", "127.0.0.1");
        params.addArgument("port", "8888");
        return params;
    }
   
 /**
  * 執行過程
  */
 public SampleResult runTest(JavaSamplerContext arg0) {
     ip = arg0.getParameter("ip");  
        port = arg0.getParameter("port");   
        sr = new SampleResult();  
        sr.setSampleLabel(label);  
        try{  
            sr.sampleStart(); //記錄程式執行時間,以及執行結果  
            //傳送資料  
            String msg = "welcome to howsky.net";  
            System.out.println("begin");  
            sendMsg(ip, Integer.parseInt(port), msg);  
            sr.setSuccessful(true);  
            System.out.println("end");  
        }catch(Throwable e){  
            sr.setSuccessful(false);  
        }finally{  
            sr.sampleEnd();  
        }  
        return sr; 
 }
   
 /**
  * 結束
  */
 public void teardownTest(JavaSamplerContext arg0) {
    }
   
 /**
  * 傳送訊息
  * @param ip
  * @param port
  * @param msg
  * @throws Exception
  */
 private void sendMsg(String ip, int port, String msg) throws Exception{  
  sid = new Socket(ip, port);
  in = new BufferedReader(new InputStreamReader(sid.getInputStream()));
  out = new PrintWriter(sid.getOutputStream(), true);
  out.println(msg);
  in.readLine();
        System.out.println("success");  
    }
}

接著點選專案右鍵Export->jar file->命名.jar

最後將jar包放到lib\ext\下,啟動JMeter

(2)寫socket伺服器端程式碼如下:

public class SocketSer
{
public static void main(String[] args) 
	{
			ServerSocket ss=null;
			OutputStream os=null;
			try {
					ss = new ServerSocket(8888);
					while(true){
						Socket s=ss.accept();
						String ip=s.getInetAddress().getHostName();
						os=s.getOutputStream();
						os.write("ServerSocket回覆請求".getBytes());
						os.flush();
						s.close();
						System.out.println(ip+"---"+new String("^_^成功完成一次請求"));
					}
				} catch (IOException e) {
					e.printStackTrace();
				}finally{
					try {
						os.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
	}
//a574258039的部落格

然後呼叫該段程式碼。

(3)JMeter中建立執行緒組。設定執行緒數,Ramp-up Period,迴圈次數。

(4)JMeter中建立java請求預設值,如圖:

然後選擇要測試的類:如圖

(5)JMeter建立java請求:

配置基本和java請求預設值一樣。

如圖:

(6)建立監聽:檢視結果樹

結果如下:

命令列輸出: