• 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}

  • 相关阅读:
    Filter and Listener
    Cookie Session
    怎样快速将一台电脑虚拟机导入另外一台电脑
    网页下载文件服务端代码
    图片验证码生成代码
    Request实战
    Response
    设置页眉页脚的距离
    页眉页脚的设置
    节的设置
  • 原文地址:https://www.cnblogs.com/balaamwe/p/2321505.html
Copyright © 2020-2023  润新知