性能测试自动化环境搭建教程

  所需软件清单:

  

  ===========================================================================

  软件    下载地址

  JDK     http://www.oracle.com/technetwork/java/javase/downloads/index.html

  Jmeter   https://archive.apache.org/dist/jmeter/binaries/

  Ant      http://archive.apache.org/dist/ant/binaries/

  Jenkins    https://jenkins.io/download/

  ===========================================================================

安装步骤:

  安装Jmeter、JDK前面章节有,这里不赘述...

  安装Jenkins:

    

    

    

    

  解锁 Jenkins

  http://localhost:8080/login?from=%2F

  

  

  

  

安装插件:

  

  

设置管理员:

  

  

  

  

安装Ant:

  解压软件:

  

   

  设置环境变量

  设置环境变量 ANT_HOME: D:\tool\apache-ant-1.9.7

  

  设置环境变量 PATH: D:\tool\apache-ant-1.9.7\bin

  

验证安装:

  

ANT 与 Jmeter集成配置:

  修改 Jmeter 默认保存配置

  修改文件 D:\tool\apache-jmeter-3.1\bin\jmeter.properties

  添加:jmeter.save.saveservice.output_format=xml

  将 D:\tool\apache-jmeter-3.1\extras\ant-jmeter-1.1.1.jar 拷贝 D:\tool\apache-ant-1.9.7\lib 目录下

  

  

验证 ant 集成 jmeter

  在 D:\tool\apache-jmeter-3.1\extras 目录下打开 CMD,运行"ant.bat -file build.xml Dtest=Test" . 查看 D:\tool\apache-jmeter-3.1\extras 目录下是否出现 Test.jtl、Test.html 文件,若有,则构建成功。注意:Test.jmx 是默认存在的 Sample 脚本文件。

  若构建失败,请分析 cmd 打印的日志消息,定位问题;

安装 Jmeter 插件

  Jmeter 插件的安装。解压 JMeterPlugins-Extras-1.1.2.zip、JMeterPlugins-Standard-1.1.2.zip,

  ServerAgent-2.2.1.zip 将对应 ext 目录下的文件 jar 文件拷贝到 D:\tool\apache-jmeter-

  3.1\lib\ext 目录下,将 ReportGen.jar、jmeter-plugins-manager-0.11.jar 拷贝到 D:\tool\apachejmeter-3.1\lib\ext 目录下

  

  

  

  

  新建工作空间工作空间目录结构为:

  

安装Jenkins插件:

  

  

  安装插件: HTML Publisher plugin

  

  

Jenkins配置任务:

  新建任务:

  

  

  丢弃旧的构建:

  

  

  参数化构建:

  

  result.home: E:\JENKINS\TEST\Report

  

  build.home: E:\JENKINS\TEST

  

  

  ReportName: PerfmanceTestingReport

  

  Threads:1

  

  Duration:60

  

  jmeter.home: D:\tool\apache-jmeter-3.1

  

  ant.home:D:\tool\apache-ant-1.9.7

  

构建:

  

  

  

  cd /d  %ANT_HOME%\bin

  ant -f %build.home%\build.xml  -Dresult.home=%result.home% -Dbuild.home=%build.home%

  -Dtime=%BUILD_ID%         -DReportName=%ReportName%          -Dthreads=%threads%          -

  Dduration=%duration%                        -DPerMonhome=%result.home%/%BUILD_ID%   DbuildId=%BUILD_ID% -DjobName=%JOB_NAME%

构建后操作:

  

  

  

  HTML directory to archive:${result.home}/${BUILD_ID}/png/

  Index page[s]:AggregateReport.png

  Index page title[s] (Optional):聚合报告

  Report title:聚合报告

  

  

  HTML directory to archive:${result.home}/${BUILD_ID}/png/

  Index page[s]:test_CpuMem.png

  

监控被测服务器:

  将 ServerAgent-2.2.1.zip 上传至被压测服务器

  

  

启动监控:

  

Jmeter脚本配置:

  线程组配置:

  线程数:${__P(request.threads,1)} 持续时间:${__P(request.duration,300)}

  

  

监控服务器配置: 

  配置监控服务器 IP、端口、资源

  写入文件:E:\JENKINS\TEST\perfmon\test-perfmon.jtl

  

  配置输出文件格式

  

编写Build.xml:

  文件位置:E:\JENKINS\TEST\build.xml

    

<?xml version="1.0" encoding="utf-8"?>

<!--
Author:Fresh.Qin
Email:lzqinfen@126.com
-->
<project name="ant-jmeter-test" default="all" basedir=".">
<!--
<tstamp>
<format property="time" pattern="yyyyMMddHHmmss" />
</tstamp>
-->
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\tool\apache-jmeter-3.1\"/>
<!-- 需要改成 Jmeter CMDRunner.jar 目录-->
<property name="CMDRunner.home" value="${jmeter.home}\lib\ext\CMDRunner.jar"/>
<property name="ReportGen.home" value="${jmeter.home}\lib\ext\ReportGen.jar"/>
<!-- 需要改成自己本地的 Jmeter 目录-->
<!--<property name="result.home" value="E:\jmeter\BCS\Report" />-->
<property name="cpuresult.home" value="E:\JENKINS\TEST\perfmon"/>
<property name="script.home" value="E:\JENKINS\TEST\Scripts"/>
<!-- jmeter 生成 jtl 格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="${result.home}\${time}\jtl\"/>
<!-- jmeter 生成 html 格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="${result.home}\${time}\html\"/>
<!-- jmeter 生成 png 格式的结果报告的路径-->
<property name="jmeter.result.png.dir" value="${result.home}\${time}\png\"/>
<!-- 生成的报告的前缀-->
<!--<property name="ReportName" value="TestReport" />-->
<!-- 相关报告路径配置-->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}${ReportName}${time}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}${ReportName}${time}.html"/>
<!--给 Jmeter 传入的 参数-->
<!--
<property name="threads" value="1" />
<property name="duration" value="30" />
<property name="PerMonhome" value="E:\jmeter\BCS\Report" />
<property name="build.home" value="E:\jmeter\BCS\" />
-->
<target name="all">
<echo message="jmeter.result.jtl.dir=${jmeter.result.jtl.dir}"/>
<echo message="jmeter.result.html.dir=${jmeter.result.html.dir}"/>
<echo message="jmeter.result.png.dir=${jmeter.result.png.dir}"/>
<echo message="jmeter.result.jtlName=${jmeter.result.jtlName}"/>
<antcall target="clean"/>
<!--第一步 运行脚本-->
<!--<antcall target="run.script" />-->
<antcall target="test"/>
<!--第二步 生成基础报表
<antcall target="base.report" /> 存在性能问题,不再生成基础报表-->
<!--第三步 生成扩展报表-->
<antcall target="extras.report"/>
<!--第四步 清理生成的文件-->
<antcall target="finish"/>
</target>
<target name="clean">
<mkdir dir="${jmeter.result.jtl.dir}"/>
<mkdir dir="${jmeter.result.html.dir}"/>
<mkdir dir="${jmeter.result.png.dir}"/>
<delete includeemptydirs="true">
<fileset dir="${cpuresult.home}" includes="**/*.jtl"/>
</delete>
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<testplans dir="${script.home}" includes="*.jmx"/>
<property name="jmeter.save.saveservie.output_format" value="xml"/>
<property name="request.threads" value="${threads}"/>
<property name="request.duration" value="${duration}"/>
</jmeter>
</target>
<target name="extras.report">
<!--TPS 每秒事务数-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_TPS.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type TransactionsPerSecond --limitrows 100 --relative-times no"/>
</exec>
<!--RTP 响应时间的百分比-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RTP.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type ResponseTimesPercentiles "/>
</exec>
<!--RTD 响应时间分布情况-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RTD.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type ResponseTimesDistribution "/>
</exec>
<!--RLOT 响应时间随时间的变化曲线-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RLOT.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type LatenciesOverTime --limitrows 100 --relative-times no"/>
</exec>
<!--CpuMem Cpu 内存监控结果生成-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_CpuMem.png --input-jtl ${cpuresult.home}/test-perfmon.jtl --plugin-type PerfMon --limit-rows 100 --relative-times no"/>
</exec>
<!--生成聚合报告的 CSV 文件,后面需要二次处理-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-csv ${jmeter.result.png.dir}/AggregateReport.csv --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type AggregateReport"/>
</exec>
<!--CSV 转换成 PNG-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${ReportGen.home} ${jmeter.result.png.dir}/AggregateReport.csv ${jmeter.result.png.dir}/AggregateReport.png"/>
</exec>
<!--服务器监控数据处理-->
<exec executable="cmd.exe">
<arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/test_CpuMem.png --input-jtl ${cpuresult.home}/test-perfmon.jtl -- plugin-type PerfMon --limit-rows 100 --relative-times no"/>
</exec>
</target>
<target name="finish">
<copy todir="${jmeter.result.jtl.dir}">
<fileset dir="${cpuresult.home}">
<include name="**/*.jtl"/>
</fileset>
</copy>
</target>
</project>

一键压测:

  

  

  

  

转自:https://www.cnblogs.com/ai594ai/p/7127333.html

转载于:https://www.cnblogs.com/Lydia25/p/9989933.html

Jmeter (三十)jmeter+ant+jenkins持续集成相关推荐

  1. Gitlab+jenkins持续集成+自动化部署(三)

    搭建gitlab+Jenkins自动化部署 在jenkins上安装插件 Build Authorization Token Root Plugin. Build Authorization Token ...

  2. 半天搭建你的Jenkins持续集成与自动化部署系统

    前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由 ...

  3. 【测试开发】的Devops持续集成部署体系之Jenkins持续集成和持续部署基础应用

    目录 [一]:Jenkins 持续集成安装及使用简介 一.前言 二.初始化 Jenkins 插件和管理员用户 2.1 进入如下页面,输入上面出现的口令 2.2 进入选择安装插件的页面后,可以选择安装社 ...

  4. Jenkins持续集成入门到精通

    Jenkins持续集成入门到精通 文章目录 Jenkins持续集成入门到精通 1. 持续集成及Jenkins介绍 1.1 软件开发生命周期 1.2 软件开发瀑布模型 1.3 软件的敏捷开发 1.3.1 ...

  5. AndroidStudio目录结构 APP构建流程 Jenkins持续集成构建 Gradle介绍 Proguard混淆

    Android Studio目录结构 通常我们是将工程设置成project模式,这个模式下我们的工程有很多目录: .gradle:包含一些Gradle编译脚本,gradle是Google推荐的编译工具 ...

  6. Jenkins持续集成

    Jenkins持续集成 1.介绍.环境搭建 什么是Jenkins? Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建.测试和部署软件,支持自定义工具集.多种交付通道 CI: ...

  7. Jenkins持续集成学习-Windows环境进行.Net开发4

    目录 Jenkins持续集成学习-Windows环境进行.Net开发4 目录 前言 目标 Github持续集成 提交代码到Github 从Github更新代码 git上显示构建状态 自动触发构建 Gi ...

  8. 超详细的jenkins持续集成工作原理、功能、部署方式等介绍

    文章由LinuxBoy分享于2019-08-30 11:08:39 超详细的jenkins持续集成工作原理.功能.部署方式等介绍 1. 概念 jenkins是一个开源项目,提供了一种易于使用的持续集成 ...

  9. 华为表哥手把手教你利用Jenkins持续集成iOS项目,教不会我花式拉翔!!!

    手把手教你利用Jenkins持续集成iOS项目: 前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP ...

  10. Jenkins持续集成结合Docker Swarm集群实现Web应用部署的发布

    案列环境: 准备5台虚拟机,其中3台用于部署Docker Swarm集群,1台部署代码版本控制系统,1台部署Jenkins持续集成工具. 192.168.80.10 swarm01 192.168.8 ...

最新文章

  1. 一个简单的更改让PyTorch读取表格数据的速度提高20倍:可大大加快深度学习训练的速度...
  2. setDrawingCacheEnabled(boolean flag)
  3. java字符排序规则_java 重写排序规则,用于代码层级排序
  4. boost::mpl模块实现replace_if相关的测试程序
  5. java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
  6. 图像处理中腐蚀与膨胀的原理
  7. 图解 继电器模组接线图_交流接触器,继电器的知识你了解多少?(值得收藏)...
  8. 疫情之下,哪些行业正在逆势爆发?
  9. mysql5.7 开启重连_MySQL5.7.9,怎样永久设置client、connection、results这三项为utf8?...
  10. 【元胞自动机】基于matlab界面聚合元胞自动机模拟【含Matlab源码 2004期】
  11. 网络协议分析-TCP协议分析
  12. IBM ServerGuide 8.42
  13. hive计算几个月的最大最小时一定要把string类型转换成int类型
  14. 企业微信实现消息通知功能
  15. 加拿大综合类大学排名获关注,盘点高校对雅思要求
  16. 请将文件MP_verify_xxxxxx.txt上传至填写域名或路径指向的web服务器(或虚拟主机)的目录 曲线救国
  17. python第五次笔记
  18. 学UI设计,用对这5款设计软件是关键
  19. Phong与Blinn-Phong
  20. python画聚类图、并且把聚类图保存起来_Python利用igraph绘制复杂网络聚类(社区检测)结果图-Go语言中文社区...

热门文章

  1. Linux IPC(Inter-Process Communication,进程间通信)之管道学习
  2. File Finder pro Mac版重复文件查找器使用方法
  3. 如何在 Adobe XD 中创建交互式原型?
  4. Linux中的任务调度
  5. Redis 单机使用以及部署
  6. A/B Testing
  7. KVM虚拟化笔记(十)------kvm虚拟机扩充磁盘空间
  8. 【Atcoder】ARC082 E - ConvexScore
  9. IIS------配置.Net 4.0
  10. Firefox 按一下Alt键 出现菜单!