zoukankan      html  css  js  c++  java
  • Linux下运行Jmeter测试所遇问题汇总

    一、安装及启动Jmeter
     本文原创,欢迎转发,但转发请务必写出处! 
    0、下载及安装
    下载地址及Linux命令
    wget http://mirrors.cnnic.cn/apache//jmeter/binaries/apache-jmeter-3.0.tgz
    官网下载好tgz的Jmeter压缩包之后,直接解压,解压后的目录结构和windows版本的一致。
    1、运行Jmeter报错NonGUIDriver
    [root@BJ-TEST-11-kvm-221 bin]# ./jmeter.sh -n -t ../project/realnameauthINFTest/RNA_INFtest.jmx -l log.jtl
    Writing log file to: /home/bjqa/apache-jmeter-3.0/bin/jmeter.log
    Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/bjqa/apache-jmeter-3.0/bin/../project/realnameauthINFTest/RNA_INFtest.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: kg.apc.jmeter.vizualizers.CorrectedResultCollector : kg.apc.jmeter.vizualizers.CorrectedResultCollector
    ---- Debugging information ----
    解决:
    产生该错误的原因,目前有两种情况:
    情况1,低版本的JMeter运行高版本的测试计划(测试计划是在高版本的JMeter上编制的)。解决方法:使用相同或更高版本JMeter运行该计划。
    情况2,使用第三方插件生成的测试计划,运行在没有该第三方插件的JMeter上。解决方法:在JMeter上安装插件或重新生成不包含插件的测试计划。
     
    2、运行日志中出现java.net.UnknownHostException错误
    2016/08/15 16:02:34 ERROR - jmeter.util.JMeterUtils: Unable to get local host IP address. java.net.UnknownHostException: BJ-TEST-11-kvm-221: BJ-TEST-11-kvm-221: Name or service not known
     
    [root@BJ-TEST-11-kvm-221 apache-jmeter-3.0]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    127.0.0.1   localhost MDRADEL0 BJ-TEST-11-kvm-221     <----新增内容
    ~
     
    [root@BJ-TEST-11-kvm-221 etc]# vim /etc/sysconfig/network
    NETWORKING=yes                                         <--检查确认这种写法
    HOSTNAME=BJ-TEST-11-kvm-221                 <--检查确认这种写法
     
    二、脚本编写与运行接口测试
    1、Linux下Jmeter概述
       
      难点1、Linux如果是无操作系统UI,则修改jmx脚本比较费劲,全部都是XML形式;
      技巧1、Jmeter测试计划xx.jmx小范围小数据修改还可以对照windows下notepad++打开的jmx进行修改,大范围修改最好是直接拷贝windows下的jmx内容到Linux下jmx文件中,再进行少量windowsy与Linux有
     
        难点2、Linux下Jmeter测试结果是无界面化的,在Linux下基本上无法查看
        技巧2、必须将Jmeter生成的测试结果xx.jtl文件拷贝到windows下,专门在windows下的Jmeter创建一个测试计划,添加想要查看测试结果的组件,如【查看结果树】,【聚合报告】等,并在文件名栏位右侧使用浏览选择Linux下生成的jtl文件,即可看到Linux上的测试结果。每个组件需要导入一次。
                                                                                
        技巧3、如何生成有时间作为名称的测试结果jtl文件?
        答:直接在【聚合报告】的日志写入文件栏位按照Linux下路径习惯写好,如:/home/bjqa/apache-jmeter-3.0/logs/morePresult${__time(YMD)}${__time(HMS)}.jtl ,则测试结果会在/home/bjqa/apache-jmeter-3.0/logs/目录下生成类似 morePresult201608151722.jtl
            特别的,这里不要写相对路径,相对路径不是很靠谱,绝对路径可以绝对的找到日志文件。此时Jmeter运行命令如下:jmeter -n -t /home/bjqa/apache-jmeter-3.0/testplans/realnameauthINFTest/RNA_INFtest.jmx   
             看到没有,根本不需要增加 参数 【-l xx.jtl】来生成日志文件,因为测试计划的jmx 【聚合报告】里面已经指定过了,去/home/bjqa/apache-jmeter-3.0/logs这里就能查到日志。
        但在查看图形化测试结果中有个坑从Linux上拿回来的测试结果jtl文件在windows打开报错?多在几个脚本上面,用聚合报告打开试试,这里可能涉及到聚合报告中configure里面勾选的内容,但目前没有定论。
        
        技巧4、想看个接口请求结果,还得把jtl文件导回到windows环境,太费劲了,如何破?
        答:临时使用jmeter的log功能,在http请求中增加BeanShell PostProcessor组件,写入脚本: 
    prev.setDataEncoding("UTF-8");
    String response_data = prev.getResponseDataAsString();
    log.error("response_data----------------:"+response_data);    <==高亮部分可自由发挥
     
    则在jmeter.log文件中可以看到如下日志:
    2016/08/17 17:09:06 ERROR - jmeter.util.BeanShellTestElement: bodydata0----------------:{"mid":"123456","data":"{"reqId":"201608171709060200","idNo":"13*********11","name":"**文"}","sign":"70cf51c2e6f1a9a6b7b827a3f5939e21"} 
    2016/08/17 17:09:06 ERROR - jmeter.util.BeanShellTestElement: response_data----------------:{"code":0,"data":{"result":1},"sign":"40af6eb30c698edd9c541bbfaa4a9aa3"} 
    2016/08/17 17:09:06 INFO  - jmeter.threads.JMeterThread: Thread is done: setUp Thread Group 1-20 
    2016/08/17 17:09:06 INFO  - jmeter.threads.JMeterThread: Thread finished: setUp Thread Group 1-20 
    2016/08/17 17:09:06 INFO  - jmeter.engine.StandardJMeterEngine: All Setup Threads have ended 
    2016/08/17 17:09:06 INFO  - jmeter.engine.StandardJMeterEngine: No enabled thread groups found 
    2016/08/17 17:09:06 INFO  - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test 
    2016/08/17 17:09:06 INFO  - jmeter.reporters.Summariser: summary +    173 in 00:00:07 =   25.7/s Avg:   705 Min:   403 Max:   888 Err:     0 (0.00%) Active: 0 Started: 0 Finished: 0 
    2016/08/17 17:09:06 INFO  - jmeter.reporters.Summariser: summary =    600 in 00:00:25 =   23.8/s Avg:   767 Min:   108 Max:  1537 Err:     0 (0.00%)    <==零错误,则可以进行下一步压测
     
      坑1、测试计划中引入jar包,直接手写输入不会被真正保存。
          答:因为windows下Jmeter的测试计划Add directort or jar to classpath只能浏览选择文件或目录,无法直接新增手写文件目录或文件夹目录,即使在Jmeter客户端里手工书写并保存,也是无效的。
        因此在复制到Linux下之前可以使用notepad++修改,然后再交由Linux下Jmeter使用即可。
     
      坑2、VPN下SSH如何scp命令?
    [testing@boce66]:/home/testing/apache-jmeter-3.0/testplan/RNAuth]#scp -P 322 root@200.100.10.158:/home/root/tmp/realname_infTest_Linux.jmx ./aa.jmx 
    reverse mapping checking getaddrinfo for 178.16.143.219.broad.bj.bj.dynamic.163data.com.cn [219.143.16.178] failed - POSSIBLE BREAK-IN ATTEMPT!
    root@200.100.10.158's password:                <===这里输入密码
    realname_infTest_Linux.jmx                           100%  140KB 140.3KB/s   00:00    
    [testing@boce66]:/home/testing/apache-jmeter-3.0/testplan/RNAuth]#ls
    aa.jmx
     
      坑3、Linux下Jmeter3.0遇到java.net.SocketException: Connection reset
      可参考http://stackoverflow.com/questions/20802694/connection-reset-meesage-from-jmeter
     
      坑4、脚本的内容文字和UI上面你的说明文字未必能对的上
      
     
      本文原创,欢迎转发,但转发请务必写出处! 
     
      总结虽然结束,但坑永远不会消失~~~20160824
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    【Nginx】Nginx性能优化及配置文件
    【算法】常见算法分类和思想
    【PHP】php位运算及其高级应用
    【数据结构】数据结构-图的基本概念
    【Redis】Redis缓存穿透解决方案之布隆过滤器
    【Linux】Linux系统5种IO模型
    【linux】/dev/null作用和/dev/random
    【Linux】Linux查找功能
    【算法】算法复杂度
    Docker Hub公共镜像仓库的使用
  • 原文地址:https://www.cnblogs.com/kuzaman/p/5803193.html
Copyright © 2011-2022 走看看