热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins+Ant+JMeter报告自动化

1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建

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 DocumentTITLE>
<META NAME&#61;"Generator" CONTENT&#61;"EditPlus">
<META NAME&#61;"Author" CONTENT&#61;"">
<META NAME&#61;"Keywords" CONTENT&#61;"">
<META NAME&#61;"Description" CONTENT&#61;"">
HEAD><BODY>
<table align&#61;"center"><tr align&#61;"center"><td><H1>Performance Test ReportH1>td>tr>
table><table align&#61;"center"><tr align&#61;"center"><td><H2>TPSH2>td>tr><tr align&#61;"center"><td><IMG SRC&#61;"TPS.png" WIDTH&#61;"800" HEIGHT&#61;"600" BORDER&#61;"0" ALT&#61;"">td>tr>
table><table align&#61;"center"><tr align&#61;"center"><td><H2>Response TimeH2>td>tr><tr align&#61;"center"><td><IMG SRC&#61;"ResponseTimeOverTime.png" WIDTH&#61;"800" HEIGHT&#61;"600" BORDER&#61;"0" ALT&#61;"">td>tr>
table>
BODY>
HTML>

PerformanceTestReport.html

xml version&#61;"1.0"?>
<project name&#61;"ant-jmeter" default&#61;"all"><description>Jmeter&#43;Ant&#43;Jenkins description><property name&#61;"jmeter.home" value&#61;"D:\software\apache-jmeter-5.1"/><property name&#61;"script.dir" value&#61;"D:\jmeterTest\script"/><property name&#61;"jmeter.result.dir" value&#61;"D:\jmeterTest\resultLog"/><property name&#61;"jmeter.jenkins" value&#61;"D:\jenkinsWorkshop\workspace\PerformanceTest"/><property name&#61;"report.title" value&#61;"Performance Test Summary Report"/><property name&#61;"jmeter.result.name" value&#61;"Test"/><property name&#61;"show-data" value&#61;"n"/><property name&#61;"format" value&#61;"2.1"/><condition property&#61;"style_version" value&#61;""><equals arg1&#61;"${format}" arg2&#61;"2.0"/>condition><condition property&#61;"style_version" value&#61;"_21"><equals arg1&#61;"${format}" arg2&#61;"2.1"/>condition><condition property&#61;"funcMode"><equals arg1&#61;"${show-data}" arg2&#61;"y"/>condition><condition property&#61;"funcMode" value&#61;"false"><not><equals arg1&#61;"${show-data}" arg2&#61;"y"/>not>condition><path id&#61;"jmeter.classpath"><fileset dir&#61;"${jmeter.home}\extras"><include name&#61;"ant-jmeter*.jar"/>fileset>path><taskdefname&#61;"jmeter"classpathref&#61;"jmeter.classpath"classname&#61;"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/><target name&#61;"all" depends&#61;"run,generatePNG,report,copy-report"/><target name&#61;"generatePNG"><exec dir&#61;"D:\jmeterTest\" executable&#61;"cmd.exe"><arg line&#61;"/c D:\jmeterTest\generateRT.bat" /><arg line&#61;"/c exit" />exec><exec dir&#61;"D:\jmeterTest\" executable&#61;"cmd.exe"><arg line&#61;"/c D:\jmeterTest\generateTPS.bat" /><arg line&#61;"/c exit" />exec>target><target name&#61;"run"><echo>funcMode &#61; ${funcMode}echo><delete file&#61;"${jmeter.result.dir}/${jmeter.result.name}.html"/><delete file&#61;"${jmeter.result.dir}/${jmeter.result.name}.jtl"/><jmeterjmeterhome&#61;"${jmeter.home}"jmeterproperties&#61;"${jmeter.home}/bin/jmeter.properties"runremote&#61;"true"resultlog&#61;"${jmeter.result.dir}/${jmeter.result.name}.jtl"><testplans dir&#61;"${script.dir}" includes&#61;"*.jmx" /><property name&#61;"jmeter.save.saveservice.output_format" value&#61;"xml"/><property name&#61;"jmeter.save.saveservice.samplerData" value&#61;"true"/><property name&#61;"jmeter.save.saveservice.response_data.on_error" value&#61;"${funcMode}"/>jmeter>target><property name&#61;"lib.dir" value&#61;"${jmeter.home}/lib"/><path id&#61;"xslt.classpath"><fileset dir&#61;"${lib.dir}" includes&#61;"xalan*.jar"/><fileset dir&#61;"${lib.dir}" includes&#61;"serializer*.jar"/>path><target name&#61;"report" depends&#61;"xslt-report,copy-images"><echo>Report generated at ${report.datestamp}echo>target><target name&#61;"xslt-report" depends&#61;"_message_xalan"><tstamp><format property&#61;"report.datestamp" pattern&#61;"yyyy/MM/dd HH:mm"/>tstamp><xsltclasspathref&#61;"xslt.classpath"force&#61;"true" in&#61;"${jmeter.result.dir}/${jmeter.result.name}.jtl"out&#61;"${jmeter.result.dir}/${jmeter.result.name}.html"style&#61;"${jmeter.home}/extras/jmeter-results-detail-report${style_version}.xsl"><param name&#61;"showData" expression&#61;"${show-data}"/><param name&#61;"titleReport" expression&#61;"${report.title}"/><param name&#61;"dateReport" expression&#61;"${report.datestamp}"/>xslt>target><target name&#61;"copy-images" depends&#61;"verify-images" unless&#61;"samepath"><copy file&#61;"${jmeter.home}/extras/expand.png" tofile&#61;"${jmeter.result.dir}/expand.png"/><copy file&#61;"${jmeter.home}/extras/collapse.png" tofile&#61;"${jmeter.result.dir}/collapse.png"/>target><target name&#61;"verify-images"><condition property&#61;"samepath"><equals arg1&#61;"${jmeter.result.dir}" arg2&#61;"${jmeter.home}/extras/" />condition>target><tstamp><format property&#61;"CURRHOUR" pattern&#61;"yyyyMMddhhmm" offset&#61;"0" unit&#61;"hour" />tstamp><property name&#61;"RESULTNAME" value&#61;"${CURRHOUR}"/><target name&#61;"copy-report" depends&#61;"copy-images-jenkins"><mkdir dir&#61;"${jmeter.jenkins}\${RESULTNAME}" /><copy file&#61;"${jmeter.result.dir}/${jmeter.result.name}.html" tofile&#61;"${jmeter.jenkins}/${RESULTNAME}/${jmeter.result.name}.html"/><copy file&#61;"${jmeter.result.dir}/${jmeter.result.name}.jtl" tofile&#61;"${jmeter.jenkins}/${RESULTNAME}/${jmeter.result.name}.jtl"/><copy file&#61;"${jmeter.result.dir}/PerformanceTestReport.html" tofile&#61;"${jmeter.jenkins}/${RESULTNAME}/PerformanceTestReport.html"/>target><target name&#61;"copy-images-jenkins"><copydir dest&#61;"${jmeter.jenkins}/${RESULTNAME}" src&#61;"${jmeter.result.dir}"><include name&#61;"*.png" />copydir>target><condition property&#61;"xalan.present"><and><available classpathref&#61;"xslt.classpath" classname&#61;"org.apache.xalan.processor.TransformerFactoryImpl"/><available classpathref&#61;"xslt.classpath" classname&#61;"org.apache.xml.serializer.ExtendedContentHandler"/>and>condition><target name&#61;"_message_xalan" unless&#61;"xalan.present"><echo>Cannot find all xalan and/or serialiser jarsecho><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 &#61; ${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

 

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

目录2&#xff1a;

4.修改jmeter.properties文件&#xff0c;使之可以远程启动&#xff1a;

# Remote Hosts - comma delimited
remote_hosts&#61;127.0.0.1
#remote_hosts&#61;localhost:1099,localhost:2010

5.双击启动jmeter-server.bat&#xff0c;如果报错如下&#xff1a;

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
&#61;1
请按任意键继续. . .

报错信息&#xff1a;端口问题

则修改jmeter.properties文件即可&#xff1a;

# Set this if you don&#39;t want to use SSL for RMI
server.rmi.ssl.disable&#61;true

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

目录1&#xff1a;

 

目录2&#xff1a;

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

 

转:https://www.cnblogs.com/zhengna/p/10815474.html




推荐阅读
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 今天我开始学习Flutter,并在Android Studio 3.5.3中创建了一个新的Flutter项目。然而,在首次尝试运行时遇到了问题,Gradle任务 `assembleDebug` 执行失败,退出状态码为1。经过初步排查,发现可能是由于依赖项配置不当或Gradle版本不兼容导致的。为了解决这个问题,我计划检查项目的 `build.gradle` 文件,确保所有依赖项和插件版本都符合要求,并尝试更新Gradle版本。此外,还将验证环境变量配置是否正确,以确保开发环境的稳定性。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
author-avatar
爱在逃离
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有