JMeter 接口自动化测试
简介
Jmeter+Ant+Jenkins组合搭建一套webservice接口测试的持续构建环境。同时都基于JAVA 需下载对应JDK
JDK安装与配制环境变量
Jmeter Ant Jenkins 都是基于java 而java允许环境为JDK
Ant只支持JDK8及JDK11(编写此文当时)
配置环境变量
创建系统变量JAVA_HOMDE
值 D:\JDK\jdk-11.0.7(JDK安装路径)
创建系统变量CLASSPATH
值 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
编辑变量Path
添加 %JAVA_HOME%\bin
进入系统 执行 java -version
快捷键“ win + R ” ,打开运行窗口,输入cmd,点击确定打开命令行窗口
Ant安装与配制环境变量
当前使用的ANT版本: apache-ant-1.10.8
下载地址 http://ant.apache.org/bindownload.cgi 下载后解压到指定位置即可
注意:环境配置中如果设置成:path:%ANT_HOME%\bin (为了方便在dos环境下操作)
结果环境配置不成功,需要把地址换成为 D:\apache-ant-1.10.3\bin
选择合适的Ant版本进行下载
配置环境变量
创建系统变量 ANT_HOME
值 D:\apache-ant-1.10.3
编辑 CLASSPATH
变量中添加: %ANT_HOME%\bin
进入系统 执行 ant -v
快捷键“ win + R ” ,打开运行窗口,输入cmd,点击确定打开命令行窗口
JMeter与Ant关联配制
准备目录结构
创建文件夹其包含一个JMeter脚本文件夹,一个测试报告文件夹,一个可执行文件
(本人把该文件夹放置在JMeter下)
配置 build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="_yyyy_MMdd_HHmmss" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录 修改-->
<property name="jmeter.home" value="D:\jmeter\apache-jmeter-5.1.1" />
<property name="report.title" value="接口测试"/>
<!-- jmeter生成jtl格式的结果报告的路径 修改-->
<property name="jmeter.result.jtl.dir" value="E:\uncleyong\JMeter_report" />
<!-- jmeter生成html格式的结果报告的路径 修改-->
<property name="jmeter.result.html.dir" value="E:\uncleyong\JMeter_report\html" />
<property name="detail" value="_detail" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="SmokeReport" />
<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:\uncleyong\JMeter_script" includes="*.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}"/>
</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-1.1.1.jar
将Jmeter extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到 Ant 安装目录下的 lib 文件夹中
配置jmeter.properties
配置jmeter报告输出格式为xml
在jmeter安装目录bin目录下jmeter.properties文件中修改 jmeter.save.saveservice.output_format=csv 为 jmeter.save.saveservice.output_format=xml 并去掉前面的注释符号 #
验证配置执行构建
快捷键“ win + R ” ,打开运行窗口,输入cmd,点击确定打开命令进入到 build.xml 所在目录
输入ant run ,执行测试
看到 BUILD SUCCESSFUL 则说明构建测试成功
Jenkins安装与配置
下载安装
地址:https://www.jenkins.io/
windows安装比较简单,双击下载的Jenkins安装包 Jenkins.msi ,进入安装模式,选择默认配置,一路next直至安装完成。
安装完成后直接打开浏览器,输入http://localhost:8080进行操作即可
插件下载
插件安装(已安装请忽略):
Ant 插件:Ant Plugin、Ant In Workspace
HTML测试报告插件:HTML Publisher Plugin、 Performance
环境配置
创建项目(自动测试配置)
-
创建项目
-
设置丢弃旧的构建
Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录,测试的项目越来越多,长期的构建,历史版本同样也越来越多。每编译执行一次,就会生成一个构建记录,预留的磁盘越来越满,有可能面临崩溃的风险。
-
构建触发器
每隔5分钟构建一次 H/5 * * * *
每两小时构建一次 H H/2 * * *
每天中午12点定时构建一次 H 12 * * **
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时45分钟,从上午9:45开始,每天下午3:45结束 45 9-16/2 * * 1-5
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
H H(9-16)/2 * * 1-5
-
配置构建
-
设置构建后操作
-
自动发送邮件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本邮件由系统自动发出,无需回复!执行人:陈枫<br/>
以下为 ${PROJECT_NAME } 项目构建信息</br>
<td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建状态: ${BUILD_STATUS}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建URL: <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>测试报告: <a href="${PROJECT_URL}HTML_20Report">${PROJECT_URL}HTML_20Report</a></li>
</ul>
<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>
<h4><font color="#0B610B">最近提交(#${GIT_REVISION})</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
</td>
</tr>
</table>
</body>
</html>
测试集成
控制台输出 BUILD SUCCESSFUL 构建成功