Jmeter主要进行压力测试,但是也可进行接口测试。我目前只接触到接口测试,在此就只介绍接口测试的相关内容。
一、安装JDK
Jmeter是基于Java的测试工具,ant也是基于java的,所以在安装这两个之前,需要先安装JDK,我下载的是1.8版本的,安装JDK后需要配置环境变量。因为此前已经安装好了JDK,所以这边就不放JDK安装过程(自行查找其他博文)。
JDK安装完成后,打开CMD,输入java -version查询JDK的版本。
出现Java版本则说明配置成功
二、安装Jmeter
2.1 下载安装包
此处给出下载官网链接:
Jmeter下载链接(可直接点击)
http://jmeter.apache.org/download_jmeter.cgi
.tgz对应的为linux环境的下载版本。.zip的为Windows的下载版本。
(我是windows)选择zip压缩包文件,下载到本地目录并直接进行解压缩。
2.2 配置环境变量
“计算机”右击“属性”。
选择“高级系统设置”打开如图所示界面,选择“高级”-“环境变量”,进行环境变量的配置。
新建系统变量,JMETER_HOME,变量值填写Jmeter的安装路径。(根据自己实际安装路径进行填写)
打开环境变量path,将Jmeter安装路径/bin加入path中。(如果直接通过bin目录执行jmeter.bat,则不需要配置环境变量)。除了直接路径,也可以使用%JMETER_HOME%\bin来进行配置path。
2.3 安装验证
设置完成后打开CMD,输入jmeter -v得到如下所示结果则配置成功。(如果未配置环境变量,则此处Jmeter语句不会正常执行)。
PS:在这边提醒一下,JDK的path我放在了最开头,如果我把JDK的path放在后面,则我的Jmeter会报错,可能是因为我电脑曾经安装过两个版本的JDK。
打开Jmeter安装路径,打开bin目录,在bin目录下找到jmeter.bat并进行执行。
(此处注意,如果直接通过bin目录执行jmeter.bat,则不需要配置环境变量)
继续等待。(这个命令窗口不可操作,且当前Jmeter运行时不可操作。)
出现这个界面则Jmeter正式安装完成。
2.4 插件安装
plugins-manager是Jmeter的插件管理器,避免手动安装插件的繁琐,可以安装一下。
安装插件链接
插件安装链接(可直接点击)
https://jmeter-plugins.org/install/Install/
把下载好的jar包放在Jmeter路径下的/lib/ext目录下。
2.5 一些其他问题
2.5.1 语言切换
一般觉得英文不习惯的话,可以进入options下选择语言进行切换成简体中文,但是此操作只有当次有效,下一次打开Jmeter还是会变成英文。
一劳永逸的方法:
打开jmeter安装路径的bin目录,找到jmeter.properties文件,修改语言为zh_CN并且将#去掉
2.5.2 解决乱码
这边扩展一下知识,如果不更改一些属性的话,则Jmeter查看报告时可能出现乱码,所以接下来修改一下Jmeter的默认编码。
打开bin目录,找到jmeter.properties文件。
编辑该属性文件,找到sampler的编码设置代码,修改编码为“UTF-8”并去掉注释符号#,保存设置并重启Jmeter即可。
三、安装ant
3.1 安装包下载
ant下载地址(可直接点击)
http://ant.apache.org/bindownload.cgi
下载zip文件并进行解压缩(我把下载文件放在了和Jmeter同一个路径下)
3.2 配置环境变量
设置ant环境变量(此处为我的安装路径)
ANT_HOME=E:\Jmeter\apache-ant-1.10.9;
CLASSPATH=E:\Jmeter\apache-ant-1.10.9;
Path=E:\Jmeter\apache-ant-1.10.9\bin;
(也可以Path=%ANT_HOME%\bin;)
3.3 安装验证
在CMD下输入ant后,显示build.xml does not exist!则表明成功(因为此时还没有配置build.xml文件)。随后用ant -version可用来验证版本。
3.4 ant配置Jmeter
用ant构建命令来调动执行jmeter接口测试,并生成测试报告。
3.4.1 配置库文件
将Jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝到ant安装目录的lib目录下。
3.4.2 构建配置脚本,配置ant的编译文件build.xml
在Jmeter目录下新建一个文件夹TestSuite(名字随意,但后面需要用到),在TestSuite下新建文件夹命名为report用于后续放测试报告。
将Jmeter extras目录下的build.xml文件复制一份到TestSuite中并修改文档中内容。
按实际情况修改如下文档(可全部复制过去,再修改相应部分内容即可):
<?xml version="1.0" encoding="GB2312"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="MM-dd-hh" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="E:\Jmeter\apache-jmeter-5.3" />
<property name="report.title" value="测试报告"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="E:\Jmeter\apache-jmeter-5.3\TestSuite\report" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="E:\Jmeter\apache-jmeter-5.3\TestSuite\report" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="html测试报告" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<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="E:\Jmeter\apache-jmeter-5.3\TestSuite" includes="test.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<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}"/>
<param name="titleReport" expression="${report.title}:${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>
提出几个容易错误的地方:
- 开头处encoding="GB2312"不能改成UTF-8格式,会报错。
- 可以选择给生成的测试报告加上执行时间,只需要在生成的报告名称后面加上${time}(上面代码已经包括,只需了解,不要额外添加)。
<tstamp>
<format property="time" pattern="MM-dd-hh" />
</tstamp>
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
3.4.3 配置Jmeter.properties文档
找到jmeter.properties文档,在jmeter/bin目录下,打开该文档并进行编辑,修改jmeter输出报告格式为xml:
3.4.4 验证配置,执行构建测试
将之前的Jmeter的脚本保存,并将build.xml配置文件放在与测试脚本相同的目录下,我的目录如下:
3.4.5 执行测试
在CMD中通过cd 命令进入build.xml所在目录,输入ant 并回车,执行测试。
3.4.6 查看测试报告
在报告输出路径下查看是否有jtl和hmtl结果报告,存放路径在build文档中有涉及。
打开html文档,测试结果展示了执行的用例名称,成功率,用例执行时间等结果参数。
3.4.7 其他问题解决方法
测试报告中三个指标都为NaN,解决方法为,从Jmeter的lib包下把xalan-2.7.2.jar 和serializer-2.7.2.jar拷贝到ant的lib包下面。
至此,Jmeter+ant的集成步骤已经完毕,还有Jenkins部分我还需要再学习。以后再更。
3.5 测试报告优化
正常情况下,自带的测试报告模板显示不完备,在这边提供一下别人开发的xsl文件。下面提供我下载的这个文件。()
下载链接:jmeter.results.shanhe.me.xsl
(应该是免费的,我设置0,如果侵权记得联系我删除。)(https://download.youkuaiyun.com/download/Penguin_zlh/13111052)
将下载的jmeter.results.shanhe.me.xsl文件放在Jmeter下的extras文件夹下。
在build.xml文件下,修改执行的模板路径,将jmeter-results-detail-report_21.xsl改为jmeter.results.shanhe.me.xsl
ant运行后生成的测试报告如下,这个报告显示信息较全: