jmeter+ant+jenkins

 

整体流程: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:\Jenkins\jenkins.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:\jmeter\apache-jmeter-5.1.1"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="${jmeter.home}\API_TEST\report\jtl"/>
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="${jmeter.home}\API_TEST\report\Report"/>
<!-- 生成的报告的前缀 -->
<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_TEST\jiaoben\authen" includes="*.jmx"/>
<testplans dir="${jmeter.home}\API_TEST\jiaoben\collection\message" includes="*.jmx"/>
<testplans dir="${jmeter.home}\API_TEST\jiaoben\collection\file" includes="*.jmx"/>
<testplans dir="${jmeter.home}\API_TEST\jiaoben\distribution\general" includes="*.jmx"/>
<testplans dir="${jmeter.home}\API_TEST\jiaoben\distribution\annotation" includes="*.jmx"/>
<testplans dir="${jmeter.home}\API_TEST\jiaoben\map" 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>
build.xml

 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 ***

    

posted @ 2019-09-19 18:13  Alieen617  阅读(622)  评论(0编辑  收藏  举报