JMeter + ant + Jenkins 接口测试持续集成
JMeter + ant + Jenkins 接口测试持续集成
操作系统:linux
环境变量 | 地址 |
---|---|
jdk11 | https://www.oracle.com/java/technologies/downloads/ |
jmeter 5.6 | https://jmeter.apache.org/ |
ant 1.10.14 | https://ant.apache.org/bindownload.cgi |
Jenkins 2.414.1 | https://mirrors.jenkins.io/ |
一、安装jdk并配置环境变量
1、下载jdk安装包
2、将安装包移动到Linxu系统中
3、解压jdk压缩包
进入到压缩包所在目录下,使用tar命令,将压缩包进行解压。
tar -zxvf jdk-8u281-linux-x64.tar.gz
4、将jdk添加到环境变量
vim /etc/profile
# 在最后插入
# java环境变量
export JAVA_HOME=/usr/local/java/jdk-11.0.21
export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib:$CLASSPATH
# PATH
export PATH=$PATH:${JAVA_HOME}/bin
5、保存并退出,刷新环境变量
source /etc/profile
6、验证jdk环境变量
二、安装jmeter并配置环境变量
1、下载jmeter安装包
2、将安装包移动到Linux中
3、解压jmeter压缩包
进入到压缩包所在目录下,使用tar命令,将压缩包进行解压。
tar -zxvf apache-jmeter-5.6.2.tgz
4、将jmeter添加到环境变量
vim /etc/profile
# jmeter环境变量
export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.6.2
# PATH
export PATH=$PATH:${JAVA_HOME}/bin:${JMETER_HOME}/bin
5、保存并退出,刷新环境变量
source /etc/profile
6、验证jmeter环境变量
jmeter -v
三、安装ant并配置环境变量
1、下载ant安装包
2、将安装包移动到Linux中
3、解压ant压缩包
tar -zxvf apache-ant-1.10.14-bin.tar.gz
4、将ant添加到环境变量
vim /etc/profile
# ant环境变量
export ANT_HOME=/usr/local/ant/apache-ant-1.10.14
# PATH
export PATH=$PATH:${JAVA_HOME}/bin:${JMETER_HOME}/bin:${ANT_HOME}/bin
5、保存并退出,刷新环境变量
source /etc/profile
6、验证ant环境变量
四、测试JMeter + ant
1、将 jmeter / extras 目录下的 ant-jmeter-1.1.1.jar 复制到 ant/ lib 目录中
cp /usr/local/jmeter/apache-jmeter-5.6.2/extras/ant-jmeter-1.1.1.jar /usr/local/ant/apache-ant-1.10.14/lib/
2、在 jmeter 目录下,创建 report 文件夹,并在其下创建 html、jtl、run 文件夹
在jmeter目录下,使用mkdir命令创建目录。
mkdir report
mkdir report/html
mkdir report/jtl
mkdir report/run
3、在 jmeter / report 目录下,创建 build.xml ,并填充以下代码
在jmeter / report 目录下,使用vim命令创建/编辑 bulid.xml
vim build.xml
在build.xml,输入以下代码,并根据实际情况,调整目录信息
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run">
<tstamp>
<format property="time" pattern="yyyyMMddhhmmss" />
</tstamp>
<!-- 需要修改成自己jmeter的目录路径 -->
<property name="jmeter.home" value="/usr/local/jmeter/apache-jmeter-5.6.2" />
<property name="report.title" value="TestReport" />
<!-- 需要修改成自己jmeter/report/jtl的目录路径 -->
<property name="jmeter.result.jtl.dir" value="/usr/local/jmeter/apache-jmeter-5.6.2/report/jtl" />
<!-- 需要修改成自己jmeter/report/html的目录路径 -->
<property name="jmeter.result.html.dir" value="/usr/local/jmeter/apache-jmeter-5.6.2/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}.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}">
<!-- 需要修改成自己jmeter/report/run的目录路径 -->
<testplans dir="/usr/local/jmeter/apache-jmeter-5.6.2/report/run" 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>
<!-- style需要修改成自己模板的路径,默认为jmeter自带的模板,也可以使用 -->
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.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>
3、配置jmeter.properties文档
将 jmeter.save.saveservice.output_format=csv 改成 xml,并取消注释
将如下的 jmeter.save.saveservice 值全部改为 true,并取消注释
jmeter.save.saveservice.output_format=xml
...
...
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=true
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=true
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
4、验证
将在Windows系统调试好的脚本文件,移动到Linux系统的 jmeter / report / run 目录下。
然后在 jmeter / report 目录下,执行命令
ant run
执行完成后,jtl 目录中生成jmeter脚本的运行结果,html 目录中生成其html格式的报告。
五、安装Jenkins
1、下载Jenkins
2、将Jenkins移入服务器,并创建 nohup.out 文件
vim nohup.out
3、启动Jenkins服务
在 jenkins 目录下,执行命令启动jenkins服务,使用的端口可自定义修改。
nohup java -jar jenkins.war --httpPort=8089 &
4、页面访问Jenkins
在浏览器中输入地址:服务器ip + 端口,打开Jenkins网页。
若没有打开说明该端口的防火墙没有关闭,关闭防火墙后,即可打开网页。
5、服务器中查看密钥
密钥有两种方法可以查看。
①在 jenkins 目录下的 nohup.out 文件中查看
在 jenkins 目录执行vim命令查看 nohup.out 文件,向下翻查找密钥。
vim nohup.out
②根据 Jenkins 页面提示,在 /root/.jenkins/secrets 目录下的 initialAdminPassword 文件中查看
vim /root/.jenkins/secrets/initialAdminPassword
6、创建用户
在网页中输入密钥后,Jenkins会让你选择是否安装插件,建议选择安装推荐的插件。若服务器在非互联网环境,安装插件需要从互联网环境下载后,传入服务器,再进行安装。
插件安装完毕后,就可以创建用户了。
创建完成后,就可以使用Jenkins了。
六、Jmeter + ant + Jenkins 持续集成
1、点击 Mange Jenkins -> Plugins 进入插件管理页面
2、点击 Available plugins,在检索框输入:HTML,勾选 HTML Publisher 插件,点击右侧的 Install 安装插件
3、安装成功后,返回首页点击 New Item (因为我把翻译插件关闭了,所以显示为纯英文)
4、创建 Freestyle project
5、勾选 Discard old builds ,配置参数。若不勾选,build数量会越来越多,占用内存
6、勾选 Build periodically ,配置参数。图中参数为:每日11点(服务器时间),进行build
7、在 Build Steps 添加 Invoke Ant 组件,并进行配置;Build File 为 build.xml 文件路径
8、在 Post-build Actions 添加 Publish HTML reports 组件,并进行配置;HTML directory to archive 为 jmeter/report/html 目录,Index page[s] 为 执行 build.xml 生成的html文件名
9、在 Post-build Actions 添加 Editable Email Notification 组件,并进行配置;Project Recipient List 为接收邮件的邮箱,多个邮箱使用英文逗号进行分割,Content Type 选择 HTML (text/html),Default Subject 为邮件标题,Default Content 为邮件内容。
<div>${FILE, path="/usr/local/jmeter/apache-jmeter-5.6.2/report/html/TestReport.html"}</div>
其中 path 为执行 build.xml 生成的html文件路径
点击该组件下方的 Advanced Settings ,将 Triggers 下的 Failure - Any 删除,因为该策略只会在build失败时才会发送邮件。我们再在 Triggers 下添加新的策略 Always ,该策略在执行完build后总是会发送邮件,配置如下。
配置完成后,点击 Save 保存即可。
10、接下来,点击首页的 Manage Jenkins -> System 进入到系统设置页面
11、设置 Extended E-mail Notification 信息,下面以QQ邮箱为例。
SMTP server:smtp.qq.com
SMTP Port:465
如果使用其他邮箱,可自行查询该邮箱的 SMTP server 和 SMTP Port
添加发送邮件的邮箱,填写 Kind、Scope、Username、Password。Kind、Scope 如下图选择,Username 为邮箱的地址,Password 指的不是邮箱密码,而是邮箱的授权码。
获取邮箱授权码,以QQ邮箱为例:
①登录QQ邮箱网页版
②点击 设置 -> 账号
③下滑找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
④点击 开启服务,因为我已经开启过了,所以显示的是管理服务。当然开启过了也可以点击下方的 继续获取授权码 来获得新的授权码
填写完成后,在 Credentials 选择刚刚填写的邮箱,并勾选 Use SSL
Default user e-mail suffix:@qq.com
Charset:UTF-8
Default Content Type:HTML(text/html)
Default Reclplents:默认收件人邮箱
12、接下来配置 E-mail Notification
SMTP server:smtp.qq.com
Default user e-mail suffix -> 用户名:邮箱
Default user e-mail suffix -> 密码:邮箱授权码
SMTP Port:465
Charset:UTF-8
最后我们来测试一下,能否正常发送邮件给他人。
勾选 Test configuration by sending test e-mail ,填写接收测试邮件的邮箱,点击 Test configuration
可以看到邮件已成功发送。我们点击 Save 保存即可。
实现最终效果:
①根据设置的 Build periodically,即每日11点启动任务,从而达到使用 jmeter 执行 jmeter/report/run 目录下的所有 jmx 文件,并生成测试结果存于 jmeter/report/jtl 目录中,最后发送html格式测试结果邮件到接收邮箱中。
②除了通过 Build periodically 设置的每日启动,也可以手动启动,可以点击任务的 build 按钮启动
JMeter + ant + Jenkins 接口测试持续集成的更多相关文章
- Jmeter+Ant+Jenkins搭建持续集成的接口测试框架
https://my.oschina.net/hellotest/blog/516079 摘要: 一个系统通常有多个接口,软件的生命周期中,我们会不断的去优化老的接口和开发新的接口,那么在这个过程中, ...
- Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)
转自:http://my.oschina.net/hellotest/blog/516079 目录[-] 一.Jmeter+ant 二.Jmeter+ant+Jenkins 三.Tomcat配置虚拟目 ...
- 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试
微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...
- JMeter+ant+jenkins自动化持续集成
一.ant安装配置 1.官网下载地址:http://ant.apache.org/bindownload.cgi 对应的操作系统选择对应的版本下载,本文以windows为列,下载后解压到本地 2.设置 ...
- JMETER+JENKINS接口测试持续集成
FIDDER+ANT+JENKINS+JMETER+SVN+tomcat接口测试集成 操作流程: 1.测试人员通过FIDDER过滤抓取接口调用信息,导出成jmx文件.(jmeter支持命令行方式调用j ...
- Jmeter接口测试自动化(jmeter+ant+jenkins持续集成)
Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具.将这三者结合起来可以搭建一套webservice接口测试的持续构建环境. 1. ...
- 【此处有干货~】jmeter+ant+jenkins持续集成配置及过程中问题解决思路
本人是一枚工作近三年的小测试,大学正好专业为软件测试,在工作中用到最多的是功能测试.接口测试.压力测试.偶尔会涉及到性能测试......(小白,很多观念技术跟大佬差距太大,勿喷) 在接口测试过程当中, ...
- Jmeter+Ant+Jenkins持续集成方案改进
关于Jmeter+Ant+Jenkins如何搭建持续集成环境,网上资料一大把,就不多说了,本文主要谈一下期间的问题及扩展该持续集成方案. 其实核心的流程不复杂,Jenkins管理构建项目,Ant配置脚 ...
- Meter - 连续性能测试 - JMeter + ANT + Jenkins集成 - 第1部分
目标: 创建包含性能测试流程的持续交付管道, 以尽早检测任何与性能相关的问题. 通常,全面的性能测试将在分段/预生产环境中完成,该环境可能与您的生产环境相同.在完成QA功能/回归验证后,将代码推送到分 ...
- jmeter+ant+jenkins实现自动化接口测试
一.安装前准备 1.JDK:jdk-8u121-windows-x64 2.jmeter工具:apache-jmeter-2.13 3.ANT工具:apache-ant-1.9.7-bin 4.jen ...
随机推荐
- flask+APScheduler定时任务的使用
目录 APScheduler简介 安装 add_job参数详解 结合flask使用 用uwsgi启动项目 用gunicorn+gevent启动flask项目 APScheduler简介 APSched ...
- golang之泛型
Go 1.18版本增加了对泛型的支持,泛型也是自 Go 语言开源以来所做的最大改变. 泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型.ーー换句话 ...
- mongo迁移工具之mongo-shake
最近需要进行MongoDB中数据迁移,之前使用过阿里系的redisShake感觉不错, 这次打算使用mongoShake来进行同步 github: https://github.com/alibaba ...
- pycharm之debugger使用
1.未打断点运程序,输出全部结果 2.打断点后,点击debug,代码执行到断点前停止(断点所在行不执行) 3.step over,是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子 ...
- manim边做边学--图形的创建与销毁
上一篇介绍了文字相关的创建和销毁动画,本篇介绍几个用于几何图形的创建和销毁动画效果类. Create:用于在场景中生成一个完整的Mobject(可渲染对象) Uncreate:是Create的逆操作, ...
- Element Plus组件库el-select组件多选回显踩坑
前情 公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vu ...
- Flutter 错误The argument type 'Color' can't be assigned to the parameter type 'MaterialStateProperty<Color?>?'.dart(argument_type_not_assignable)
MaterialStateProperty<Color?>?和Color 当为TextButton等button添加颜色时,使用ButtonStyle为其添加颜色 TextButton( ...
- HTMLreport报告(五) -- 测试报告中添加截图
一.需求痛点 HTMLreport报告没有截图 二.实现办法 1.思路:使用viewer.js图片查看器,用cdn:后端部分用 unittest.test_result中的内容 2.实现步骤 1)vi ...
- FormData接口调用
JAVA调用方式 JAVA原生实现 package com.hisense.demo.utils; import java.io.*; import java.net.HttpURLConnectio ...
- Python多分类Logistic回归详解与实践
在机器学习中,Logistic回归是一种基本但非常有效的分类算法.它不仅可以用于二分类问题,还可以扩展应用于多分类问题.本文将详细介绍如何使用Python实现一个多分类的Logistic回归模型,并给 ...