目标:

创建包含性能测试流程的持续交付管道, 以尽早检测任何与性能相关的问题。

通常,全面的性能测试将在分段/预生产环境中完成,该环境可能与您的生产环境相同。在完成QA功能/回归验证后,将代码推送到分段。因此,即使QA对构建进行了认证,代码也可能无法在特定负载下按预期工作,而这些负载只能在Staging环境中找到。此性能问题需要再次进行代码更改 - >构建 - > QA验证,这可能会推迟您的生产推送!

那么,我们能否将性能测试融入现有的持续开发和测试流程中,以尽早发现性能问题?

是! 我们绝对可以!这里的想法是在较低的环境[Dev / QA]中运行性能测试(我们可能必须相应地调整负载)并将结果与​​某些基线指标进行比较。请注意,这不会取代我们将在Staging环境中执行的全面性能测试。

让我们看看如何使用JMeter + Ant + Jenkins在本文中实现上述过程。

创建性能测试脚本:

  1. 使用JMeter创建一些基本的性能测试脚本。
  2. 查看TestAutomationGuru下面的有用文章。
    1. 创建模块化JMeter测试脚本
    2. 确保脚本可以在QA / PPE / Staging等任何给定环境中运行。[点击此处 ]
  3. 我将考虑一个简单的JMeter测试,它将登录,搜索产品并注销。
    1. 我在Thread Count,Ramp Up和Duration字段中使用了变量。
    2. 在运行时,我们将从Jenkins传递这些变量的值。
    3. 要在设计模式/独立模式下运行测试,我们使用此处所示的用户定义变量。因此,它采用默认值(例如1个用户,1秒钟加速,持续5秒测试持续时间)。
  4. 确保脚本运行正常。

                         

使用ANT运行JMeter测试:

ANT:它是一个构建工具 - 在这里我们将使用ANT以给定的顺序执行一组任务。例如:

  • 通过删除临时文件来清理项目以进行新测试。
  • 通过将测试属性从Jenkins传递给JMeter来运行测试。
  • 创建报告
  • 创建图表

完成构建和单元/集成测试后,您将调用这些任务。

安装ANT:

  1. 这里下载Ant 。
  2. 将下载的文件解压缩到目录中。
  3. 设置环境变量
    • JAVA_HOME到你的Java环境
    • ANT_HOME到你解压缩Ant的目录
    • 将$ {ANT_HOME} / bin(Unix)或%ANT_HOME%/ bin(Windows)添加到PATH。
    • 如果您没有JMETER_HOME变量,请同样设置。它应该指向你看到'bin'的JMeter文件夹
  4. 在cmd提示符/终端中,键入ant  并输入如下所示。您应该看到以下消息(系统应该知道有'ant'命令)

创建ANT-JMeter项目:

现在我们将创建一个ANT项目,如下所示。[我在GitHub中分享了这个示例项目]

测试文件夹将包含您的.jmx文件

lib文件夹将包含ant-jmeter任务所需的所有库以及要包含在jmeter测试中的任何其他库。

函数文件夹将包含测试的所有beanshell脚本。

build.properties 一个属性文件,它将传递JMeter UDV的值。

ANT构建文件:

这是一个重要的部分。Ant需要一个build.xml文件(它不一定是'build.xml' - 但这是一个默认的名称,蚂蚁会期望),你需要定义所有的任务。
让我们创建一个build.xml文件,如下所示。[我在GitHub中分享了这个示例项目]

我们这里有3个目标。

  • 清理 - >清理作为测试一部分创建的临时文件夹
  • show-test-properties - >显示我们传递给测试的值
  • run - >运行jmeter测试

现在在命令提示符/终端中,转到项目文件夹并键入“ ant show-test-properties ”。你应该看到下面的输出。

ANT:运行JMeter测试:

让我们通过发出命令来运行测试:

蚂蚁跑

现在我们可以看到我们已经创建了日志和结果文件。

创建HTML报告:

运行以下命令以在输出文件夹下生成HTML报告

ANT生成报告

ant控制台日志:

报告:

创建图表:

上面的HTML文件本身有很好的图表。但是,您仍然可能希望通过命令行创建图表以通过电子邮件/冗余等发送。

要创建图表,我们需要很少的外部插件。

运行以下命令以安装所需的插件。

ant install-plugins

安装插件后,通过发出命令生成图表:

ANT生成图表

作业完成后,我们可以看到生成的所有图表都生成并放在结果文件夹下。

ANT - 按顺序运行所有任务:

通过发出命令运行所有ant任务:ant all

示例项目:

  • 您可以从此处克隆此示例项目。
  • 我正在为JMeter测试分配5GB内存。您可以在build.properties中根据需要修改该值

有问题吗?

  • 我看到读者的一些评论,即JMeter任务不是由Ant执行的。如果可能,请升级Java和Ant。[某些版本的Java 8和ant没有相处]
  • 如果它仍然不起作用,请执行以下任务命令以启用ant以向我们提供更多调试信息。

ant -v run

摘要:

现在,我们将能够通过从属性文件传递测试属性来通过ANT运行我们的JMeter测试。我们还自动创建HTML文件并从结果文件创建图表。

我们将在下一篇文章中看到如何从Jenkins调用此测试。

Meter - 连续性能测试 - JMeter + ANT + Jenkins集成 - 第1部分的更多相关文章

  1. JMeter - 连续性能测试 - JMeter + ANT + Jenkins集成 - 第2部分

    目标: 创建包含性能测试流程的持续交付管道,以尽早检测任何与性能相关的问题. 通常,全面的性能测试将在分段/预生产环境中完成,该环境可能与您的生产环境相同.在完成QA功能/回归验证后,将代码推送到分段 ...

  2. Jmeter+ant+jenkins集成

    已有jmeter.*.jmx脚本 一.jmeter+ant 1.下载安装ant(检查是否安装成功) 2.将 JMeter 所在目录下 extras 子目录里的 ant-JMeter-1.1.1.jar ...

  3. Jmeter+Ant+Jenkins集成抛出异常java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage

    一.问题描述 二.解决方法 下载javax.mail.jar插件,并将该插件放到%ANT_HOME%\lib目录下即可解决,下载地址:https://javaee.github.io/javamail ...

  4. 【此处有干货~】jmeter+ant+jenkins持续集成配置及过程中问题解决思路

    本人是一枚工作近三年的小测试,大学正好专业为软件测试,在工作中用到最多的是功能测试.接口测试.压力测试.偶尔会涉及到性能测试......(小白,很多观念技术跟大佬差距太大,勿喷) 在接口测试过程当中, ...

  5. Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)

    转自:http://my.oschina.net/hellotest/blog/516079 目录[-] 一.Jmeter+ant 二.Jmeter+ant+Jenkins 三.Tomcat配置虚拟目 ...

  6. Jmeter+Ant+Jenkins持续集成方案改进

    关于Jmeter+Ant+Jenkins如何搭建持续集成环境,网上资料一大把,就不多说了,本文主要谈一下期间的问题及扩展该持续集成方案. 其实核心的流程不复杂,Jenkins管理构建项目,Ant配置脚 ...

  7. Jmeter+Ant+Jenkins搭建持续集成的接口测试框架

    https://my.oschina.net/hellotest/blog/516079 摘要: 一个系统通常有多个接口,软件的生命周期中,我们会不断的去优化老的接口和开发新的接口,那么在这个过程中, ...

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

    摘自:https://testerhome.com/topics/13389 一.背景  上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...

  9. jmeter--接口自动化jmeter+ant+jenkins

    的 一.介绍 接口自动化工具:jmeter+ant+jenkins 流程: -1.jmeter已录制或手动设置好脚本后 -2.配置ant,使用Ant工具,进行批量执行jmeter的脚本 -3.使用Je ...

随机推荐

  1. 如何在MySQl数据库中给已有的数据表添加自增ID?

    由于使用MySQL数据库还没有多久的缘故,在搭建后台往数据库导入数据的时候发现新增的表单是没有自增id的,因次就有了上面这个问题. 解决方法 1.给某一张表先增加一个字段,这里我们就以node_tab ...

  2. 【IPC通信】key_t键和ftok函数

    System V IPC分为三种: System V消息队列 System V信号量 System V共享内存区 这三种类型的IPC使用key_t值做为它们的名字. key_t这个数据类型在<s ...

  3. HihoCoder1338 A Game(记忆化搜索)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a game. There is an integ ...

  4. POJ2689:素数区间筛选

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15820   Accepted: 4202 D ...

  5. nginx实现带参数目录域名重定向二级域名方法

    本文章介绍了关于nginx实现带参数目录域名重定向二级域名方法,有需要学习的朋友可参考一下. 下面的代码是基于nginx的子目录301到其他域名(URL)的规则.作用是例如访问http://www.p ...

  6. ES6学习之Async函数

    定义:Async函数是一个异步操作函数,本质上,Async函数是Generator函数的语法糖.async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await ...

  7. uva 512

    1. 问题 不知道怎么存储操作 看代码注释,else if等 2. 代码 #include <iostream> #include <stdio.h> #include < ...

  8. mysql设置远程登录

    服务器上,我们刚安装好MySQL后,是没有办法直接远程的,它只支持本地登录.所以我们必须要对刚安装好的MySQL进行设置,允许远程登录. 1. 使用“mysql -uroot -p”命令可以连接到本地 ...

  9. Java探索之旅(9)——数据和方法的可见性

    注意,在UML图中,public-protected-private分别用+,-,#表示. 类中成员修饰符 在同一类访问 在同一包访问 在子类内访问 在不同包可访问 Public √ √ √ √ Pr ...

  10. js中Math.round、parseInt、Math.floor和Math.ceil小数取整总结(转)

    js中Math.round.parseInt.Math.floor和Math.ceil小数取整总结 Math.round.parseInt.Math.floor和Math.ceil 都可以返回一个整数 ...