在Jenkins的pipeline项目中运行jmeter测试-教程
与通常的“自由式”项目相比,管道构建具有几个主要优势:
●弹性 - 管道构建可以“生存”Jenkins重启。
●Pausable / Parameterizable - 在等待用户输入的任何阶段都可以停止管道构建。还可以通过Jenkins API控制Pipeline作业执行。
●功能和灵活性 - 管道构建可以具有复杂的逻辑,条件操作,并行执行多个代理,与其他作业集成等。使用基于Groovy的DSL定义管道,因此Jenkins和Java API可用于定义作业。
●VCS友好性 - 作为Groovy脚本,管道定义代码可以放在版本控制系统下。它甚至可以在Jenkins作业执行期间从那里动态加载,这对于导入/导出/更改跟踪和实验非常有用。
在今天的文章中,您将了解向管道项目添加JMeter测试的方法,并查看一些代码示例和演示。
1.通过管道运行现有的JMeter Build Step
本章假设您已经有一个工作构建步骤,针对您的应用程序执行了JMeter测试。如果没有 - 请查看持续集成101:如何使用Jenkins运行JMeter文章以获取概述和设置说明。如果您有一个运行JMeter测试的Jenkins作业,并且它被称为“JMeter - Freestyle”,您可以从Pipeline运行它,如下所示:
建立工作:'JMeter - Freestyle'
完整的Pipeline代码如下所示:
build job: 'JMeter - Freestyle'
The full Pipeline code will look something like:
node {
stage 'Build Application'
// do what you need to do to build your application
echo 'Compilation is done'
stage 'Deploy Application'
// do what you need to do to deploy your application
echo 'Deploy is done'
stage 'Execute JMeter Performance Tests'
build job: 'JMeter - Freestyle'
}


基本上,上面的Pipeline配置只是触发预定义的“JMeter - Freestyle”Jenkins Job作为Pipeline构建的一部分,并通过Pipeline Dashboard报告已用时间,成功和一些日志。


指定构建参数
如果您的现有作业已参数化,则参数可以通过Pipeline传递,如:
node {
stage '执行JMeter性能测试'
构建作业:'JMeter - Freestyle',参数:[[$ class:'StringParameterValue',name:'VirtualUsers',value:'100' ]]
}
node {
stage 'Execute JMeter Performance Tests'
build job: 'JMeter - Freestyle', parameters: [[$class: 'StringParameterValue', name: 'VirtualUsers', value: '100']]
}
2.使用管道配置新的JMeter测试
鉴于Pipeline项目基于Groovy的特性,您可以使用Groovy语法启动任何进程。Jenkins反过来提供了一些简易变量以使其更容易。例如,您可以对基于Unix的系统使用sh命令,或者为Windows系统使用bat命令以启动shell脚本(JMeter启动脚本通常是shell脚本)。有关更多详细信息,请参阅Pipeline Configuratio Jenkins手册章节的基本Groovy语法。
运行基于命令行的JMeter测试的Pipeline阶段看起来很简单:
node {
stage 'Run JMeter Test'
bat 'c:/jmeter/bin/jmeter.bat -n -t c:/jmeter/extras/Test.jmx -l test.jtl'
}
输出类似,但在这种情况下,日志信息将直接在“运行JMeter测试”阶段提供。


发布构建工件
默认情况下,Pipeline构建不会向构建仪表板发布任何内容。您需要手动指定需要存储的内容,以便您自己,团队成员,利益相关者等直接通过Jenkins Web界面访问结果。
要告诉Jenkins在构建完成后发布ie JMeter .jtl结果文件,您需要在管道配置中添加以下行:
step([$class: 'ArtifactArchiver', artifacts: '**/*.jtl'])
或者,如果您需要存储jmeter.log文件以供以后分析:
step([$class: 'ArtifactArchiver', artifacts: '**/*.jtl, **/jmeter.log'])
添加此步骤后,您应该能够在构建仪表板上看到“常规构建步骤 - >存档工件”日志消息和.jtl结果以及jmeter.log文件。


使用第三方构建工具(Ant,Maven等)
通过命令行运行JMeter测试不是唯一的选择。JMeter测试也可以使用Ant Task,Maven Plugin,Gradle Plugin等执行。
作为终极的持续集成工具,Jenkins支持开箱即用的上述构建工具。您可以根据需要进行安装,并在“ 全局工具配置”页面中进行配置:
Jenkins - >管理Jenkins - >全局工具配置
要么
HTTP:// jenkins_host:jenkins_port / configureTools /


在本指南中,我将使用Apache Ant作为示例。其他构建系统的说明应该类似。如果您查看JMeter安装的“extras”文件夹,您将找到build.xml文件示例Ant脚本,该脚本用于执行Test.jmx并使用XSL模板将生成的文件转换为HTML格式,因此您将成为能够直接在Jenkins仪表板上获取HTML报告。
让我们看看相关的Pipeline配置是什么样的:
●首先,我们需要将Jenkins工作区切换到JMeter的“extras”文件夹,因为假定从那里启动Ant构建文件并且结果文件也将存储在那里。在Jenkins Pipeline中,可以使用ws命令完成,例如:
ws('c:\\jmeter\\extras') {
//do what you need to do here
}
●其次,我们需要从Jenkins获取Ant工具位置。可以使用以下工具命令来完成:
def antHome = tool 'ant'
现在我们有了antHome变量,该变量解析为Ant构建工具的位置。
●第三和第四:我们需要运行测试并发布结果。这已在前一章中介绍过。
总而言之,最终的Pipeline代码如下所示:
node {
ws('c:\\jmeter\\extras') {
stage 'Run JMeter Test with Apache Ant'
def antHome = tool 'ant'
bat "pushd c:\\jmeter\\extras && ${antHome}\\bin\\ant -f build.xml"
step([$class: 'ArtifactArchiver', artifacts: 'Test.html', fingerprint: true])
}
}
当您开始构建时,Jenkins将通过Pipeline代码调用Apache Ant,并将生成的“Test.html”工件发布到构建仪表板。


在Jenkins的pipeline项目中运行jmeter测试-教程的更多相关文章
- iOS-C文件添加到iOS项目中,运行报错
iOS-C文件添加到iOS项目中,运行报错 问题: 往项目中添加一个空的c文件, 编译运行; 出现2,30个编译错误. 原因: 由于在项目中添加了Pch文件,在文件中所有代码还没有开始运行之前, pc ...
- 『动善时』JMeter基础 — 57、Linux系统中运行JMeter脚本
目录 1.Linux系统中安装Java环境 (1)解压Java安装包 (2)配置Java环境变量 (3)验证Java环境是否配置成功 2.Linux系统中安装JMeter (1)下载JMeter (2 ...
- 在Spring Boot项目中使用Spock测试框架
本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...
- 在TypeScript项目中进行BDD测试
在TypeScript项目中进行BDD测试 什么是BDD? BDD(Behavior-Driven Design)是软件团队的一种工作方式,通过以下方式缩小业务人员和技术人员之间的差距: 鼓励跨角色协 ...
- 项目中运行报错: Loading XML bean definitions from class path resource [applicationContext.xml]
记录一下: org.springframework.context.support.AbstractApplicationContext prepareRefresh Refreshing org.s ...
- 【IDEA】单元测试:项目中引入JUnit测试框架+Mock简单了解
一.Junit 使用和说明: 参考:单元测试第三弹--使用JUnit进行单元测试-HollisChuang's Blog http://www.hollischuang.com/archives/17 ...
- 在命令行中运行JUnit测试
可以在Eclipse之外运行JUnit测试,使用org.junit.runner.JUnitCore类. 这个类提供了runClasses()方法,它允许运行一个或多个测试类.runClasses() ...
- 如何在jenkins的maven项目中,用mvn命令行指定findbugs的黑名单规则文件
一:问题背景 最近在研究jenkins的过程中,针对maven项目,打算添加findbugs进行静态检查,但我不太想在项目的pom中进行修改,最好可以只修改jenkins的job配置,即配置外部化. ...
- Vue+webpack项目中,运行报错Cannot find module 'chalk'的处理
刚开始用vue + webpack新建项目,在github上下载了一个示例,输入npm init >>>npm run dev 后报错 Cannot find module 'cha ...
随机推荐
- MySQL备份的三中方式
一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...
- (尚024)Vue_案例_交互删除
注意:本总结中最终会删除不成功 ,原因是Item.vue中方法methods单词拼写错误!!! 首先明白,删除在Item.vue中交互 1.写交互,首先写监听@click="deleteIt ...
- 浅谈H5图片中object-fit的属性及含义/ 小程序image mode属性中scaleToFill,aspectFit,widthFix等类似
我们在H5中对于图片的属性包含如下: object-fit属性有哪些值呢? object-fit: fill; object-fit: contain; object-fit: cover; o ...
- learning scala akka actorySystem create and close
package com.example import akka.actor.ActorSystem import scala.util.{Failure, Success} import scala. ...
- Html结构标准
< ! doctype html> 声明文档类型 <html> 根标签 <head> 头标签 <title></title> 标题标签 &l ...
- 使用 css/less 动态更换主题色(换肤功能)
前言 说起换肤功能,前端肯定不陌生,其实就是颜色值的更换,实现方式有很多,也各有优缺点 一.看需求是什么 一般来说换肤的需求分为两种: 1. 一种是几种可供选择的颜色/主题样式,进行选择切换,这种可供 ...
- rust学习(二)
play on line match if #![allow(unused)] fn write_bar(size: u64){ match size{ o => println!(" ...
- 转载:SVD
ComputeSVD 在分布式矩阵有CoordinateMatirx, RowMatrix, IndexedRowMatrix三种.除了CoordinateMatrix之外,Indexe ...
- 在GitHub上使用Hexo 搭建自己的博客
1.下载Node.js安装文件(现在电脑基本都是64位的,我就放64位的下载地址):https://nodejs.org/dist/v8.9.4/node-v8.9.4-x64.msi 或者自行到官网 ...
- 刷题记录:[ByteCTF 2019]EZCMS
目录 刷题记录:[ByteCTF 2019]EZCMS 一.知识点 1.源码泄露 2.MD5长度扩展攻击 3.php://filter绕过正则实现phar反序列化 刷题记录:[ByteCTF 2019 ...