• 在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'
    }

    增加图像詹金斯jmeter管道

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

    增加图像詹金斯jmeter管道

     

    指定构建参数

    如果您的现有作业已参数化,则参数可以通过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测试”阶段提供。

    增加图像詹金斯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文件。

    增加图像jenkins jmeter管道配置

    使用第三方构建工具(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”工件发布到构建仪表板。

    增加图像詹金斯jmeter管道蚂蚁

  • 相关阅读:
    Shell入门
    Linux基本的指令操作
    python网络爬虫入门范例
    Android中scrollview的scrollto方法不起作用的解决办法
    (转)Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
    unable to load class org.codehaus.groovy.runtime.typehandling.shorttypehandling解决方法
    JavaScript运行原理
    AsyncTask的doInBackground不工作原因分析
    Android中的多线程与异步任务
    使用webview加载网页时session同步
  • 原文地址:https://www.cnblogs.com/a00ium/p/10847823.html
Copyright © 2020-2023  润新知