jmeter mina2总结

 
  1. public class TestYuan extends AbstractJavaSamplerClient {  
  2.   
  3.         private static String label = "CBCTest";  
  4.         private String ip;  
  5.         private String port;   
  6.         private String INSTYPE;  
  7.         private SampleResult sr;  
  8.   
  9.         public void setupTest(JavaSamplerContext arg0) {  
  10.             System.out.println("setupTest");  
  11.         }   
  12.   
  13.         public SampleResult runTest(JavaSamplerContext arg0) {  
  14.             ip = arg0.getParameter("ip");  
  15.             port = arg0.getParameter("port");  
  16.             INSTYPE = arg0.getParameter("INSTYPE");  
  17.             sr = new SampleResult();  
  18.             sr.setSampleLabel(label);  
  19.             try{  
  20.                 sr.sampleStart(); //记录程序执行时间,以及执行结果  
  21.                 //发送数据  
  22.                 String s=getInsData(INSTYPE);  
  23.                 System.out.println("send begin!");  
  24.                 sendMsg(ip,Integer.parseInt(port),s);  
  25.                 sr.setSuccessful(true);  
  26.                 System.out.println("send over!");  
  27.             }catch(Throwable e){  
  28.                 sr.setSuccessful(false);  
  29.             }finally{  
  30.                 sr.sampleEnd();  
  31.             }  
  32.             return sr;  
  33.         }   
  34.   
  35.         private String getInsData(String instype2) throws Exception {  
  36.             String retstr;  
  37.             try {  
  38.                 retstr = redInput(instype2);  
  39.             } catch (Exception e) {  
  40.                 System.out.println("instype:"+instype2+" file not exist!");  
  41.                 throw e;  
  42.             }  
  43.             return retstr;  
  44.         }  
  45.   
  46.         public void teardownTest(JavaSamplerContext arg0) {  
  47.         }   
  48.   
  49.         public Arguments getDefaultParameters() {  
  50.             Arguments params = new Arguments();  
  51.             params.addArgument("ip""99.6.150.31");  
  52.             params.addArgument("port""8016");  
  53.             params.addArgument("INSTYPE""1");  
  54.             return params;  
  55.         }   
  56.   
  57.         private void sendMsg(String ip,int port,String data) throws Exception{  
  58.             ClientSocket clientSocket = new ClientSocket(null, ip, port);  
  59.             XmlIniPlus ini  = null;  
  60.             try {  
  61.                 ini = clientSocket.clientConnect("DCINSFRM","10041004",data/*, tmsListener*/);  
  62.             } catch (Exception e) {  
  63.                 //支付设置为可疑  电子指令设置为失败  查支付设置为可疑  
  64.                 System.out.println("Exception:"+e.getMessage());  
  65.                 throw e;  
  66.             }   
  67.             System.out.println("success return!");  
  68.         }  
  69.         public static String redInput(String insType) throws Exception {  
  70.             char data[] = new char[1024]; // 建立可容纳1024个字符的数组   
  71.             FileReader fr = null;  
  72.             try {  
  73.                 //fr = new FileReader("c:\\DCQRYBKP.xml");  
  74.                 fr = new FileReader("c:\\DCINSFRM_"+insType+".xml");  
  75.             } catch (Exception e) {  
  76.                 e.printStackTrace();  
  77.                 throw e;  
  78.             } // 建立对象fr  
  79.   
  80.             int num = 0;  
  81.             String str = null;  
  82.             try {  
  83.                 num = fr.read(data);  
  84.                 str = new String(data, 0, num); // 将字符列表转换成字符串  
  85.                 fr.close();  
  86.             } catch (Exception e) {  
  87.                 e.printStackTrace();  
  88.                 throw e;  
  89.             }  
  90.             return str;  
  91.         }  
  92. }  

 项目用mina做socket底层通信,需要做性能测试,loadrunner太难,还是jemeter小,功能全。自己实现了jemete的TCPsampler。

 

大致总结如下:

 

1.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。

2、sampler
java请求:是自己写的一个sampler

3、聚合报告
Label:取样器名称
Samples:运行过程中一共发出了多少个请求,一般来说是其值=线程数*循环次数(前提:测试按计划跑完,其中没有异常结束的线程),如5个线程,每个线程循环10次,那么对应行的Samples数是:5*10=50,总体Samples是各请求Samples之和。
Average:平均响应时间
Median:响应时间中间值
90%Line:响应时间90%线
Min:最小响应时间
Max:最大响应时间
Error%:出错率(出错的Request数/所有的request数)
Throughput:吞吐量,每秒/每分钟(具体看“/”后面的单位)处理的Request数
KB/sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
【注意】关于总体值并不是各列的累加。是以所有Samples为样本的统计值,如:总体Min=min{各个Samples的Min},总体Max=max{各个Samples的Max}

posted @ 2012-01-13 13:26  balaamwe  阅读(1080)  评论(0编辑  收藏  举报