2019.11.27
今天开始搭建集成环境
需要ant+jenkins
先安装ant:
官网下载地址:https://ant.apache.org/bindownload.cgi
之后跳转到压缩包下载页面
解压之后,在Windows中配置环境变量
进入cmd命令行窗口,
执行如下命令:
ant -version,显示版本说明配置成功了
没有jdk的需要安装jdk:
2.1、下载安装包(我使用的是jdk1.8版本,自行下载)
2.2、配置环境变量
JAVA_HOME 为 C:\Program Files (x86)\Java\jdk1.8.0_171 (注意:java我是默认装的C盘)
CLASSPATH为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
PATH为 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
2.3、安装验证
在命令窗口中输入java -version 回车,能出现java版本则说明配置成功
接下来介绍jmeter与ant的整合:
Ant配置Jmeter:用ant构建命令来调动执行jmeter接口测试,并生成测试报告:
1)配置库文件
1.将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
这一步操作使Ant运行时能够找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本
2)配置jmeter.propertise文档
2.修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
这一步操作使Jmeter报告输出文件格式为xml
大概在488行
3)配置ant的编译文件build.xml
新建的txt文件,并将此文件改名为build.xml,修改文档里的内容
<?xml version="1.0" encoding="UTF-8"?>
<project name="基线" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="basedirectory" value="D:\SoftWare\apache-jmeter-5.1.1\extras" />
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\SoftWare\apache-jmeter-5.1.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\SoftWare\apache-jmeter-5.1.1\bin\test\jmeter_report\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\SoftWare\apache-jmeter-5.1.1\bin\test\jmeter_report\html" />
<!-- 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}/${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${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="D:\SoftWare\apache-jmeter-5.1.1\bin\test" includes="基线.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="${jmeter.home}/extras/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>
用Ant执行jmeter脚本
之后执行jmeter脚本,执行脚本是在ant的bin目录下执行:
进入命令行界面, 输入命令ant敲回车,运行结束会有build successful的提示
ant工具主要是根据build.xml文件来进行工作的,官方给出的默认文件在Jmeter的安装目录下extras文件夹中。
构建时,ant执行的是该目录下Test.jmx脚本,执行完毕后把输出的报告Test.jtl文件转化为Test.html文件
说明:
build.xml中style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl"指的是测试报告采用的样式。读者可以在jmeter安装目录下extras文件夹里看到前缀类似jmeter-results-report的文件,不妨挨个替换进style的值,执行完测试脚本后看一下输出的测试报告样式。
2-15记录:
参考博客:
执行ant后出现的报错:
解决办法:
1.在配置java环境时一般都将D:/jdk6/bin目录直接加入环境变量就可以了,这对java编译环境已经可以满足要求。但ant要用到tools.jar,而该文件在D:/jdk6/lib目录下,ant怎么才能找到该文件呢。经过摸索,原来问题出在JAVA_HOME这个变量名字上(在这之前都是直接设置,不用JAVA_HOME)。右击我的电脑->高级->新建用户变量:名字输入JAVA_HOME,值输入D:/jdk6。其他配置都不用改变,问题即可解决。
2.将“C:/Program Files/Java/jdk1.6.0_16/lib”目录下的tools.jar文件拷贝到“C:/Program Files/Java/jre6/lib”目录下,重新运行命令ant,运行正常,问题解决。
这样就不会有找不到jar包的报错了
但是执行脚本的时候又报错了:
解决办法:
说明build.xml文件中的内容可能不规范
这种异常是XML没有以<?xml version="1.0" encoding="UTF-8"?> 开头,也就是说第一个字符必须是<?xml......
需要 规范的XML格式:
前面不能空格。
2-16今天又换了一个build.xml
执行后不报前面的错了,又有新问题了:
报错信息:
用记事本打开xml文件,另存为 编码 选择 UTF-8,保存替换掉之前的文件,解决问题
继续报错:
经过以上重重报错,终于成功了,看看成功的界面:
然后在创建html的目录查看报告:
靠谱参考文档:
https://www.jianshu.com/p/92a04e8eb29b
build.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="basedirectory" value="D:\SoftWare\apache-jmeter-5.1.1\extras" />
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\SoftWare\apache-jmeter-5.1.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\SoftWare\apache-jmeter-5.1.1\bin\test\jmeter_report\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\SoftWare\apache-jmeter-5.1.1\bin\test\jmeter_report\html" />
<!-- 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}/${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${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="D:\SoftWare\apache-jmeter-5.1.1\bin\test" includes="ant.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="${jmeter.home}/extras/jmeter-results-detail-report_21.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>
由于上面的报告太简约,所以以下介绍详细的报告:
1.下载优化模板 jmeter-results-shanhe-me.xsl,拷贝到jmeter的extras目录中
下载地址:jmeter.results.shanhe.me.xsl
2.设置测试输出报告要输出的内容:同样在jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true→保存
修改jmeter.properties:
3.设置build文件的报告模板为优化后的模板jmeter-results-shanhe-me.xsl
4.再次用ant构建测试,查看优化后的测试报告
在这里可以看到报告中的request和response两项没有数据。修改jmeter/bin目录下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