一,组件介绍
- jmeter
jmerter编写接口测试用例 - ANT
编写ANT脚本缺省为<build.xml文件>用来执行接口测试用例,并生成测试报告 - jenkins
jenkins执行ANT脚本,并展示生成的测试报告
二,环境准备
- ANT安装
-
ANT环境配置(windows)
ANT_HOME C:/apache-ant-1.10.5 path C:/apache-ant-1.10.5/bin classpath C:/apache-ant-1.10.5/lib
cmd输入: ant -version
出现以下样式说明配置成功
Apache Ant(TM) version 1.10.5 compiled on July 10 2018
- jmeter安装
-
jdk安装(常规组件安装不赘述)
点击下载jdkcmd输入: java -version
出现类似样式配置成功:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
-
jmeter安装
点击下载jmeter -
解压配置环境变量
新建变量名:
JMETER_HOME
变量值:
D:\jmeter\apache-jmeter-4.0 (根据自己安装目录)
变量名:
Path
变量值:
;%JMETER_HOME%\bin;
变量名:
CLASSPATH
变量值:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
-
启动jmeter
jmeter安装目录中的bin目录下jmeter.bat
双击启动
-
- jenkins安装(此账号置顶博客有详细说明)
三,组件配置
- ANT和jmeter关联
-
jmeter的extras目录下
ant-jmeter-1.1.1.jar
文件复制到ANT的lib目录下 -
jmeter配置文件修改:
修改jmeter的bin目录下的jmeter.properties
文件中jmeter.save.saveservice.output_format=csv
修改为:
jmeter.save.saveservice.output_format=xml
以下列修改为TRUE:
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 Only available with HttpClient4 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 Only available with HttpClient4 jmeter.save.saveservice.sent_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
-
- 创建build.xml文件放到ANT目录下作为ANT启动脚本
注:html/jtl文件生成目录要配置到jenkins相对工作空间!
类似这种格式:F:\jenkins\workspace\test
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\jmeter\apache-jmeter-4.0" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.dir" value="F:\jenkins\workspace\InterfaceTestCase\Report" />
<property name="jmeter.detail_result.dir" value="F:\jenkins\workspace\InterfaceTestCase\DetailReport" />
<!-- 生成的报告的前缀-->
<property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${jtl_Report}.jtl" />
<!-- 生成整体的聚合报告-->
<property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${time}.html" />
<!-- 生成单个接口的详细报告-->
<property name="jmeter.result.htmlName-detail" value="${jmeter.detail_result.dir}/${time}.html" />
<target name="run">
<echo message="start..."/>
<antcall target="clean" />
<antcall target="test" />
<antcall target="report" />
<antcall target="report_detail" />
</target>
<target name="clean">
<mkdir dir="F:\jenkins\workspace\InterfaceTestCase\Report" />
<mkdir dir="F:\jenkins\workspace\InterfaceTestCase\DetailReport" />
</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:\jmeter\apache-jmeter-4.0\ant\xmlcase" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!-- 生成整体的聚合报告-->
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /><!-- 生成整体的聚合报告的xsl文件-->
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.jpg" />
<include name="expand.jpg" />
</fileset>
</copy>
</target>
<!-- 生成单个接口的详细报告-->
<target name="report_detail">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName-detail}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" /><!-- 生成单个接口的详细报告的xsl文件-->
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.jpg" />
<include name="expand.jpg" />
</fileset>
</copy>
</target>
</project>
- 运行build.xml文件
cmd到build.xml文件目录下ANT运行
D:\jmeter\apache-jmeter-4.0\ant>dir
2019/04/11 16:45 3,477 build.xml
D:\jmeter\apache-jmeter-4.0\ant>ant
生成如下文件表示成功:
report:
[xslt] Processing F:\jenkins\workspace\InterfaceTestCase\Report\${jt
l_Report}.jtl to F:\jenkins\workspace\InterfaceTestCase\Report\2019041210
07.html
[xslt] Loading stylesheet D:\jmeter\apache-jmeter-4.0\extras\jmeter-results
-detail-report_21.xsl
report_detail:
[xslt] Processing F:\jenkins\workspace\InterfaceTestCase\Report\${jt
l_Report}.jtl to F:\jenkins\workspace\InterfaceTestCase\DetailReport\2019
04121007.html
[xslt] Loading stylesheet D:\jmeter\apache-jmeter-4.0\extras\jmeter.results
.shanhe.me.xsl
- jmeter-results-detail-report_21.xsl格式的html文件用来展示整体case运行
- jmeter.results.shanhe.me.xsl格式的html文件用来展示具体请求响应
- 配置jenkins
-
新建一个工程
-
安装如下插件
Ant Plugin Performance plugin HTML Publisher plugin
-
-
进行如下配置
构建配置Invoke AntAnt Version : 选择Ant Build File : 添加build路径
- 构建后操作Publish HTML reports
-
reports
HTML directory to archive :配置html报告路径 Index page[s] :*.html Index page title[s] (Optional) :*.html Report title :HTML Report
-
-
构建后操作添加Publish Performance test result report
Source data files (autodetects format): 配置jtl文件路径
- 配置完毕构建一发
构建历史可以看到,经过二个小时20遍才构建成功,难度不大过程略繁琐,不过还是因人而异,本人略菜,233
- jenkins展示测试报告
jenkins等于帮我们完成了build文件的运行及测试报告的展示,经过上述构建,我们再进行接口测试只需要进行接口用例的编写,然后点击jenkins构建就ok了