Jmeter集成到Jenkins
Jmeter集成到Jenkins. 1
软件下载... 4
一:环境配置... 4
1.JDK安装:... 4
配置JDK环境变量... 5
2.Jmeter安装:... 5
配置jmeter环境变量... 6
3.安装Ant 7
配置Ant环境变量... 7
4.Git安装:... 8
配置git环境变量... 9
5.Github设置... 11
创建github账号... 11
创建组织... 12
创建Repositories. 14
二:Eclipse操作使用github. 16
1.Eclipse连接github. 16
1.1创建本地Branch. 20
1.2 Eclipse创建项目... 21
1.3 Share项目... 22
1.4上传项目到github. 25
1.5提交文件... 25
三:Jenkins相关配置... 30
1.安装Jenkins: 30
2.Jenkins插件安装:... 32
3.Jenkins系统配置... 34
3.1 Jenkins邮件配置... 34
3.2 Git工具配置... 35
3.3 Github相关帐户配置... 36
4.配置测试项目... 37
4.1新建测试项目... 37
4.2项目源码管理配置... 38
4.3项目构建配置... 38
4.4测试报告插件配置... 39
4.5邮件发送配置... 41
四:Jmeter构建说明... 43
1.目录详解... 43
2.build说明详解... 44
3.执行jenkins之前动作... 46
软件下载:
JDK http://java.sun.com/javase/downloads/index.jsp
jmeter http://jmeter.apache.org/download_jmeter.cgi
搭建环境:
JDK:jdk1.7.0_79
Ant:apache-ant-1.9.7
Jmeter: apache-jmeter-2.13
Jenkins: jenkins-1.651.1
Git tool
Github管理资源库
以上安装包以及相关工具下载地址:
Jenkins_Jmeter_Ant_免费高速下载|百度网盘-分享无限制
一:环境配置
1.JDK安装:
1.双击JDK安装包,选择安装路径(为了节省C盘系统盘空间,不建议选择默认路径。本人所有相关软件全部安装在 D:\Progrom Files目录下,例如Jdk安装在D:\Progrom Files\Java\jdk1.7.0_79路径下);
配置JDK环境变量:
1)系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(本人是 D:\Progrom Files\Java\jdk1.7.0_79);
2)系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
3)系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)
系统变量配置完毕
4)检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)
若如图所示 显示版本信息 则说明安装和配置成功。
2.Jmeter安装:
- 解压apache-jmeter-2.13.zip到D:\Progrom Files目录下。
2.Jmeter插件的安装。解压JMeterPlugins-Extras-1.3.0.zip、JMeterPlugins-Standard-1.3.0.zip,将对应ext目录下的文件拷贝到D:\Progrom Files\apache-jmeter-2.13\lib\ext目录下
配置jmeter环境变量:
- 设置环境变量,新建系统变量在变量名中输入:JMETER_HOME,变量值中输入:D:\Progrom Files\apache-jmeter-2.13,点击确定即可。
- 在环境变量CLASSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar; 在环境变量Path中添加%JMETER_HOME%\bin
- 检验是否配置成功 运行cmd 输入 jmeter -v (jmeter和 -v 之间有空格)
- 若如图所示 显示版本信息 则说明安装和配置成功。
3.安装Ant
- 解压apache-ant-1.9.7-bin.zip到D:\Progrom Files目录下;
配置Ant环境变量
- 新建以下环境变量:
ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此为你的ANT安装路径;
设置完成后,点击"确认"来保存。
在环境变量PATH的最后面添加一下内容:
;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。
3.进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了.
- 本地调试使用ant构建运行Jmeter,并且生成jtl、Html报告;
- jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改jmeter.properties文件 jmeter.save.saveservice.output_format=xml;
- 将apache-jmeter-2.13\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.9.7\lib目录下;
- 在\apache-jmeter-2.13\extras目录下打开CMD,运行"ant.bat -file build.xml -Dtest=Test" . 查看\apache-jmeter-2.13\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功。注意:Test.jmx是默认存在的Sample脚本文件。
若构建失败,请分析cmd打印的日志消息,定位问题;
3. 记得把jmeter的extras目录下的ant-jmeter-1.1.1.jar拷贝到ant的lib目录下
4.Git安装:
- 安装git
把git下载下来后直接安装运行就行。
配置git环境变量
添加path:例如:G:\git\Git\cmd
然后打开cmd,运行:git
5.Github设置
创建github就是为了使用jmeter相关东西,像构建里面的path就可以配置成相对路径
创建github账号
账号创建按照github要求创建
创建组织
- 登录github创建team,也可以创建,后边建项目时直接建在登录账号下,如果要对项目权限访问更细那就建议建一个
点击右上角的+,点击new organization创建一个组织机构名
创建Repositories
你可以选择公共的还是私有的
创建完成之后如下图
创建完成之后就可以连接到该库了,也可以把一些代码上传到这个上面,后面会把jmeter相关的传到这个上面
如图中的地址就是项目的地址,你可以在eclipse里面直接连接
二:Eclipse操作使用github
1.Eclipse连接github
可以在Eclipse中上传jmeter相关到github
首先需要安装github插件到Eclipse中,这个就不细说了,网上搜一下安装就行
- Eclipse连接到github
连接的URL\就是你刚才建好的项目的URL,直接复制就行,你复制后回到Eclipse页面后对应信息会自动填入,然后你输入帐户,密码就可以了,下一步直到完成
如上图,我的项目就是Autotest这个,如果新建的项目还没有上传任何东西时只有一个master分支。如下图
1.1创建本地Branch
先建一个本地仓库的branch,后面提交东西可以提交到这个分支上。创建好了之后切换到java窗口,新建一个项目
1.2 Eclipse创建项目
1.3 Share项目
完成项目创建之后,选中项目点击右键 ,有看到一个team的功能嘛,点击share project
1.4上传项目到github
然后把你下载下来的包含jmeter的那个project信息放进去,上传,鼠标右键点击team→commit,如果是新上传的,需要勾选,如果是更新什么的就只需要选中那些要更新的然后点击这个就行,会自动帮你勾选上的
这里操作上传之前一定要记得选择一个分支,也就是之前建立的那个branch
1.5提交文件
提交文件操作时,勾选要上传的文件,有全选和去掉全选按钮的,然后写上提交的备注信息
然后点击commit之后就可以看到branch有提交记录,然后这个才是提交到本地仓库,如果要提交到远程,则还需要操作一步
选择刚才提交上去信息的branch,比如我的是init-branch,右键选择pull branch
Heads后面那个是你要提交的分支名字
refs/heads/master
如图,这个就是提交成功以后的页面,然后可以到github上面看下你提交的东西是否上去了
如下图所示,就是我已经上传好的信息了
三:Jenkins相关配置
1.安装Jenkins:
- 安装的是jenkins-1.651.1.msi安装版,也可自行选择安装Jenkins其他版本;
- 双击jenkins.msi启动安装,安装目录选择D:\Progrom Files\Jenkins,然后启动成功。
- Jenkins服务默认端口为8080,如与其他服务冲突,可在..\Jenkins\jenkins.xml中修改默认端口,如我这里修改为--httpPort=7033;
- Jenkins服务默认是自动启动的,如果想修改为手动启动,请自行管理->服务,找到Jenkins服务,修改为手动启动即可。
- 打开Jenkins,首次进入会默认让你选择安装插件(此处如果完全不清楚自己需要什么插件,建议全选)。插件安装完成之后,需要设置登录用户,按照自己喜好设置即可。
- 这样jenkins就安装成功了。然后我们打开一个浏览器,输入localhost:8080(默认路径是这个,如果你修改了端口号,那就换成你改的端口号) 就会弹出jenkins的web界面。如下图:
3.进入Jenkins主页:(我本机的jenkins地址是:http://localhost:8090/)
2.Jenkins插件安装:
系统设置->管理插件->可选插件,搜索插件,安装插件;
1.Jmeter报告性能的插件(Performance plugin)
2.用作展示在jenkins的job的html报告插件(HTML Publisher plugin)
- git插件(Git plugin)
执行连接github资源库
- github插件(GitHub plugin)
注:另外一些其他用的插件,如果需要可以使用jenkins plugins里面的。
3.Jenkins系统配置
Jenkins系统配置以及工具配置
3.1 Jenkins邮件配置
(系统配置→系统设置)
如下图,配置邮件服务信息,用户名以及密码,SMTP端口,配置完成之后可以,点击“通过发送测试邮件测试配置”
点击测试邮件后如果看到如下图的信息,说明配置成功
3.2 Git工具配置
(系统配置→Global Tool Configuration)
- Ant,jdk,maven配置(有些可能用不到)
3.3 Github相关帐户配置
设置连接github的帐户,可以使用用户名和密码,id可以为空,添加后自动生成的
4.配置测试项目
4.1新建测试项目
a、在Jenkins首页左边 点击新建 -> 选择"构建一个自由风格的软件项目",输入Item名称(中英文不限,建议使用英文) –> 点击OK,进入你新建的测试项目的配置页面;
b、丢弃旧的构建:这里勾选上,为了避免多余的构建日志、临时文件占磁盘空间,需要定期的清除过期文件。例如这里选择保存3天之内的构建文件,最大保存N个构建项目的文件;
具体设置如下图所示:
4.2项目源码管理配置
源码管理,选择git
如图所示,填写源码地址,选择连接帐户,还有分支信息
4.3项目构建配置
jmeter -n -t Testcase/test.jmx -l JmeterResult/TestReport.jtl
这个是jmeter的执行命令,为了执行jmeter脚本生成jtl文件,用作转换成html用
项目配置步骤:
Ant Version:选择配置的ant的信息
Targets:配置build.xml中的target信息,比如reportfile
Build file:指定build文件的路径信息
4.4测试报告插件配置
配置Publish Performance test result report
首先设置要展示成jenkins这个插件的report的jtl信息,如下图
要展示的性能信息的一些配置参数
- 项目配置步骤
配置展示在jenkins的job的一个html信息
参数解释,网上搜到,可以看你用哪个
下面我解释一下常用的属性。
- ${FILE,path="PATH"} 包括指定文件(路径)的含量相对于工作空间根目录。
- path文件路径,注意:是工作区目录的相对路径。
- ${BUILD_NUMBER} 显示当前构建的编号。
- ${JOB_DESCRIPTION} 显示项目描述。
- ${SVN_REVISION} 显示svn版本号。还支持Subversion插件出口的SVN_REVISION_n版本。
- ${CAUSE} 显示谁、通过什么渠道触发这次构建。
- ${CHANGES } -显示上一次构建之后的变化。
- showPaths 如果为 true,显示提交修改后的地址。默认false。
- showDependencies 如果为true,显示项目构建依赖。默认为false
- format 遍历提交信息,一个包含%X的字符串,其中%a表示作者,%d表示日期,%m表示消息,%p表示路径,%r表示版本。注意,并不是所有的版本系统都支持%d和%r。如果指定showPaths将被忽略。默认“[%a] %m\\n”。
- pathFormat 一个包含“%p”的字符串,用来标示怎么打印路径。
- ${BUILD_ID}显示当前构建生成的ID。
- ${PROJECT_NAME} 显示项目的全名。(见AbstractProject.getFullDisplayName)
- ${PROJECT_DISPLAY_NAME} 显示项目的显示名称。(见AbstractProject.getDisplayName)
- ${SCRIPT} 从一个脚本生成自定义消息内容。自定义脚本应该放在"$JENKINS_HOME/email-templates"。当使用自定义脚本时会默认搜索$JENKINS_HOME/email-templatesdirectory目录。其他的目录将不会被搜索。
- script 当其使用的时候,仅仅只有最后一个值会被脚本使用(不能同时使用script和template)。
- template常规的simpletemplateengine格式模板。
- ${JENKINS_URL} 显示Jenkins服务器的url地址(你可以再系统配置页更改)。
- ${BUILD_LOG_MULTILINE_REGEX}按正则表达式匹配并显示构建日志。
- regex java.util.regex.Pattern 生成正则表达式匹配的构建日志。无默认值,可为空。
- maxMatches 匹配的最大数量。如果为0,将匹配所有。默认为0。
- showTruncatedLines 如果为true,包含[...truncated ### lines...]行。默认为true。
- substText 如果非空,就把这部分文字(而不是整行)插入该邮件。默认为空。
- escapeHtml 如果为true,格式化HTML。默认为false。
- matchedSegmentHtmlStyle 如果非空,输出HTML。匹配的行数将变为<b style=”your-style-value”> html escaped matched line </b>格式。默认为空。
- ${BUILD_LOG} 显示最终构建日志。
- maxLines 日志最多显示的行数,默认250行。
- escapeHtml 如果为true,格式化HTML。默认false。
- ${PROJECT_URL} 显示项目的URL地址。
- ${BUILD_STATUS} -显示当前构建的状态(失败、成功等等)
- ${BUILD_URL} -显示当前构建的URL地址。
- ${CHANGES_SINCE_LAST_SUCCESS} -显示上一次成功构建之后的变化。
- reverse在顶部标示新近的构建。默认false。
- format遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。
- showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。
- ${CHANGES_SINCE_LAST_UNSTABLE} -显示显示上一次不稳固或者成功的构建之后的变化。
- reverse在顶部标示新近的构建。默认false。
- format遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。
- showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。
- ${ENV} –显示一个环境变量。
- var– 显示该环境变量的名称。如果为空,显示所有,默认为空。
- ${FAILED_TESTS} -如果有失败的测试,显示这些失败的单元测试信息。
- ${JENKINS_URL} -显示Jenkins服务器的地址。(你能在“系统配置”页改变它)。
- ${HUDSON_URL} -不推荐,请使用$JENKINS_URL
- ${PROJECT_URL} -显示项目的URL。
- ${SVN_REVISION} -显示SVN的版本号。
- ${JELLY_SCRIPT} -从一个Jelly脚本模板中自定义消息内容。有两种模板可供配置:HTML和TEXT。你可以在$JENKINS_HOME/email-templates下自定义替换它。当使用自动义模板时,”template”参数的名称不包含“.jelly”。
- template模板名称,默认”html”。
- ${TEST_COUNTS} -显示测试的数量。
- var– 默认“total”。
- total -所有测试的数量。
- fail -失败测试的数量。
- skip -跳过测试的数量。
4.5邮件发送配置
配置构建后的结果信息要发送的邮件
- 项目配置步骤
Project Recipient List:收件人信息,如果有多个用;隔开 默认:$DEFAULT_RECIPIENTS
Project Reply-To List:回复列表,默认:$DEFAULT_REPLYTO
Content Type:邮件内容文本格式,如果要执行下面的脚本,则选择html
Default Subject:邮件主题,可以设置固定格式,也可以设置根据变量值设置,例如:构建通知:$PROJECT_NAME - Build # BUILD_NUMBER - $BUILD_STATUS!
Default Content:默认内容,不设置则默认:$DEFAULT_CONTENT
Pre-send Script:邮件发送前执行的脚本。
配置详看下图中,
邮件正文html代码:
<hr/>
<font size="4">
<font color="#FF0000">(本邮件是程序自动下发的,请勿回复!)</font><br/><hr/>
项目名称:$PROJECT_NAME<br/>
构建编号:$BUILD_NUMBER<br/>
构建状态:$BUILD_STATUS<br/>
触发原因:${CAUSE}<br/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
###单击可查看报告文件详情
运行结果:<a href="${BUILD_URL}../ws/TestReport.html">Report Detail>>></a><br/>
${FILE,path="./ws/TestReport.html"}<br/><hr/>
如果要配置邮件发送trigger信息,则可以设置这个
四:Jmeter构建说明
1.目录详解
Buldfile:build构建文件目录
ReportHtml:最终生成报告的目录,jenkins的job显示的html报告也会从这个目录读取
Testcase:jmeter脚本存放目录,就是jmx文件目录
bin/ReportHtml: build后生成的html存放目录。
bin/JmeterResult:执行jmeter脚本后生成的jtl文件的目录
2.build说明详解
(1)Property的定义,主要定一些目录信息,build文件中有详解
1. <!-- 需要改成自己workspace的 Jmeter 目录-->
2. <property name="jmeter.home" value="JmeterforJenkins/apache-jmeter-2.13" />
3. <!-- jmeter生成jtl格式的结果报告的路径-->
4. <property name="jmeter.result.jtl.dir" value="JmeterforJenkins/apache-jmeter-2.13/bin/JmeterResult" />
5. <!-- jmeter生成html格式的结果报告的路径-->
6. <property name="jmeter.result.html.dir" value="JmeterforJenkins/apache-jmeter-2.13/bin/ReportHtml" />
7. <!-- 生成的报告的前缀-->
8. <property name="ReportName" value="TestReport" />
9. <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />
10. <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />
11. <property name="jmeter.result.htmlTestName" value="${jmeter.result.html.dir}/${ReportName}_Detail.html" />
2.target信息主要定义写执行的动作
<target name="all">
<antcall target="test" />
<antcall target="report" />
<antcall target="zipfile" />
</target>
<target name="reportfile">
<antcall target="report" />
<antcall target="zipfile" />
</target>
这里有两个,一个是all的动作,包括执行test,生成report,打包成zip附件
一个是reportfile,包括生成report,打包成zip附件。
<xslt
classpathref="xslt.classpath"
force="true"
in="../../../${jmeter.result.jtlName}"
out="../../../${jmeter.result.htmlName}"
style="../../../${jmeter.home}/extras/jmeter-results-detail-report_30.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<xslt
classpathref="xslt.classpath"
force="true"
in="../../../${jmeter.result.jtlName}"
out="../../../${jmeter.result.htmlTestName}" style="../../../${jmeter.home}/extras/jmeter-results-detail-reprot-request.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
3.这两个xslt的动作主要是输入jtl文件,然后转成成html文件,如果是绝对路径那就直接可以写绝对路径,如果是相对路径的话则会取到当前所在路径加上定义的路径,所以input和out加了一些../的操作,这个主要就是返回上一级目录。
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="../../../${jmeter.result.html.dir}">
<fileset dir="../../../${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
<copy todir="../../../${jmeter.home}/ReportHtml">
<fileset dir="../../../${jmeter.result.html.dir}">
<include name="collapse.png" />
<include name="expand.png" />
<include name="*.html" />
<!--<include name="${ReportName}_test.html" /> -->
</fileset>
</copy>
4这个copy主要是因为report中有用到两个图片要从extras文件拷贝到report目录,还有做了report文件的拷贝,拷贝到外层一目录下
<target name="zipfile">
<zip destfile="../ReportHtml/JmeterReport.zip" basedir="../ReportHtml" includes="**/*.html **/*.png"/>
</target>
- 这个主要用作打包,把最终生成的report打包成附件邮件发送
- 这个build中用到了两个重要的文件xsl文件,这是两个生成report时要引用的一个报告样式文件
jmeter-results-detail-reprot-request.xsl
jmeter-results-detail-report_30.xsl
3.执行jenkins之前动作
在本地执行build文件看是否正常build,选择build.xml,右键run as
选择ant build动作
然后在打开页面的勾选“reportfile” 这个target动作,其他的不用选,然后执行
看到执行结果如果是success的话就可以在jenkins执行了