Jmeter主要进行压力测试,但是也可进行接口测试。我目前只接触到接口测试,在此就只介绍接口测试的相关内容。
一、安装JDK
Jmeter是基于Java的测试工具,ant也是基于java的,所以在安装这两个之前,需要先安装JDK,我下载的是1.8版本的,安装JDK后需要配置环境变量。因为此前已经安装好了JDK,所以这边就不放JDK安装过程(自行查找其他博文)。
JDK安装完成后,打开CMD,输入java -version查询JDK的版本。
出现Java版本则说明配置成功
二、安装Jmeter
2.1 下载安装包
此处给出下载官网链接:
Jmeter下载链接(可直接点击)
/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-/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下载地址(可直接点击)
/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,如果侵权记得联系我删除。)(/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运行后生成的测试报告如下,这个报告显示信息较全: