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 按钮启动
标签:save,jmeter,ant,Jenkins,JMeter,true,saveservice From: https://www.cnblogs.com/test-gang/p/18181447