jmeter 持续集成(Jenkins+Ant+Jmeter)
前言:
jmeter 是一个 java 开发的,apache 下的开源工具,常被用于做接口自动化和性能测试工具。因为他开源,入手也非常简单,所以越来越受测试人员青睐。
ant 也是用 Java 开发的,apache 下的一个将代码编译、测试、部署等联系在一起加以自动化的开源工具。深受 java 开发人员欢迎。
Jenkins 是一款开源的 CI/CD 软件,因为功能齐全,插件丰富,支持各种运行方式,使用也很简单,是持续集成方面的领导者。
这样一个组合,就能让测试人员把 jmeter 编写的接口测试脚本,通过 Jenkins 持续集成编辑、测试,查看测试结果报告。
环境配置
因为,jmeter、ant 都是 java 开发的,所以我们要有 java 运行环境安装 jre 或 jdk
一、安装与配置 jdk:
1、下载 jdk 或 jre 安装包
2、安装 jdk
3、打开系统环境变量,在系统变量中,
①、新增 JAVA_HOME 变量,路径为 jdk 安装路径,
②、再在 PATH 变量值中插入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
③、再在 CLASSPATH 变量值中插入%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
保存关闭环境变量窗口,在 dos 窗口中,输入 java -version, 如果返回了 java 的版 本,说明安装配置成功
二、安装 jmeter:
1、下载 jmeter 包
2、解压,进入解压路径的 .\bin 文件夹,双击 jmeter.bat文件(windows),即可启动 jmeter,编写接口测试脚本
3.ant 安装与配置
1、下载 ant 包,解压
2、打开系统环境变量,添加 ANT_HOME 为 ant 路径, 在$PATH 中添加%ANT_HOME%\bin
3、修改 jmeter 的 jmeter.properties jmeter.save.saveservice.output_format=xml
4、jmeter 的 extras 文件夹中的 ant-jmeter.***.jar 拷贝到 ant 的 lib 文件夹中 用于发 邮件
5、验证环境配置:运行 cmd,输入ant -version
6、修改 build.xml 文件 进入 jmeter 的 extras 文件夹,找到 build.xml 文件,修改该文件
修改后的build文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="ant-jmeter-test" default="all" basedir="."> 3 <tstamp> 4 <format property="time" pattern="yyyyMMddhhmm" /> 5 </tstamp> 6 <property name="encoding" value="UTF-8" /> 7 <!-- 需要改成自己本地的 Jmeter 目录--> 8 <property name="jmeter.home" value="D:\Program Files (x86)\apache-jmeter-3.3" /> 9 <property name="report.title" value="接口性能监控"/> 10 <!-- jmeter生成jtl格式的结果报告的路径--> 11 <property name="jmeter.result.jtl.dir" value="D:\Program Files (x86)\apache-jmeter-3.3\report\jtl" /> 12 <!-- jmeter生成html格式的结果报告的路径--> 13 <property name="jmeter.result.html.dir" value="D:\Program Files (x86)\apache-jmeter-3.3\report\html" /> 14 <!-- 生成的报告的前缀--> 15 <property name="ReportName" value="TestReport" /> 16 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 17 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 18 19 <target name="all"> 20 <antcall target="test" /> 21 <antcall target="report" /> 22 <antcall target="mail" /> 23 </target> 24 25 <target name="test"> 26 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 27 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 28 <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--> 29 <testplans dir="D:\Program Files (x86)\apache-jmeter-3.3\jmeter_scripts" includes="*.jmx" /> 30 31 <property name="jmeter.save.saveservice.output_format" value="xml"/> 32 </jmeter> 33 </target> 34 35 <path id="xslt.classpath"> 36 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 37 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 38 </path> 39 40 41 <target name="report"> 42 <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> 43 <xslt 44 classpathref="xslt.classpath" 45 force="true" 46 in="${jmeter.result.jtlName}" 47 out="${jmeter.result.htmlName}" 48 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> 49 50 <param name="showData" expression="${show-data}"/> 51 52 <param name="dateReport" expression="${report.datestamp}"/> 53 <param name="titleReport" expression="${report.title}:${report.datestamp}"/> 54 55 </xslt> 56 57 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 58 <copy todir="${jmeter.result.html.dir}"> 59 <fileset dir="${jmeter.home}/extras"> 60 <include name="collapse.png" /> 61 <include name="expand.png" /> 62 </fileset> 63 </copy> 64 </target> 65 <property name="mail_from" value="1054815898@qq.com" /> 66 <property name="password" value="grpmkerhjmtbbfae" /> 67 <!--mail_to:发送列表,多个之间逗号间隔 --> 68 69 <property name="mail_to" value="1054815898@qq.com" /> 70 <property name="mailport" value="465" /> 71 <!--邮箱需要开通smtp服务--> 72 <property name="mailhost" value="smtp.qq.com" /> 73 74 <target name="mail"> 75 76 <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" /> 77 <mail from="1054815898@qq.com" tolist="1054815898@qq.com" mailport="587" mailhost="smtp.qq.com" user="1054815898@qq.com" password="grpmkerhjmtbbfae" subject="TestReport" messagemimetype="text/html"> 78 <message> 79 本轮构建的结果如下: 80 ${report} 81 </message> 82 </mail> 83 <delete file="${jmeter.result.htmlName}" /> 84 </target> 85 </project>
注意:QQ邮箱的端口用587,不能使用465
四、安装 jenkins:
2种安装方式:1、war包安装 ;2、下载可执行文件msi安装
war包安装并启动jenkins服务:
--安装jdk1.8以上版本,并配置环境变量(将jdk的bin路径放在系统变量的PATH中,cmd中查看Java版本:java-version)
--将.jenkins放在C:\Users\Administrator目录下
--将jenkins.war包放在.jenkins下
--进入C:\Users\Administrator\.jenkins,在路径地址中输入cmd回车进入命令行
--启动war包:java -jar jenkins.war
--显示: Jenkins is fully up and running,表示成功。
浏览器访问:
--打开浏览器输入localhost:8080
注意:如果开启jenkins服务的时候,出现端口被占用,需要修改端口java -jar jenkins.war --httpPort =5678
--输入账户名、密码 (第一次启动在命令行日志中可查看初始密码)
修改初始密码:可在C:\Users\Administrator\.jenkins\users\admin_3084889522813644434\config.xml文件中修改密码
#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdS
安装插件并配置Ant
--登 录 jenkins-> 进 入 系 统 管 理 ->pluginManager 管 理 插 件 安 装 AntPlugin 和PerformancePlugin 确认是否已经安装
--系统管理-> GlobalTool Configuration 配置 Ant 路径
6、 新建一个任务, 选择 freestyle project