Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建
1. 安装Jmeter、jdk
Jmeter 3.3版本 :<http://note.youdao.com/noteshare?id=5e3fd287db24d08386207a7de22d2629&sub=D4C59A1418E643BEAD9D349C69398275>
jdk 1.8版本 :https://pan.baidu.com/s/1nv668Mt
3. 安装Jenkins
5. 建立build.xml
Jmeter 根目录创建一个demo文件夹,将build.xml和脚本放置在里面,并且需要配置下jmeter路径以及报告样式
<?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:\apache-jmeter-3.3" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.3\demo\report\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.3\demo\report\html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<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="D:\apache-jmeter-3.3\demo" 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-report-loadtest.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>
6. 运行jmx文件
① 通过fiddler抓包,创建jmx文件脚本,并调试成功,可以查看结果树数据
② 然后通过ant运行,查看结果 :cmd进入脚本目录,并执行ant

③ 执行结果显示:BUILD SUCCESSFUL 证明执行成功,进入report文件夹,查看HTML报告显示,如下:【报告的样式,取决于\apache-jmeter-3.3\extras\jmeter-results-detail-report_21.xsl 模板】

PS:问题解决
问题1: 执行ant时报错 “Error reading project file D:\apache-jmeter-3.3\demo\build.xml: 2 字节的 UTF-8序列的字节 2 无效。”

解决办法:build.xml中<?xml version="1.0" encoding="UTF-8"?>,UTF-8修改为UTF8;
7. 集成Jenkins
***安装Jenkins,控制台模式进入到Jenkins.war包所在目录,执行<java -jar Jenkins.war>命令,打开<http://10.10.31.6:8080/login>
【PS:Jenkins 通过命令行安装完之后,会在<C:\Users\XXXX\.jenkins>用户目录下生成.jenkins文件夹,里面包含配置文件等】


①第二次以后启动Jenkins
jenkins.war 已放置在tomcat\webapps文件夹下,进入bin目录,双击startup.bat【linux系统用startup.sh】



② 浏览器输入:http://localhost:8080/jenkins 【默认端口号为8080】,弹出配置页面或登录页面,证明Jenkins启动成功。

③ 创建一个项目。


⑤ 配置ant,增加build路径

⑥ 点击高级;Targets 输入“run”;Build File 输入“D:\apache-jmeter-3.3\demo\build.xml”【build.xml配置文件地址】,点击保存。

⑦ Jenkins 配置性能测试报告模板
a, 下载插件Public HTML reports
系统管理 ---> 管理插件 ---> 可选插件,输入 HTML Publisher 进行查询 ---> 并点击立即安装 ---> 安装完成

b, 配置报告
点击已创建的工程 ---> 进入配置页面 ---> 页面最下方,点击增加构建后操作步骤 ---> 点击Public HTML reports ---> 保存


8. Jenkins 构建任务
已创建任务中,点击立即构建

9. 查看构建结果,构建成功

10. 查看report,工程左侧,点击HTML Report 查看



11. 配置系统管理中邮件发送相关内容
① 安装邮件插件 (Extended E-mail Notification) 搜索 Email Extension。
② 系统管理 ---> 系统设置 --->Extended E-mail Notification 进行邮件发送的配置

③ 系统管理 ---> 系统设置 --->邮件通知 配置【与②配置类似】

④ 需要注意项

⑤ 测试发送邮件配置是否成功,显示“Email was successfully sent”,证明邮件发送配置成功

12. 设置job中,添加Email插件,给项目相关人员发送邮件通知
① 已创建任务 ---> 配置页面 ---> 构建后操作添加<Editable Email Notification>

② Advanced Settings 设置邮件接受人以及接受邮件场景,通过<add triggers> 进行添加。
Always

Success

【PS:接受邮件地址之间用逗号分隔,可在邮箱地址前加“cc”,直接抄送发邮件】
【问题汇总】
问题1:BUILD FAILED Error reading project file D:\apache-jmeter-3.3\demo\build.xml: 2 字节的 UTF-8 序列的字节 2 无效。
解决:build.xml 编码改为UTF8
问题2:BUILD FAILED D:\apache-jmeter-3.3\demo\build.xml:9: 在注释中找到无效的 XML 字符 (Unicode: 0xd9eb)。
解决:删除注释
问题3:BUILD FAILED “java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0 ”
D:\apache-jmeter-3.3\demo\build.xml:16: The following error occurred while executing this line:
D:\apache-jmeter-3.3\demo\build.xml:39: input file D:\apache-jmeter-3.3\demo\report\jtl\TestReport201806200210.jtl does not exist

解决:jdk版本与major.minor 版本对应 不一致造成的
major version : 52 对应的是jdk 1.8
配置Jenkins JAVA_HOME为jdk 1.8 即可解决
系统管理 --> 系统设置 --> 全局属性-Environment variables 配置键 为 “JAVA_HOME”,值为“C:\Program Files (x86)\Java\jdk1.8.0_144” --> 保存后重启Jenkins

附:其他minor.major 版本的对应关系,如下

问题4:报告格式显示异常
由于Jenkins安全默认将以下功能关闭:
1、javascript
2、html上的内置插件
3、内置css或从其它站的css
4、从其它站的图处
5、AJAX

解决:
临时解决方案:
① 在Jenkins 系统管理 ---> 脚本命令行中 输入 <System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")>

② 需要再次构建,查看新生成的report html,之前已生成的report仍然显示异常【重启Jenkins后需要重新执行此命令】
永久解决方案:
① 搜索安装<startup-trigger-plugin>和<Groovy>插件;
插件管理---> 可选插件 搜索“tartup Trigger”、“Groovy”并安装;
Startup Trigger:可实现在Jenkins节点(master/slave)启动时触发构建;
Groovy plugin:可实现直接执行Groovy代码。
② 配置方式如下:
- 新建一个job,该job专门用于Jenkins启动时执行的配置命令;
- 在build trigger 模块下,勾选 build when job nodes start;

- 在
Build模块下,Add build step->Execute system Groovy script,在Groovy Script中输入配置命令,System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")。
问题5:发送邮件配置完毕后,测试发送邮件时报错“553”

解决:由于认证错误,校验下服务器地址、端口号、邮件名及密码、系统管理员邮箱地址未设置【注意:必须设置"系统管理员邮件地址"】
问题6:发送邮件配置完毕后,测试发送邮件时报错“25”

解决:邮件通知设置中,不要勾选<使用SSL协议>,点击apply后,重新测试发送邮件,问题解决

问题7: 发送邮件配置完毕后,测试发送邮件时报错“535”

解决:检查邮箱地址及密码是否正确,重新输入邮件通知中邮箱密码,问题得到解决,提示“Email was successfully sent”
Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建的更多相关文章
- Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
一.安装说明 系统环境:CentOS release 6.4 JDK版本:jdk1.8.0_181 Jmeter版本:apache-jmeter-3.0 Ant版本:apache-ant-1.9.13 ...
- jmeter+ant+jenkins 接口自动化测试持续集成(送源码)
9.1 安装和介绍 JMeter 安装文件路径:https://pan.baidu.com/s/1kVJdnuv. JMeter 是轻量级的开源且稳定的自动化测试工具. 思路:在接口说明文档中整理 ...
- Linux下Jenkins+git+gradle持续集成环境搭建
Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集 发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文 一.项目介绍 和 linux ...
- jenkins+maven+svn 持续集成环境搭建
说明:部署传统的web应用(.war) 准备工作: (1) 系统环境:CentOS7 (2) 安装JDK:https://www.cnblogs.com/myitnews/p/11493847.htm ...
- Jenkins Robot framework 持续集成环境搭建
为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷保驾护航.这其中有个重要的工具Jenkins,同时也是应群里朋友们的要求,这次就来介绍一下RF如何快速便捷的结合Je ...
- jenkins+donet core持续集成环境搭建
一.Jenins+GitHub 参考 另外需要配置Global Tool Configuration 如果没有安装git,需下载安装,下载地址 二.jenkins发布donet core应用 1.配置 ...
- Jmeter+ant+Jenkins接口自动化框架搭建
摘自:https://testerhome.com/topics/13389 一.背景 上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- 用Jenkins构建Django持续集成环境
用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054
随机推荐
- python核心编程学习记录之数据库编程
- 关于并发,异步,非阻塞(python)疑惑的一些资料解答
从iterable/iterator到generator到coroutine理解python的迭代器: http://python.jobbole.com/81916/理解python的生成器: ht ...
- Nginx常用Rewrite(伪静态规则)WordPress/PHPCMS/ECSHOP/ShopEX/SaBlog/Discuz/DiscuzX/PHPWind/Typecho/DEDECMS
目前已收集Wordpress.Wordpress二级目录.PHPCMS.ECSHOP.ShopEX.SaBlog.Discuz.Discuz X.PHPWind.Typecho.DEDECMS: Wo ...
- 倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT-2 运行可执行文件
个人认为这条命令做的参数比较混乱,PATHSTR是指可执行文件路径+最终文件名,DIRNAME是指可执行文件路径,最后COMNDLINE可有可无,是指带参数运行启动的文件 测试可以正常运行 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件
TwinCAT提供了FB_FileRead等一系列读写文件的方法,本小程序演示的是多个贝福自带的FBD功能块连起来用的方法,跟前面讲的一样,建议在初始化的时候把所有FBD都复位,准备使用 真正的读 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_枚举
在Duts的文件夹上右击,可以声明一个枚举类型,按照格式填写所有类型(注意枚举的元素前面都是逗号,最后一个不需要符号) 在正常使用的时候,枚举的单词可以当全局变量来用 更多教学视频和资料下 ...
- 【转载】深入理解JVM性能调优
性能问题无非就这么几种:CPU.内存.磁盘IO.网络.那我们来逐一介绍以下相关的现象和一些可能出现的问题. 一.CPU过高. 查看CPU最简单的我们使用任务管理器查看,如下图所示,windows下使用 ...
- Linux经常使用命令(八) - touch
linux的touch命令不经常使用, 一般用来改动文件时间戳, 或者新建一个不存在的文件. 1. 命令格式: touch [选项] 文件 2. 命令參数: -a 仅仅更改存取时间. -c ...
- Android Shader 颜色、图像渲染 paint.setXfermode
Shader Shader是一个基类,表示在绘制期间颜色的水平跨度 它的子类被嵌入在Paint中使用,调用paint.setShader(shader). 除Bitmap外的其他对象,使用该Paint ...
- PIVOT 和 UPIVOT 的使用(行转列)
PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列 ...