JMeter

目标:

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

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

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

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

注意:如果您还没有阅读这篇文章 - 我建议您阅读本文中关于JMeter + Ant集成的第1部分。

Jmeter安装:

请查看  此链接,了解在各种操作系统上安装Jenkins的详细步骤。

创建Jenkins工作:

  • 创建一个简单的自由风格项目。

jmjen-01

  • 构建步骤应该是' Invoke Ant '

[我们将使用默认Ant,假设从机已经安装了Ant。如果没有,让jenkins自动安装ANT。]

jmjen-03

  • 我们将调用目标' all '作为目标'all'在我们想要执行的任务下执行。
    • 清洁
    • 节目试验性能
    • 生成报告
    • 产生,图表
  • 我们的测试使用以下属性。我们将通过Ant将这些属性的值从Jenkins传递给JMeter,如上所述。
    • threadgroup.count
    • threadgroup.rampup
    • threadgroup.duration
  • 我们的项目文件夹位于C:/ workspace / CPT下。所以相应地设置自定义工作区。

jmjen-02

  • 我们的测试在结果文件夹下创建结果我们需要存档我们需要的文件,如下所示。要归档结果下的所有文件,请使用result *。*

注意:Jenkins将在工作区下查找文件。因此,设置相对于工作空间的路径。

jmjen-04

从Jenkins调用JMeter测试:

  • 如果上述所有步骤都已正确完成,单击“Build”将运行jmeter测试。我们可以看到一个很好的输出,如下所示。它运行3个用户的测试,3秒作为加速期100秒。

jmjen-05

  • 测试运行完成后,Jenkins将所有文件归档到结果文件夹下。它包括我们创建的HTML文件+ PNG图表。它存档每次运行的结果,并将它们存储在jenkins运行的服务器中。

jmjen-06

  • 我们可以让我们的团队成员在Jenkins UI中输入这些值,而不是使用硬编码的测试属性。为了使它工作,我们需要使这个工作参数化并让我们创建3个参数,因为我们的测试需要运行3个参数。我们也可以为这些参数设置默认值。

jmjen-15

  • 修改Build  - > Properties部分以使用我们创建的Jenkins参数。此步骤是必需的,因为Ant期望这些变量'threadgroup.count'等的值。[你也可以通过这样创建jenkins参数来避免这一步:代替USER_COUNT,我们可以创建threadgroup.count作为Jenkins参数名称。]。由于Jenkins参数和Ant参数不同,我们应该如下图所示。

jmjen-16

  • 就是这样 - 现在,我们应该能够直接从Jenkins UI传递JMeter测试所需的参数值。输入一些值,然后单击Build。控制台将显示传递给测试的新值,JMeter将相应地运行测试。下面的输出显示JMeter调用5个线程。

jmjen-17

jmjen-18

Jenkins-Performance插件:

Jenkins有一个JMeter插件,用于解析结果文件,创建聚合报告,创建图表以及将当前结果与之前的结果进行比较等。

您可以在此处找到有关插件的更多详细信息 

[注意:只有当结果以XML格式存储时,此插件才会解析结果文件。如果您更喜欢使用CSV格式,它将无法正常工作]

安装插件后,对于Jenkins Job,我们可以Post build actions找到“ Publish Performance test results report ” 在“报告文件”部分中,提供输出jtl文件的相对路径(到工作空间)。 

jmjen-08

  • 当我们多次运行测试时,我们可以看到Jenkins开始将性能测试的结果与之前的测试进行比较,并显示了很好的摘要输出。在下面的摘要中你会看到很多0作为响应时间, 因为我在这个演示中使用了一个调试采样器,它不需要时间来执行。响应时间图表显示了一个starighline,因为它在我的测试中总是为0。

jmjen-09

  • 要获得有关每个采样器的更多详细信息,请单击采样器。Jenkins将为每个采样器提供响应时间图表,如下所示。它还以表格格式显示数据以及HTTP响应代码,这很好!!

jmjen-10

通过结果:

Jenkins有一个很好的插件可以通过电子邮件发送结果。请查看此链接以获取更多详细信息。

安装插件后,您可以找到帖子构建操作' 可编辑电子邮件通知 '

  • 可编辑电子邮件通知的触发器下  我们将触发器设置为“始终”[始终 - >是否测试失败。您也可以更改触发器,以便仅在测试通过时发送邮件等]
  • 一旦JMeter运行测试,后构建操作将按照它们在Jenkins作业/项目配置中的顺序连续执行。因此,当执行此“post build action”时,结果文件已经在结果文件夹下创建。我们可能希望将HTML文件包含在电子邮件正文中并附加图像。[如果您不想在电子邮件正文中使用HTML或使用TXT格式,请附加HTML文件以及附件和图像]
  • 下面的屏幕截图将介绍发送邮件的基本配置。[我假设您已经设置了电子邮件服务器配置,或者您的Jenkins管理员会这样做]

jmjen-12

  • 让我们再次运行我们的测试,看看Jenkins是否可以在运行测试后为我们发送结果。
  • 并且..是的....我收到了这里显示的电子邮件!

jmjen-13

  • 所有图表文件也附在收到的电子邮件中。

jmjen-14

摘要:

通过将JMeter与Ant和Jenkins集成,我们做得很好。因此,实施了连续性能测试过程  设置。我们也可以通过在Jenkins中单击一下来运行测试。当您专注于其他任务时,Jenkins负责运行测试,创建结果并为您发送结果!它还减少了对性能测试人员的依赖。是..!!任何人都可以立即进行测试。您只需要共享您创建的Jenkins作业的链接。

我们还可以将这项工作与Jenkins的“开发部署”工作集成在一起 - 也就是说......无论何时将代码推送到给定的测试环境,此工作都会自动执行,无需任何人工干预。任何功能测试和性能测试都可以尽早完成,以便及早发现任何问题!!

Grafana实时实施结果:

JMeter-Jenkins集成,通过电子邮件发送结果非常棒!! 但是如果你注意到,为了得到结果,我们需要等待测试完成。当詹金斯正在进行测试时,看到结果会不会很棒!! ??

如果你像我一样有一个长时间运行的测试,你很想看到当Jenkins正在运行测试时看到当前的结果 - 请查看我最喜欢的帖子之一来获得实时结果

原文地址:https://www.cnblogs.com/a00ium/p/10381289.html