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 Filebuild.xml 文件路径

8、在 Post-build Actions 添加 Publish HTML reports 组件,并进行配置;HTML directory to archivejmeter/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 serverSMTP Port

​ 添加发送邮件的邮箱,填写 Kind、Scope、Username、PasswordKind、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 接口测试持续集成的更多相关文章

  1. Jmeter+Ant+Jenkins搭建持续集成的接口测试框架

    https://my.oschina.net/hellotest/blog/516079 摘要: 一个系统通常有多个接口,软件的生命周期中,我们会不断的去优化老的接口和开发新的接口,那么在这个过程中, ...

  2. Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)

    转自:http://my.oschina.net/hellotest/blog/516079 目录[-] 一.Jmeter+ant 二.Jmeter+ant+Jenkins 三.Tomcat配置虚拟目 ...

  3. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  4. JMeter+ant+jenkins自动化持续集成

    一.ant安装配置 1.官网下载地址:http://ant.apache.org/bindownload.cgi 对应的操作系统选择对应的版本下载,本文以windows为列,下载后解压到本地 2.设置 ...

  5. JMETER+JENKINS接口测试持续集成

    FIDDER+ANT+JENKINS+JMETER+SVN+tomcat接口测试集成 操作流程: 1.测试人员通过FIDDER过滤抓取接口调用信息,导出成jmx文件.(jmeter支持命令行方式调用j ...

  6. Jmeter接口测试自动化(jmeter+ant+jenkins持续集成)

    Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具.将这三者结合起来可以搭建一套webservice接口测试的持续构建环境.   1. ...

  7. 【此处有干货~】jmeter+ant+jenkins持续集成配置及过程中问题解决思路

    本人是一枚工作近三年的小测试,大学正好专业为软件测试,在工作中用到最多的是功能测试.接口测试.压力测试.偶尔会涉及到性能测试......(小白,很多观念技术跟大佬差距太大,勿喷) 在接口测试过程当中, ...

  8. Jmeter+Ant+Jenkins持续集成方案改进

    关于Jmeter+Ant+Jenkins如何搭建持续集成环境,网上资料一大把,就不多说了,本文主要谈一下期间的问题及扩展该持续集成方案. 其实核心的流程不复杂,Jenkins管理构建项目,Ant配置脚 ...

  9. Meter - 连续性能测试 - JMeter + ANT + Jenkins集成 - 第1部分

    目标: 创建包含性能测试流程的持续交付管道, 以尽早检测任何与性能相关的问题. 通常,全面的性能测试将在分段/预生产环境中完成,该环境可能与您的生产环境相同.在完成QA功能/回归验证后,将代码推送到分 ...

  10. 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 ...

随机推荐

  1. QEMU固件模拟技术-stm32仿真分析及IRQ仿真实践

    文章首发于 https://forum.butian.net/share/124 概述 上一篇文件介绍了luaqemu的实现,也提到luaqemu并没有对中断相关api进行封装,本节主要基于stm32 ...

  2. 关于Git上传项目报错error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

    问题 今天用Git上传项目时,最后一步push时命令行报错 error: RPC failed; HTTP 413 curl 22 The requested URL returned error: ...

  3. 我的世界服务器搭建教程 兼容Paper核心 兼容Spigot核心

    注意:该服务器是基于Paper1.20.1核心进行初始化,默认兼容spigot插件. 一.配置JDK环境 二. 服务器核心配置 三.服务器启动 四.加入游戏 现在搭建出来的是原版生存服务器,接下来需要 ...

  4. git学习之git reset命令

    Git版本恢复命令 reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和inde ...

  5. Qt/C++音视频开发50-不同ffmpeg版本之间的差异处理

    一.前言 ffmpeg的版本众多,从2010年开始计算的项目的话,基本上还在使用的有ffmpeg2/3/4/5/6,最近几年版本彪的比较厉害,直接4/5/6,大版本之间接口有一些变化,特别是一些废弃接 ...

  6. Matlab R2009b 版 license 到期问题

    打开2009b Matlab,反复提示需要激活,是lisense到期了,到期时间2017年11月11日.解决方法: 将以下内容替换 Matlab 安装路径下 license/*.lic 文件中的所有内 ...

  7. Java实现拍卖系统详解

    一.项目背景与需求分析 随着互联网技术的飞速发展,电子商务领域不断拓展新的业务模式,在线拍卖系统应运而生并逐渐成为一种重要的商业交易方式.在当今数字化的时代,人们越来越倾向于通过网络平台进行各类交易活 ...

  8. IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

    1.引言 在<IM消息ID技术专题>系列文章的前几篇中,我们已经深切体会到消息ID在分布式IM聊天系统中的重要性以及技术实现难度,各种消息ID生成算法及实现虽然各有优势,但受制于具体的应用 ...

  9. Kubernetes-介绍

    1. kubernetes 是什么? Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化. Kubernetes 这个名字源于希腊语,意为 ...

  10. 高通QCM6125平台TZ释放后使用GPIO导致死机问题

    问题的根本原因是TZ侧没有释放完整. 释放QUPV3_0_SE0从TZ到AP侧,QUPv3的固件也从SPI改成了UART 2线. 但是出现了一个很奇怪的问题,AP侧可以使用UART,但是一旦使用GPI ...