整体流程:jenkins 立即构建--->ant build.xml--->run --->test 任务--->report---->mail--->查看邮件
一、基础准备
---------------------------------------------------------------------------------------------------------------------------------------
【jmeter】
步骤:
1、下载安装jmeter,建议版本5.0.0以上;
2、默认熟悉jmeter的使用,此处不再赘述;
---------------------------------------------------------------------------------------------------------------------------------------
【ant】
步骤:
1、下载安装ant,版本建议1.10以下;我装的是ant版本是1.9.14;
2、查看安装成功:
1)dos命令输入:ant -v
2)若显示出版本号则安装成功;
3、配置环境变量(如图):
---------------------------------------------------------------------------------------------------------------------------------------------
【jenkins】
步骤:
1、下载jenkins,并安装;
2、配置jenkins:
1)jenkins默认端口是:8080,如果需要修改端口号,打开jenkins目录下jenkins.xml文件,修改httpPort=8080 的值,修改后重启jenkins生效;
(此文件中也可以修改所分配内存和超时时间,如图:)
2)打开:http://localhost:8080/login
3) 需要先登录,如图:(这个密码在jenkins安装目录下secrets文件夹下initialAdmainPassword文件中,拷贝出密码进行登录)
4)安装推荐的插件
5)创建管理员账户,保存;
3、启动jenkins:
方式一:(前提是已经安装了jdk并且版本高于1.8)
1)通过cmd命令窗口,切换到jenkins.war所在的文件路径;
2)输入命令: java -jar jenkins.war
方式二:
1) 创建一个run.bat批量执行脚本文件,放到D:Jenkins目录下,文件内容如下:
echo "Jenkins CI automation testing" -----输出
java -jar "D:Jenkinsjenkins.war" -----目录路径
pause ------继续
二、jmeter脚本+ant执行生成报告
【步骤】
1、jmeter.properties配置
1)字符集 uft-8 GBK zh_CN
2) 压力测试如果多台测试机,可以配置分布式(适用于仅有一台服务器资源不够,每个线程都会占用内存和CPU)
分布式默认端口是1099,如果当前服务器为A:192.168.50.11 B:192.168.50.12,(配置到下图红框的地方)
3)生成的报告是html形式,jmeter.save.saveservice.output_format=csv修改为jmeter.save.saveservice.output_format=xml(默认是注释掉的,需要解除注释),修改后保存,重启jmeter生效;
2、jemter +ant 配置
1)在jmeter的extras目录下,把ant-jmeter-1.1.1.jar文件复制到ant的lib目录下;
2)ant构建build.xml文件 (代码如下)
<?xml version="1.0" encoding="UTF8"?> <project name="Jmeter-xntestcase" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmmss"/> </tstamp> <!-- 发送给哪些人--> <property name="mail_to" value="xxxxxx@163.com"/> <!-- 抄送给哪些人,多个用逗号隔开/--> <property name="mail_cc" value="xxxx@xx.com,xxxx@xx.com"/> <property name="report.title" value="自动化接口测试报告"/> <!-- jmeter生成jtl格式的结果报告的路径--> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="C:jmeterapache-jmeter-5.1.1"/> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="${jmeter.home}API_TEST eportjtl"/> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="${jmeter.home}API_TEST eportReport"/> <!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${time}.jtl"/> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${time}.html"/> <!--定义每次build.xml要执行全部的任务--> <target name="run"> <antcall target="test"/> <antcall target="report"/> <antcall target="mail" /> </target> <!--执行第一个任务 执行test--> <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="${jmeter.home}API_TESTjiaobenauthen" includes="*.jmx"/> <testplans dir="${jmeter.home}API_TESTjiaobencollectionmessage" includes="*.jmx"/> <testplans dir="${jmeter.home}API_TESTjiaobencollectionfile" includes="*.jmx"/> <testplans dir="${jmeter.home}API_TESTjiaobendistributiongeneral" includes="*.jmx"/> <testplans dir="${jmeter.home}API_TESTjiaobendistributionannotation" includes="*.jmx"/> <testplans dir="${jmeter.home}API_TESTjiaobenmap" 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"> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/test4.xsl"/> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png"/> <include name="expand.png"/> </fileset> </copy> </target> <!--执行第三个任务,发送邮件--> <target name="mail"> <!--读取输出的控制台日志文件并写入邮件正文--> <loadfile property="output" srcFile="${jmeter.result.htmlName}" encoding="UTF-8"/> <!-- 此处配置SMTP服务器 POP3授权码 发送邮箱地址 端口 发送邮箱主题--> <mail tolist="${mail_to}" mailhost="smtp.163.com" mailport="25" user="xxxx@163.com" password="xxxxx" subject="jmeter 测试报告" messagemimetype="text/html"> <from address="xxxx@163.com" /> <fileset dir="${jmeter.result.html.dir}"> <include name="report.html"/> </fileset> <message> 这是用Ant+jmeter+jenkins自动发送的测试报告 ${output} </message> </mail> </target> </project>
3)cd 到该文件所在的目录,输入ant,回车;若构建成功会提示:BUILD SUCCESSFUL
工作原理:
调用jmx,执行完成后会生成两份报告,一个jtl,一个html (自动化脚本执行完成,生成报告),生成的报告看success rate这个字段就可以了;
4)若是报错:ant Fail to send email:javax.mail.internet.MimeMessage
解决方法:(下载以下几个包到ant/lib目录下)
jar包下载地址:https://i-beta.cnblogs.com/files
注意点:统计出来的结果如果需要累加,则生成报告的地址中直接指定报告名称,否则用时间戳来区分,如下代码为执行一次计算一次结果:
【示例】
<!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${time}.jtl"/> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${time}.html"/>
三、jenkins+ant+jmeter实现自动构建
1、登录jenkins;
2、新建一个job,选择自由风格的项目;
3、构建触发器选择:如下图
4、配置构建触发器:
此处也可以用windows命令或shell命令来执行:
【windows命令执行】——提示:如果是部署在公司的jenkins上,jmeter+ant+git的环境需要部署在虚拟机上,可以在jenkins上添加一个节点,建立连接后就可以调通;
cd 到脚本所在的目录
ant
若配置的是时间戳获取生成报告名称,则构建脚本为:
cd C:\jmeter\apache-jmeter-5.1.1\API_TEST\report\Report
del /s /q /f *.*
cd C:\jmeter\apache-jmeter-5.1.1\API_TEST\report\jtl
del /s /q /f *.*
cd C:\jmeter\apache-jmeter-5.1.1\API_TEST
ant
5、安装jmeter插件
步骤:
进入系统管理—管理插件—可选插件,安装下面两个插件:
1)Performance plugin
2) HTML Publisher plugin
注意:如果装不上,就使用下载后安装的方式,地址:https://i-beta.cnblogs.com/files
6、配置—构建触发器—增加构建
图1
图2
图3
7、jenkins 添加邮件发送功能
步骤:
安装两个插件 :Email Ext Recipients Column 和 Email Extension Template,安装完成后 重启生效;
8、配置IMAP SMTP服务
步骤:
打开邮箱,设置,找到POP IMAP SMTP设置的地方,开启,获取授权码;
9、jenkins配置邮件通知
步骤:
全局设置,邮件通知:
图1:
图2:
10、定时构建触发器(每日23点执行)
11、配置邮件服务
步骤:
1)将jmeter的lib目录中的mail.jar和javax.activation-1.2.0复制到ant的lib目录中;
2)执行构建;
生成的报告如下图:(报告的样式可修改,也可直接找资源,取决于自己需求)
12、上述报告的模板:
https://i-beta.cnblogs.com/files/report_template.zip
13、报告中若有字段如response data之类未显示出来,则修改jmeter.properties文件:
1)报告展示的形式: jmeter.save.saveservice.output_format=xml
2)是否展示response_data : jmeter.save.saveservice.response_data=true
3)是否展示samplerData: jmeter.save.saveservice.samplerData=true
4)是否展示responseHeaders: jmeter.save.saveservice.responseHeaders=true
5) 是否展示requestHeaders: jmeter.save.saveservice.requestHeaders=true
6)是否展示url: jmeter.save.saveservice.url=true
14、补充:Jenkins设置代理节点,连接远程服务器;
【远程服务器为windows】
步骤:
1)增加一个jenkins节点
jenkins——系统管理——节点管理——新建节点
2)将代理连接到jenkins(关闭防火墙)
运行dos命令:javaws http://xx.xx.xx.xx:8000/computer/节点名称/slave-agent.jnlp
连接成功后开始构建;
*** 有兴趣可加入测试交流群一起学习:QQ群号:744419090 ***