基于jmeter,jenkins,ANT接口,性能测试框架
背景
公司计划推接口和性能测试,搭建这个性能测试框架框架是希望能够让每个人(开发人员、测试人员)都能快速的进行性能,接口测试,而不需要关注性能测试环境搭建过程。因为,往往配置一个性能环境可能需要很长的时间。
该框架搭建 基于Jmeter和Jenkins搭建性能测试框架 和 jenkins+ANT+jmeter 接口测试环境搭建 演化过来。
Jmeter GUI上制定测试计划
Thread Group
用函数__P()设置属性名和默认值的形式设置这三个属性,以方便在使用no-GUI模式启动Jmeter进行测试时,使用–jmeterproperty选项对属性值进行赋值。
CSV Data Set Config
并发数配置
HTTP Request
HTTP Request关联
jenkins调用command non-GUI方式执行Jmeter
set RUNFOLDER=%WORKSPACE% set JMETERBIN=D:\Devlop\jmeter\apache-jmeter-2.7\bin set JMETERLIB=D:\Devlop\jmeter\apache-jmeter-2.7\lib set RESULTJTL=%RUNFOLDER%\result.jtl set TRANSJTL=$RUNFOLDER\trans.jtl set EXCELJTL=$RUNFOLDER\execl.jtl del -f -s -Q %RUNFOLDER%\*.jtl del -f -s -Q %RUNFOLDER%\Report\* jmeter -n -t jmx\*.jmx -l result.jtl --jmeterproperty threadCount=%CONCURRENCY% --jmeterproperty LoopCount=%LOOPCOUNT% --jmeterproperty RampUp=%RAMPUP% --jmeterproperty jenkins_workspace=%WORKSPACE%
调用ANT生成html报告
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="D:\Devlop\jmeter\apache-jmeter-2.7" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value=".\" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value=".\Report" /> <!-- 生成的报告的前缀 --> <property name="ReportName" value="result" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <!-- Diffrent version of Jmeter has its own ant-jmeter.jar,Please input the right versioin --> <path id="ant.jmeter.classpath"> <pathelement location="${jmeter-home}/extras/ant-jmeter-1.1.1.jar" /> </path> <!-- use this config to generate html report; if not, may not display Min/Max Time in html--> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.1.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.1.jar"/> </path> <target name="report"> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" classpathref="xslt.classpath" style="${jmeter.home}/extras/jmeter-results-detail-report_30.xsl.xml" /> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.html.dir}\TestLog.html" classpathref="xslt.classpath" style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl" /> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
推送HTML报告
jenkins执行界面
文件jmx和build只需提交默认提供文件
最终使用者只需要使用excel修改csv用例数据就可以进行进口和性能数据的采集
执行结果
执行结果同前面两个方案一致,不再补充