zoukankan      html  css  js  c++  java
  • 一个使用Jmeter做接口性能测试的实战案例

    1 安装并配置Jmeter

    Jmeter的安装不在这里阐述,安装步骤非常简单。

    直接进入主题

    1.1 数据库连接配置

    由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接。 如果不涉及数据操作,可以跳过此步骤。

    步骤1:打开jmeter开源性能测试工具,测试计划->添加线程组

                 

    步骤2:添加jdbc request请求 –>添加JCBC connection Configuration 数据库连接配置

    步骤3:配置jdbc request请求,添加sql查询语句

     举例Sql语句:

    select DISTINCT A.XX,A.XX,B.XX,A.XXX

    from Table A

    left join

    (select XX,XX,XX,XXX from  TableB) as B

    on A.XXX=B.XXX

    where XX like 'KKK%';

    步骤4:添加后置处理器  JDBC Request->后置处理器-> BeanShell PostProcessor

    对选择出来的数据进行参数化处理。

    import java.util.ArrayList;
    String count_DB = vars.get("var_#");
    int count = Integer.parseInt(count_DB);
    ArrayList 变量ANoArray = new ArrayList();
    ArrayList 变量BNoArray = new ArrayList();
    for(int i=0;i<count;i++){
        String 变量A= String.valueOf(vars.getObject("result").get(i).get("变量A"));
        String 变量B= String.valueOf(vars.getObject("result").get(i).get("变量B"));
        变量ANoArray.add(变量A);
        变量BNoArray.add(变量B);
    }
    
    vars.putObject("变量ANoArray",变量ANoArray);
    vars.putObject("变量BNoArray",变量BNoArray);
    1.2http请求配置

    步骤1:增加循环循环控制器  线程组->逻辑控制器->循环控制器

    步骤2:添加自增计数器

    步骤3:添加Constant Throughput Timer (常数吞吐量定时器)

     Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的1000/s,这里的值应该是 60000。

    注意:

    Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够导致没有生效。实测,一个线程可以启动10-20的并发,那么一个可设置300个线程左右。

    步骤4:添加http请求

     注意json格式的需要增加 http信息头管理器,Content-Type设置为application/json。

     http的详细请求中根据业务的接口报文来添加数据,主要添加如下:

    请求地址

    URL

    端口

    请求报文

     

    步骤5:添加前置处理器  http请求->前置处理器-> BeanShell PreProcessor

     根据jdbc请求出来的数据,参数化,实现批量数据操作

    import java.util.ArrayList;
    String Counter_DB = vars.get("Counter");
    int Counter_1 = Integer.parseInt(Counter_DB);
    int Counter = Counter_1-1;
    log.info("……………Counter………"+Counter);
    ArrayList 变量ANoArray = vars.getObject("变量ANoArray");
    ArrayList 变量BNoArray = vars.getObject("变量BNoArray");
    String 变量A= 变量ANoArray.get(Counter);
    String 变量B= 变量BNoArray.get(Counter);
    vars.put("变量A",变量A);
    vars.put("变量B",变量B);
    log.info("……………变量A………"+变量A);
    log.info("……………变量B………"+变量B);

    步骤6:添加BeanShell Sampler实现请求数据的MD5加密

    如果请求中的数据涉及md5加密,Jmeter自身没有实现MD5加密的函数,可以自定义一个jar包

    参考:http://blog.csdn.net/yuanwq2012/article/details/51252649

    注: MD5加密包放到此目录下,重启Jmeter即可生效

    apache-jmeter-3.2apache-jmeter-3.2lib

    3.3添加监控数据

       在服务器上启动agent,作为服务端:

    cd JmeterAgent/

     ./startAgent.sh –sysinfo

    Jmeter 作为客户端连接服务器:

    首先,需要获取JMeterPlugins-Standard-1.4.0插件包,并解压到本地任一目录下如D:softwareapache-jmeter-3.2apache-jmeter-3.2libext目录下,重启Jmeter生效。

    3.4 性能测试执行&数据收集

    点击Jmeter的启动按钮,启动测试,测试过程注意观察请求结果是否有报错。测试结果如果不达标,则需要进行性能调优。

  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/xiaoer/p/7670135.html
Copyright © 2011-2022 走看看