jmeter】 怎么优化jmeter 接口自动化 测试报告

2021-06-18 13:46发布

4条回答
我想吃肉
2楼 · 2021-06-18 16:04
、修改jmeter.properties文件,打开一些输出内容开关(下图根据需要选择相关项,具体就不用多说了吧)


2、制定一份自己的输出模板。(不用默认的jmeter_home/extras/jmeter-results-detail-report.xsl模板,也可以网上自己找份。)
3、最后执行,生成对应的HTML报告(一般我们都在linux环境 下运行,语句大致如下,其中my_project_template.xsl就上第2步说的定制模板,这个是网上找的一份。)

xsltproc $jmeter_home/extras/my_project_template.xsl $my_project_workspace/result/jtl/$test_name/${test_name}.jtl > $my_project_workspace/result/html/$test_name/${test_name}.html

最后报告如下:



优化后的HTML报告,多了接口地址、接口参数、Headers信息(包括cookie、session),而且有返回结果


tiu
3楼 · 2021-06-18 17:04

小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。

1、安装JDK,配置java环境变量(安装过程略)

2、安装Jmeter(安装过程略)

3、安装ANT


帅帅马
4楼 · 2021-08-31 10:21
1、修改jmeter.properties文件,打开一些输出内容开关(下图根据需要选择相关项,具体就不用多说了吧)


2、制定一份自己的输出模板。(不用默认的jmeter_home/extras/jmeter-results-detail-report.xsl模板,也可以网上自己找份。)
3、最后执行,生成对应的HTML报告(一般我们都在linux环境 下运行,语句大致如下,其中my_project_template.xsl就上第2步说的定制模板,这个是网上找的一份。)

xsltproc $jmeter_home/extras/my_project_template.xsl $my_project_workspace/result/jtl/$test_name/${test_name}.jtl > $my_project_workspace/result/html/$test_name/${test_name}.html


一个Ai
5楼 · 2021-09-02 14:22

   1、调整nginx的连接数为65535;

      events {
        use epoll;
        worker_connections 65535;
      }

    2、调整tomcat的最大线程数为300,默认为200;

       调整accept队列的长度为500,默认为100;

       因为使用的是tomcat7版本,默认使用的是BIO,调整为NIO模式

      protocol="org.apache.coyote.http11.Http11NioProtocol"
        connectionTimeout="60000"
        maxThreads="300"
        acceptCount="500"
        URIEncoding="UTF-8"
        useBodyEncodingForURI="true"
        enableLookups="false"
        redirectPort="8443" />

 

    3、根据服务器内存情况,调整tomcat堆内存及垃圾回收器,这里分配4G(机器有8G),因为这台机器上部署了2个应用;

    4、在tomcat配置中(bin/catalina.sh),开启jmc远程监控端口

      JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Xms4g -Xmx4g -Xmn2g -Xss512K -verbose:gc -XX:+UseConcMarkSweepGC
          -XX:MaxTenuringThreshold=10 -XX:PermSize=512m -XX:MaxPermSize=1g -XX:+ExplicitGCInvokesConcurrent -XX:GCTimeRatio=19
          -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=10
          -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=50
          -Xnoclassgc -XX:SoftRefLRUPolicyMSPerMB=0
          -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9433
          -Djava.rmi.server.hostname=172.xx.xx.xx 
          -Dcom.sun.management.jmxremote.ssl=false
          -Dcom.sun.management.jmxremote.authenticate=false"

 

  三、分析解决过程: 

    刚开始测试的时候,TPS上不去,只有30几:

  然后进行以下分析:

  1、检查【应用cpu】使用情况,只有3%左右,cpu没用充分使用起来;

  2、检查【应用堆内存】使用情况,只使用了500M(实际分配了4G),内在也没有充分使用起来;

以上2项指标,可以通过jdk自带的jdk1.8.0_201/bin/jvisualVM工具查看:

 

  

  3、查看慢sql,发现慢的SQL也没有,因为使用了Druid Monitor组件,可以使用它来分析

    http://172.xx.xx.xx:8089/xxx/druid/sql.html

 

  4、查看mycat日志是否已满,发现也没满。空间监控df -h ,防止文件系统空间满造成数据库hang住

    

  5、查看数据库磁盘io,发现比较低,只有10几%;

    iostat -x 中 r/s w/s svctm<=6ms %util<80>

    

  6、最后分析JMeter工具中的压测结果,发现有很多响应时间超过3s以上的,在应用日志中找到这些记录,分析调用链路(分布式系统)各个节点的耗时,发现有个应用中使用了synchronized锁,在高并发情况下获取锁耗时3s以上;

    

  7、修复程序,重新压测,tps就达到了80左右,耗时多的记录也基本上没有了,至此,此次性能压力测试已结束。

 

注意:重复压测,会发现随着压测的次数增多,TPS会越来越低。那是因为应用中的日志会越来越大,导致写入时hand住了,要删除日志文件。

 

  四、mysql性能监控指标: 

  在分析过程中,在网上查了不少资料,在这里也简单描述一下:

复制代码

    -%,iowait占比小于5%,user占比小于70%%+ -x 中  r/s     w/<=%util<%

    %,一般1000Mbit/


相关问题推荐

  • 回答 3

    做梯度压力测试,当你发现响应时间下降超过10%的那个压力点,基本上就是性能瓶颈点了。当然还可以直接压崩。然后给一个极值。但是通常这个值 没用。

  • 回答 2

    主要从架构上登录过程的实现,能否支持同一账号多处登录,是架构考量的,一般的系统除非对session做持久化和帐号绑定。否则肯定同一账号多个会话是支持的。更多详细还要看你的架构实现。不过一点可以确认从数据库和中间件缓存来看,命中一定会比不同数据要高...

  • 回答 3

    一、Jmeter关联的方式:Jmeter中关联可以在需要获取数据的请求上 右键–>后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据:  在LR中有自动关联跟手动关联,但在我看来手动关联更准确,在jmeter中,就只有手动关联为什么要进行关联:...

  • 回答 4

    1) 配置元件(config elements):http请求默认值、http信息头管理器、CSV Data Set Config  2) 前置处理程序(Pre-processors):用户参数  3) 定时器(timers):同步定时器和常量吞吐定时器  4) 取样器(Sampler):http请求、JDBC Request、FTP请求....  5) ...

  • 回答 5

    首先第一步要导入mysql驱动包一、添加JDBC Connection Configuration设置链接Database URL: jdbc:mysql:// 数据库地址 /库名JDBC Driver class:com.mysql.jdbc.DriverUsername:账号Password:密码二、添加JDBC Reques三、在http请求中加入变量username_id_N...

  • 回答 3

    再今天重新学习,从数据库中取数据,并作为变量传到下一个请求中。首先第一步要导入mysql驱动包  一、添加JDBC Connection Configuration设置链接Database URL: jdbc:mysql:// 数据库地址 /库名JDBC Driver class:com.mysql.jdbc.DriverUsername:账号Pass...

  • 回答 5

    一、CSV 参数化1、我们做性能测试需要并发多个用户,为了真实模拟用户行为,我们需要模拟多个不同的用户登录,这是我们就需要进行参数化。这里我们选择比较常用的参数化方法-CSV Data Set Config首先打开CSV Data Set Config2.新建cvs文件放在和脚本同一个目...

  • 回答 8
    已采纳

    jmeter有哪些优、缺点

  • 回答 5

    一、测试计划:用来描述一个性能测试,所有内容都是基于这个计划的。二、线程:一般常用线程组:可以理解成为虚拟用户组    setup thread group:可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。类似Loadrunner中的init    teardown...

  • 回答 2

    在使用Jmeter进行性能测试时,需要并发多个用户,模拟真实用户行为,此时就需要模拟多个不同用户同时请求,每个用户请求中的imei或uuid动态变化。Jmeter提供了参数化的功能,配置元件、函数助手以及前置处理器中的用户参数,均能够帮助我们解决这个问题。配置...

  • 回答 1

    可以在beanshell中把结果写到一个文件中自行统计。

  • 回答 1

    参数设置的不一样吧

  • 回答 1

    做了参数化,更能模仿不同的用户行为,如果不做参数化,所有的请求参数都是一成不变的,那么容易造成服务器的过度缓存,导致压测性能很好,真正上线就挂~~~

  • 回答 2

    正则表达式中设置相关参数值;引用名称:其他接口引用时候的名称正则表达式:(.*)表示零次或多次匹配除换行符之外的单字符,截图里提取的是响应数据中和之前的值

  • 回答 6
    已采纳

    转载:https://blog.csdn.net/weixin_33770878/article/details/87563654Jmeter与loadrunner是现时下比较火的两个软件,很多的测试人员在面临loadrunner与Jmeter的时候不知道该如何选择,其实当了解这两款软件之后就不会发生这种选择困难症了。下面通过一些异...

没有解决我的问题,去提问