Jmeter + Ant + Jenkins构建接口自动化测试平台—windows环境
一、环境准备
1. 安装JDK
(一) 下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(二) 配置环境变量:
- Windows10 此电脑>>>右键菜单>>>【属性】>>>【高级系统设置】>>>【环境变量】
- 打开的环境变量弹窗的“系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_201
备注:变量值填写JDK的安装位置
- “系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; - “系统变量”>>>Path【编辑】>>>【新建】>>>输入变量值>>>【确定】
变量值:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
- Win+R >>>运行中输入cmd >>>输入javac >>>输入Java –version
2. 安装Jmeter
(一) 下载地址:
http://jmeter.apache.org/download_jmeter.cgi
(二) 配置环境变量:
-
windows环境 此电脑(我的电脑)>>>右键菜单>>>【属性】>>>【高级系统设置】>>>【环境变量】
-
打开的环境变量弹窗的“系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:JMETER_HOME
变量值:G:\apache-jmeter-5.0
备注:变量值填写JMETER的安装位置,免安装版的就是其解压位置 -
“系统变量”>>>CLASSPATH【编辑】>>>输入变量值>>>【确定】
变量值:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar; -
“系统变量”>>>Path【编辑】>>>【新建】>>>输入变量值>>>【确定】
变量值:%JMETER_HOME%\bin
-
Win+R >>>运行中输入cmd >>>输入jmeter
3. 安装Ant
(一) 下载地址:
https://ant.apache.org/bindownload.cgi
(二) 配置环境变量:
- windows环境 此电脑(我的电脑)>>>右键菜单>>>【属性】>>>【高级系统设置】>>>【环境变量】
- 打开的环境变量弹窗的“系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:ANT_HOME
变量值:G:\apache-ant-1.10.7
备注:变量值填写ANT的安装位置,免安装版的就是其解压位置 - “系统变量”>>>CLASSPATH【编辑】>>>输入变量值>>>【确定】
变量值:%ANT_HOME%\lib;
- “系统变量”>>>Path【编辑】>>>【新建】>>>输入变量值>>>【确定】
变量值:%ANT_HOME%\bin
- Win+R >>>运行中输入cmd >>>输入ant 再次输入 ant –version
4. 安装Tomcat配置Jenkins
(一) 下载地址:
A. Tomcat下载地址:
https://tomcat.apache.org/download-90.cgi
B. Jenkins下载地址:
https://jenkins.io/zh/download/
(二) 配置环境变量:
- windows环境 此电脑(我的电脑)>>>右键菜单>>>【属性】>>>【高级系统设置】>>>【环境变量】
- 打开的环境变量弹窗的“系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:CATALINA_BASE
变量值:G:\apache-tomcat-9.0.26
备注:变量值填写Tomcat的安装位置,免安装版的就是其解压位置
- 打开的环境变量弹窗的“系统变量”>>>【新建】>>>输入变量名、变量值>>>【确定】
变量名:CATALINA_HOME
变量值:G:\apache-tomcat-9.0.26
备注:变量值填写Tomcat的安装位置,免安装版的就是其解压位置
- “系统变量”>>>Path【编辑】>>>输入变量值>>>【确定】
变量值:
%CATALINA_HOME%\bin
%CATALINA_HOME%\lib
- Win+R >>>运行中输入cmd >>>输入startup
或者 进入Tomcat安装目录bin下,运行startup.bat
- 测试Tomcat是否启动成功:
在地址栏输入http://locathost:8080/
- 关闭Tomcat,进入Tomcat安装目录bin下,运行shutdown.bat
补充:
遇到的小坑,Tomcat日志的中文显示乱码问题。
解决办法:修改注册表(win+R,输入regedit)
1、 进入HKEY_CURRENT_USER\Console\Tomcat,如果没有Tomcat则新建。按照下图新建CodePage项,输入值fde9(十六进制)
备注:参见 内码表;一般默认936(十进制)
2、 进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor,按照下图新建CodePage项,输入值fde9(十六进制)
3、 设置cmd属性,进入
HKEY_CURRENT_USER\Console%SystemRoot%_system32_cmd.exe,新建CodePage项,输入值fde9(十六进制)
(三) 配置Jenkins
- 下载的jenkins.war放在tomcat中webapps目录下
- 在tomcat中bin下双击startup.bat启动tomcat; 浏览器中输入:http://localhost:8080/jenkins/ 进入jenkins (备注:如8080端口被占用,请自行百度修改端口)
- Jenkins默认会生成一个admin账户以及密码,按照上图中提示的位置找到密码贴入文本框并继续。新手选择默认安装推荐的插件。按照下图一步步配置完成后,重新启动Tomcat,浏览器输入 http://localhost:8080/jenkins/
二、 Ant配置Jmeter并输出html报告
用ant构建命令来调动执行jmeter接口测试,并生成测试报告
- 将jmeter extras目录下的ant-jmeter-1.1.1.jar文件拷贝到ant安装目录的lib文件夹中
- 在Jmeter安装目录下,新建TestCase文件夹(也可在其他目录下创建,该文件夹下必须放置接口测试的*.jmx文件,配置build.xml中.jmx的路径时,需指向具体的.jmx文件放置路径)
- 在TestCase文件夹下,新建report文件夹(也可在其他目录下创建,配置build.xml中html、jtl的路径时,需指向具体的html、jtl文件放置的路径)
- 新建Ant的build.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMdd" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="G:\apache-jmeter-5.0" />
<property name="report.title" value="接口运行报告"/>
<!-- QQ邮箱配置参数-->
<property name="mail_host" value="smtp.qq.com"/>
<property name="mail_port" value="465"/>
<property name="username" value="XXXXXX@qq.com"/>
<property name="password" value="XXXXXX"/> <!--- QQ邮箱开通smtp服务时,提供的授权码 -->
<property name="mail_from" value="XXXXXX@qq.com"/> <!-- 发件人 -->
<property name="mail_to" value="XXXXXX"/> <!-- 收件人 -->
<property name="mailsubject" value="jmeter_${report.title}${time}"/> <!-- 邮件主题 -->
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="G:\apache-jmeter-5.0\TestCase\report\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="G:\apache-jmeter-5.0\TestCase\report\html" />
<!-- jmeter生成txt格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="G:\apache-jmeter-5.0\TestCase\report\txt" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<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" />
<!-- 输出生成的报告名称和存放路径-->
<echo message="${jmeter.result.jtlName}"/>
<echo message="${jmeter.result.htmlName}"/>
<echo message="${jmeter.result.html.dir}"/>
<!--定义次build.xml要执行全部的任务-->
<target name="run">
<antcall target="test" />
<antcall target="report" />
<antcall target="mail" />
</target>
<!--加载jar包,解决显示时间问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<!--第一个任务,执行test-->
<target name="test">
<echo>执行接口自动化测试用例</echo>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="G:\apache-jmeter-5.0\TestCase" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!--执行第二个任务,生成报告-->
<target name="report">
<echo>生成接口自动化测试报告</echo>
<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="titlereport" expression="${report.title}"/>
<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>
<!--执行第三个任务,发送邮件-->
<target name="mail">
<echo>发送测试报告</echo>
<loadfile property="output" srcFile="${jmeter.result.htmlName}" encoding="UTF-8"/>
<mail mailhost="${mail_host}" ssl="true" user="${username}" password="${password}" mailport="${mail_port}" subject="${mailsubject}" tolist="${mail_to}" messagemimetype="text/html" >
<from address="${mail_from}" />
<attachments>
<fileset dir="${jmeter.result.html.dir}">
<include name="${ReportName}${time}.html" />
<include name="*.png" />
</fileset>
</attachments>
<!-- 这是用Ant自动发送的测试报告-->
<message>
${
output}
<br />
This email was sent automatically by ANT. <br />
Please check the automation test report. <br />
If there are any questions, please contact with XXX Thank you! <br /><br />
</message>
</mail>
</target>
<