jmeter+ant+cmd生成测试报告

接口自动化-步骤、遇到的问题及解决方法(jmeter、ant、cmd)

一、 安装包准备

JDK:jdk1.8.0_91
Ant:apache-ant-1.10.1
Jmeter:apache-jmeter-3.0(还需要下载jmeter的两个插件JMeterPlugins-Extras-1.4.0和JMeterPlugins-Standard-1.4.0)
Jenkins:jenkins-1.651.1

二、 安装JDK

安装时,一直点下一步就可以,也可以选择自己想安装的目录进行安装。

1、配置JAVA_HOME变量:

桌面右键计算机=>属性=>高级系统设置=>环境变量=>系统变量=>新建

JDK配置.png

变量名为JAVA_HOME 变量值填写jdk安装路径,如果安装多个jdk版本,在此处写哪个路径就可直接变更jdk版本

2、系统变量=>Path,双击打开编辑

在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注意,所有变量值之间都必须有英文分号;隔开

3、系统变量=>新建CLASSPATH变量,若有则直接编辑

变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
注意:最前面有一个英文句号“.”。

4、打开命令行,输入java-version,会打印出当前JDK的版本号
java安装成功.png

三、 安装Jmeter

1、 直接解压Jmeter压缩包,就算安装成功了
2、Jmeter插件的安装。

解压JMeterPlugins-Extras-1.4.0.zip、JMeterPlugins-Standard-1.4.0.zip,将两个文件夹lib\ext目录下的所有文件拷贝到apache-jmeter-3.2\lib\ext目录下;

3、配置Jmeter环境变量

1)新建系统变量,变量名称:JMETER_HOME,变量值:E:\application20160314\apache-jmeter-3.2(Jmeter本地安装路径)
2)在系统变量中Path中添加%JMETER_HOME%\bin
3)打开命令行,输入jmeter-v,打印出jmeter版本号表示安装成功(若是命令行不支持,则使用别的工具,如Xshell)

jmeter安装成功.png

四、 安装Ant

1、直接解压apache-ant-1.10.1-bin.zip到想要的目录,就算安装成功了
2、 配置Ant环境变量
  1. 新建系统变量:ANT_HOME,变量值为Ant的本地安装路径,如我的:E:\application20160314\apache-ant-1.10.1
  2. 在系统变量Path后添加%ANT_HOME%\bin
    3)打开命令行,输入ant-version,打印出ant版本号表示配置成功(若是命令行不支持,则使用别的工具,如Xshell)
    ant安装成功.png
3、 本地调试使用ant构建运行Jmeter,并且生成jtl、html格式报告

3.1 jmeter默认保存的是.csv格式文件,因此需要把默认的进行修改,找到bin/jmeter.properties文件,修改jmeter.save.saveservice.output_format=xml,需要把前面的注释符去掉
3.2 将apache-jmeter-3.2\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.10.1\lib目录下
3.3 在Xshell或命令行,先进入\apache-jmeter-3.2\extras目录,运行ant.bat-file build.xml -Dtest=Test, 查看\apache-jmeter-2.13\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功。

注意:

到这里出问题了,一直构建失败,提示jtl文件不存在(xxx.Jtl does not exist),尝试了很多方法,都不行,最后到网上找了一个范例,把build.xml文件整个给改了,然后终于成功了,步骤如下:
1)在本地创建一个存放report的目录;
2)把build.xml和样式文件jmeter-results-detail-report_21.xsl(这个需要自己上网找正确的,不然样式会错)都放入该目录下;
3)自己本地有专门存放脚本的目录,每次要运行哪个目录的脚本,需要去修改build.xml文件脚本文件目录;
4)修改build.xml,代码如下;
5)命令行或者别的工具,进入自己创建的report目录后(由于是自己创建了一个报告生成文件夹的路径,修改了build.xmljmeter.results.shanhe.me.xsl,所以路径要定位到:E:\application20160314\apache-jmeter-3.2\exportResult才能生效),这里有个小技巧:按住Shift+鼠标右键,可以选择在当前目录打开cmd。
执行ant.bat -file build.xml -Dtest=脚本文件名(Jmeter保存的*.jmx文件名,不需要后缀),发现就能在这个目录生成jtl和html文件了。

ant执行,测试报告成功生成.png

附上我的build.xml代码,注意第一行必须顶格,不然会报错:

<?xml version="1.0" encoding="UTF-8"?>    
        
    <project name="ant-jmeter-test" default="run" basedir=".">    
            
        <tstamp>    
            <format property="time" pattern="yyyyMMddHHmm" />    
        </tstamp>    
        <!-- 本地存放报告的路径-->  
        <property name="basedirectory" value="E:\application20160314\apache-jmeter-3.2\exportResult" />  
        <!-- 本地存放脚本的路径-->  
        <property name="scriptdirectory" value="E:\application20160314\apache-jmeter-3.2\bin" />          
        <!-- 需要改成自己本地的 Jmeter 目录-->      
        <property name="jmeter.home" value="E:\application20160314\apache-jmeter-3.2" />    
        <!-- jmeter生成jtl格式的结果报告的路径-->     
        <property name="jmeter.result.jtl.dir" value="${basedirectory}" />    
        <!-- jmeter生成html格式的结果报告的路径-->    
        <property name="jmeter.result.html.dir" value="${basedirectory}" />    
        <!-- Name of test (without .jmx) -->    
        <property name="test" value="Test"/>    
        <!-- 生成的报告的前缀-->      
        <property name="ReportName" value="TestReport" />    
        <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}${time}.jtl" />    
        <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}${time}.html" />    
            
        <path id="xslt.classpath">    
            <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>    
            <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>    
        </path>    
            
        <target name="run">    
            <antcall target="test" />    
            <antcall target="report" />    
        </target>    
            
        <target name="test">    
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />    
            
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">    
                 <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->    
                <testplans dir="${scriptdirectory}" includes="${test}.jmx" />    
            </jmeter>    
        </target>    
                
        <target name="report">    
            <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>    
            <xslt classpathref="xslt.classpath"    
                  force="true"    
                  in="${jmeter.result.jtlName}"    
                  out="${jmeter.result.htmlName}"    
                  style="${basedirectory}/jmeter.results.shanhe.me.xsl">    
                  <param name="dateReport" expression="${report.datestamp}"/>    
            </xslt>    
            <copy todir="${jmeter.result.html.dir}">    
                <fileset dir="${jmeter.home}/extras">    
                    <include name="collapse.png" />    
                    <include name="expand.png" />    
                </fileset>    
            </copy>    
        </target>    
            
    </project>

上面代码中,同一个测试脚本生成的报告名一样,假如想每次报告名都不一样,可以把报告名后缀前加上${time}

五、配置测试报告样式

之前配置的样式,报告中只有错误多少,没有错误的详细信息,因此把样式进行优化

1、下载样式文件jmeter.results.shanhe.me.xsl ,并把该文件放入正确目录下,我这里是放到我创建的report目录下
未修改jmeter.properties时的测试报告.png
2、修改jmeter.properties文件如下部分,我这里基本上都修改成true,这样执行完脚本后就会保存这些结果到.jtl文件里面
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
3、修改build.xml文件,样式改为style="${basedirectory}/jmeter.results.shanhe.me.xsl">
4、执行脚本,生成报告如下,这个报告展示的内容比之前的报告多了很多,定位问题也比较方便直观
修改配置后最终的测试报告.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容