• 一个使用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的启动按钮,启动测试,测试过程注意观察请求结果是否有报错。测试结果如果不达标,则需要进行性能调优。

  • 相关阅读:
    005-请说一说黑盒与白盒的测试方法
    004-请问测试开发需要哪些知识?需要具备什么能力?
    003-请回答集成测试和系统测试的区别,以及它们的应用场景主要是什么?
    002-请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步
    001-请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试
    012-App测试web测试的区别
    使用控制台调试WinForm窗体程序
    .NET MD5 加密
    域名转化到IP地址的实现
    特定用户QQ群聊天记录导出的实现
  • 原文地址:https://www.cnblogs.com/xiaoer/p/7670135.html
Copyright © 2020-2023  润新知