Jenkins+Ant+JMeter报告自动化

1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建立Slave节点,连接Slave节点,创建任务等。

2.将Jenkins+Ant+JMeter集成中创建的任务的第5步“构建后操作”删除,并将第1步修改(点击configure进行删除或修改)如下:

3.构建前,创建目录及所需文件:

目录1:

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<table align="center">
    <tr align="center"><td><H1>Performance Test Report</H1></td></tr>
</table>

<table align="center">
    <tr align="center"><td><H2>TPS</H2></td></tr>
    <tr align="center"><td><IMG SRC="TPS.png" WIDTH="800" HEIGHT="600" BORDER="0" ALT=""></td></tr>
</table>

<table align="center">
    <tr align="center"><td><H2>Response Time</H2></td></tr>
    <tr align="center"><td><IMG SRC="ResponseTimeOverTime.png" WIDTH="800" HEIGHT="600" BORDER="0" ALT=""></td></tr>
</table>
</BODY>
</HTML>

PerformanceTestReport.html

<?xml version="1.0"?>
<project name="ant-jmeter" default="all">
    <description>
        Jmeter+Ant+Jenkins <!--文件描述,可选择项-->
    </description>

    <!--定义变量并赋值,能够减少配置工作量,后面会用到-->
    <!--定义JMeter的工作目录,与%JMETER_HOME%指向同一个目录-->
    <property name="jmeter.home" value="D:\software\apache-jmeter-5.1"/>

    <!--定义JMeter脚本存放目录-->
    <property name="script.dir" value="D:\jmeterTest\script"/>

    <!--定义JMeter的测试结果存放目录-->
    <property name="jmeter.result.dir" value="D:\jmeterTest\resultLog"/>

    <!--定义Jenkins的工作目录,将来用来存放测试结果-->
    <property name="jmeter.jenkins" value="D:\jenkinsWorkshop\workspace\PerformanceTest"/>

    <!--定义测试报告Title-->
    <property name="report.title" value="Performance Test Summary Report"/>

    <!--定义测试结果名称-->
    <property name="jmeter.result.name" value="Test"/>

    <!--测试报告中是否显示失败事务,n为不显示-->
    <property name="show-data" value="n"/>

    <!--定义样式版本,有更新时只需要修改此处即可,其他调用处不用更改-->
    <property name="format" value="2.1"/>

    <condition property="style_version" value="">
        <equals arg1="${format}" arg2="2.0"/>
    </condition>

    <condition property="style_version" value="_21">
        <equals arg1="${format}" arg2="2.1"/>
    </condition>

    <condition property="funcMode">
        <equals arg1="${show-data}" arg2="y"/>
    </condition>

    <condition property="funcMode" value="false">
      <not>
        <equals arg1="${show-data}" arg2="y"/>
      </not>
    </condition>

    <!--定义依赖包目录-->
    <path id="jmeter.classpath">
        <fileset dir="${jmeter.home}\extras">
          <include name="ant-jmeter*.jar"/>
        </fileset>
    </path>

    <!--定义任务,即测试活动,依赖于ant-jmeter.jar包-->
    <taskdef
        name="jmeter"
        classpathref="jmeter.classpath"
        classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>

    <!--定义任务,run运行脚本,generatePNG生成图片报表,report生成报告,copy-report复制结果-->
    <target name="all" depends="run,generatePNG,report,copy-report"/>

    <!--定义generatePNG任务-->
    <target name="generatePNG">

        <exec dir="D:\jmeterTest\" executable="cmd.exe">
            <arg line="/c D:\jmeterTest\generateRT.bat" />
            <arg line="/c exit" />
        </exec>
        <exec dir="D:\jmeterTest\" executable="cmd.exe">
            <arg line="/c D:\jmeterTest\generateTPS.bat" />
            <arg line="/c exit" />
        </exec>
    </target>

    <!--定义run任务-->
    <target name="run">
        <!--显示上面定义的${show-data}取值-->
        <echo>funcMode = ${funcMode}</echo>
        <!--删除前一次的测试报告,Html格式的,上面有定义${jmeter.result.name}变量的值-->
        <delete file="${jmeter.result.dir}/${jmeter.result.name}.html"/>
        <!--删除前一次的测试报告,Html格式的,上面有定义${jmeter.result.name}变量的值-->
        <delete file="${jmeter.result.dir}/${jmeter.result.name}.jtl"/>

        <jmeter
            jmeterhome="${jmeter.home}"
            jmeterproperties="${jmeter.home}/bin/jmeter.properties"
            runremote="true"
            resultlog="${jmeter.result.dir}/${jmeter.result.name}.jtl">

            <!-- 指定测试脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
            <testplans dir="${script.dir}" includes="*.jmx" />

            <!--指定测试结果输出格式,在此指定的是xml,也可以指定成文本格式及CSV格式-->
            <!--先暂时指定成xml格式,后续会变换成文本格式-->
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
            <property name="jmeter.save.saveservice.samplerData" value="true"/>
            <!--是否记录错误信息,上面已经定义了${funcMode}=n-->
            <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
        </jmeter>
    </target>

    <!--定义依赖包目录-->
    <property name="lib.dir" value="${jmeter.home}/lib"/>

    <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
    <path id="xslt.classpath">
        <fileset dir="${lib.dir}" includes="xalan*.jar"/>
        <fileset dir="${lib.dir}" includes="serializer*.jar"/>
    </path>

    <!--保留ant利用XSL来生成的报告 start-->
    <target name="report" depends="xslt-report,copy-images">
        <echo>Report generated at ${report.datestamp}</echo>
    </target>

    <!--xslt-report是使用xslt来把xml文件转换成Html格式来显示-->
    <!--_message_xalan 被xslt-report依赖,由它生成报告-->
    <target name="xslt-report" depends="_message_xalan">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
        <!--in:将测试结果作为输入-->
        <!--style:xslt定义的模板文件地址-->
        <xslt
            classpathref="xslt.classpath"
            force="true"
            in="${jmeter.result.dir}/${jmeter.result.name}.jtl"
            out="${jmeter.result.dir}/${jmeter.result.name}.html"
            style="${jmeter.home}/extras/jmeter-results-detail-report${style_version}.xsl">
            <param name="showData" expression="${show-data}"/>
            <param name="titleReport" expression="${report.title}"/>
            <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
    </target>

    <!--copy-images用来cpoy图片,xslt模板中的图片由copy-images任务copy到报告目录-->
    <target name="copy-images" depends="verify-images" unless="samepath">
        <!--生成Html报告时需要Copy图标到报告目录,expand.png展开图标,collapse.png收起图标-->
        <copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.dir}/expand.png"/>
        <copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.dir}/collapse.png"/>
    </target>

    <target name="verify-images">
        <condition property="samepath">
                <equals arg1="${jmeter.result.dir}" arg2="${jmeter.home}/extras/" />
        </condition>
    </target>

    <!--保留ant利用XSL来生成的报告 end-->
    <!--格式化一个时间戳,以此时间戳为名建立一个文件夹,每次构建一个文件夹,方便保存历次结果-->
    <tstamp>
        <format property="CURRHOUR" pattern="yyyyMMddhhmm" offset="0" unit="hour" />
    </tstamp>

    <property name="RESULTNAME" value="${CURRHOUR}"/>

    <!--把Ant XSL生成的报告与.jtl文件复制到Jenkins Slave的工作区-->
    <target name="copy-report" depends="copy-images-jenkins">
        <!--建立一个文件夹存放结果-->
        <mkdir dir="${jmeter.jenkins}\${RESULTNAME}" />
        <copy file="${jmeter.result.dir}/${jmeter.result.name}.html" tofile="${jmeter.jenkins}/${RESULTNAME}/${jmeter.result.name}.html"/>
        <copy file="${jmeter.result.dir}/${jmeter.result.name}.jtl" tofile="${jmeter.jenkins}/${RESULTNAME}/${jmeter.result.name}.jtl"/>
        <!--复制集成JMeter Plugins图表的HTML模板-->
        <copy file="${jmeter.result.dir}/PerformanceTestReport.html" tofile="${jmeter.jenkins}/${RESULTNAME}/PerformanceTestReport.html"/>
    </target>

    <!--Ant XSL生成的报告所需的图片也需要拷贝到Jenkins Slave的工作区-->
    <target name="copy-images-jenkins">
        <copydir dest="${jmeter.jenkins}/${RESULTNAME}" src="${jmeter.result.dir}">
            <include name="*.png" />
        </copydir>
    </target>

    <!--检查依赖-->
    <condition property="xalan.present">
          <and>
              <!-- No need to check all jars; just check a few -->
            <available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
            <available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
          </and>
    </condition>

    <target name="_message_xalan" unless="xalan.present">
        <echo>Cannot find all xalan and/or serialiser jars</echo>
        <echo>The XSLT formatting may not work correctly.</echo>
        <echo>Check you have xalan and serializer jars in ${lib.dir}</echo>
    </target>

    <!--仅仅打印前面定义的变量的值,检查是否如你所愿,在定义变量时做调试用,可以去掉-->
    <echo>jmeter.home = ${jmeter.home}</echo>
</project>

build.xml

rem TransactionsPerSecond
D:\software\apache-jmeter-5.1\bin\PluginsManagerCMD.bat --tool Reporter --generate-png D:\jmeterTest\resultLog\TPS.png --input-jtl D:\jmeterTest\resultLog\Test.jtl --plugin-type TransactionsPerSecond --width 800 --height 600

generateTPS.bat

%ANT_HOME%\bin\ant -f D:\jmeterTest\build.xml

run.bat

rem ResponseTime OverTime
D:\software\apache-jmeter-5.1\bin\PluginsManagerCMD.bat --tool Reporter --generate-png D:\jmeterTest\resultLog\ResponseTimeOverTime.png  --input-jtl D:\jmeterTest\resultLog\Test.jtl --plugin-type ResponseTimesOverTime --width 800 --height 600

generateRT.bat

注意:可以仿照上面的generateTPS.bat生成其它的所需报表,具体用法见:https://jmeter-plugins.org/wiki/JMeterPluginsCMD/

目录2:

4.修改jmeter.properties文件,使之可以远程启动:

# Remote Hosts - comma delimited
remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010

5.双击启动jmeter-server.bat,如果报错如下:

Found ApacheJMeter_core.jar
Server failed to start: java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)

An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)

errorlevel=1
请按任意键继续. . .

报错信息:端口问题

则修改jmeter.properties文件即可:

# Set this if you don‘t want to use SSL for RMI
server.rmi.ssl.disable=true

6.点击“立即构建”。构建成功后两个目录如下:

目录1:

目录2:

7. 在Jenkins工作目录中打开PerformanceTestReport.html即可查看报表。

原文地址:https://www.cnblogs.com/zhengna/p/10815474.html

时间: 2024-08-01 09:16:20

Jenkins+Ant+JMeter报告自动化的相关文章

Jenkins+Ant+Jmeter接口自动化集成测试实例

Jenkins+Ant+Jmeter接口自动化集成测试实例 一.Jenkins安装配置 1.安装配置JDK1.6+环境变量: 2.下载jenkins.war,放入C:\jenkins目录下,目录位置随意: Jenkins启动方法: cmd进入Jenkins目录下,执行java -jar jenkins.war 浏览器输入:localhost:8080可以访问Jenkins表示配置成功: 二.Ant安装配置 1.下载apache-ant-1.9.6:放入E盘,如E:\apache-ant-1.9.

Jenkins+ant+Jmeter接口自动化框架搭建

工具准备 JDK: jdk1.8.0_111 Ant: apache-ant-1.9.9 Jmeter: apache-jmeter-3.1 Jenkins: jenkins-2.7.4 JDK安装 安装JDK: 双击JDK安装包,选择安装路径,可以采取默认安装路径,也可以自定义安装路径,为了方便直接安装在默认路径下了.安装路径:C:\Program Files\Java\jdk1.8.0_111; 配置JDK环境变量: 系统变量→新建 JAVA_HOME 变量 变量值填写jdk的安装目录(本人

Jenkins+Ant+Jmeter 自动化性能测试平台之填坑篇

一.前言 搭建Jenkins+Ant+Jmeter 自动化性能测试平台过程中,坦白说遇到了很多坑...写这篇博文的目的,除了总结经验方便自己以后查阅之外,也为了方便他人遇到相同的坑时,可以快速找到原因并解决.下面开始我漫长的填坑之路~~ 二.填坑之路 1.build.xml中<project name="ant-jmeter-test" default="run" basedir=".">这行代码怎么理解? default:run为b

jenkins+ant+jmeter自动化性能测试平台

jenkins+ant+jmeter自动化性能测试平台 Jmeter是性能测试的工具,java编写.开源,小巧方便,可以图形界面运行也可以在命令行下运行.网上已经有人使用ant来运行,http://www.programmerplanet.org/projects/jmeter-ant-task/,既然可以使用ant运行,那和hudson.jenkins集成就很方便了,而且jenkins上也有相应的插件Performance Plugin,可以自动收集jmeter的测试结果,展示出来. 首先去下

Jenkins+Ant+Jmeter 自动化性能测试平台

一.前言 持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作, 通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目,监控外部调用执行的工作. 项目构建 通过构建工具对多个项目文件进行统一

性能测试四十八:Jenkins+Ant+Jmeter系统部署

工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码Git 2.Jenkins拉取代码,自动化编译,打包 --  插件 3.Jenkins自动上传war包  --  插件/sh.bat脚本 4.Jenkins自动重启tomcat  --  sh脚本 5.Jenkins自动执行自动化脚本  -- sh脚本 6.Jenkins自动化发送测试报告  -- 

Jenkins+Ant+Jmeter自动化测试平台

        持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快的发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. jenkins是基于java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布.测试项目,监控外部条用执行的工作. 项目构建 通过构建工具对多个项目文件进行

jenkins+ant+jmeter自动化环境搭建

jmeter:测试接口的工具,支持java语言: ant:Apache Ant是一个Java库和命令行工具,其任务是将构建文件中描述的进程作为相互依赖的目标和扩展点.只要使用过Linux系统的读者,应该知道 make这个命令.当编译Linux内核及一些软件源程序时,经常要用这个命令.Make命令其实就 是一个项目管理工具,而Ant所实现功能与此类似,像make,gnumake和nmake这些编译工具都有 一定的缺陷,但是Ant却克服了这些工具的缺陷. jenkins:持续集成工具 一.安装前准备

【转】Jenkins+Ant+Jmeter自动化性能测试平台

Jmeter是性能测试的工具,java编写.开源,小巧方便,可以图形界面运行也可以在命令行下运行.网上已经有人使用ant来运行,,既然可以使用ant运行,那和hudson.jenkins集成就很方便了,而且jenkins上也有相应的插件Performance Plugin,可以自动收集jmeter的测试结果,展示出来. 首先去下载jmeter,在2.8版本中测试通过,2.9版本测试未通过.下载ant-jmeter-1.1.1.jar放在jmeter主目录lib文件夹下. 下载需要的ant包,包含