JMeter压力测试案例大全 之三【http测试和socket测试】

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和端口可以根据自己的需要修改)

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. import org.apache.jmeter.config.Arguments;  
  2. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;  
  3. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;  
  4. import org.apache.jmeter.samplers.SampleResult;  
  5.     
  6. import java.io.BufferedReader;  
  7. import java.io.InputStreamReader;  
  8. import java.io.PrintWriter;  
  9. import java.net.*;  
  10.     
  11. /** 
  12.  * 
  13.  * @author howsky 
  14.  * 
  15.  */  
  16. public class Test extends AbstractJavaSamplerClient {  
  17.  // Sock begin----------------------------------------------  
  18.  private Socket sid;  
  19.  private PrintWriter out;  
  20.  private BufferedReader in;  
  21.  private String ip;  
  22.     private String port;  
  23.  // Sock end------------------------------------------------  
  24.      
  25.     private static String label = "howsky.net";  
  26.        
  27.  // 测试结果  
  28.  private SampleResult sr;  
  29.      
  30.  /** 
  31.   * 初始化 
  32.   */  
  33.  public void setupTest(JavaSamplerContext arg0) {    
  34.         System.out.println("setupTest");    
  35.     }  
  36.      
  37.  /** 
  38.   * 设置请求的参数 
  39.   */  
  40.  public Arguments getDefaultParameters() {  
  41.         Arguments params = new Arguments();  
  42.         params.addArgument("ip", "127.0.0.1");  
  43.         params.addArgument("port", "8888");  
  44.         return params;  
  45.     }  
  46.      
  47.  /** 
  48.   * 运行过程 
  49.   */  
  50.  public SampleResult runTest(JavaSamplerContext arg0) {  
  51.      ip = arg0.getParameter("ip");    
  52.         port = arg0.getParameter("port");     
  53.         sr = new SampleResult();    
  54.         sr.setSampleLabel(label);    
  55.         try{    
  56.             sr.sampleStart(); //记录程序执行时间,以及执行结果    
  57.             //发送数据    
  58.             String msg = "welcome to howsky.net";    
  59.             System.out.println("begin");    
  60.             sendMsg(ip, Integer.parseInt(port), msg);    
  61.             sr.setSuccessful(true);    
  62.             System.out.println("end");    
  63.         }catch(Throwable e){    
  64.             sr.setSuccessful(false);    
  65.         }finally{    
  66.             sr.sampleEnd();    
  67.         }    
  68.         return sr;   
  69.  }  
  70.      
  71.  /** 
  72.   * 结束 
  73.   */  
  74.  public void teardownTest(JavaSamplerContext arg0) {  
  75.     }  
  76.      
  77.  /** 
  78.   * 发送消息 
  79.   * @param ip 
  80.   * @param port 
  81.   * @param msg 
  82.   * @throws Exception 
  83.   */  
  84.  private void sendMsg(String ip, int port, String msg) throws Exception{    
  85.   sid = new Socket(ip, port);  
  86.   in = new BufferedReader(new InputStreamReader(sid.getInputStream()));  
  87.   out = new PrintWriter(sid.getOutputStream(), true);  
  88.   out.println(msg);  
  89.   in.readLine();  
  90.         System.out.println("success");    
  91.     }  
  92. }  

 

接着点击项目右键Export->jar file->命名.jar

最后将jar包放到lib\ext\下,启动JMeter。

(2)写socket服务器端代码如下:

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public class SocketSer  
  2. {  
  3. public static void main(String[] args)   
  4.     {  
  5.             ServerSocket ss=null;  
  6.             OutputStream os=null;  
  7.             try {  
  8.                     ss = new ServerSocket(8888);  
  9.                     while(true){  
  10.                         Socket s=ss.accept();  
  11.                         String ip=s.getInetAddress().getHostName();  
  12.                         os=s.getOutputStream();  
  13.                         os.write("ServerSocket回复请求".getBytes());  
  14.                         os.flush();  
  15.                         s.close();  
  16.                         System.out.println(ip+"---"+new String("^_^成功完成一次请求"));  
  17.                     }  
  18.                 } catch (IOException e) {  
  19.                     e.printStackTrace();  
  20.                 }finally{  
  21.                     try {  
  22.                         os.close();  
  23.                     } catch (IOException e) {  
  24.                         e.printStackTrace();  
  25.                     }  
  26.                 }  
  27.     }  
  28. //a574258039的博客  

 

然后调用该段代码。

(3)JMeter中创建线程组。设置线程数,Ramp-up Period,循环次数。

(4)JMeter中创建Java请求默认值,如图:

 

然后选择要测试的类:如图

 

(5)JMeter中创建java请求:

 

配置基本和java请求默认值一样。

如图:

 

(6)创建监听:查看结果树

 

结果如下:

 

命令行输出:

posted @ 2016-06-13 15:18  Mila.Kou  阅读(610)  评论(0)    收藏  举报