zoukankan      html  css  js  c++  java
  • 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: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>
    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 ***

        

  • 相关阅读:
    transient关键字详解
    大话设计模式之装饰模式
    springboot读取properties(yml)的几种常用方式
    springboot整合druid数据库连接池并开启监控
    初学js的穷举思想
    循环语句
    条件分支语句
    运算符
    案例(-)
    seo搜索引擎优化
  • 原文地址:https://www.cnblogs.com/hd-test/p/11551555.html
Copyright © 2011-2022 走看看