负载测试Atlassian Jira,Confluence,Bitbucket第1部分

大家好!

我想分享使用Atlassian dc-app-performance-toolkit进行Atlassian Jira,Confluence和Bitbucket压力测试的经验

这是一系列文章,在这里我不会谈论负载测试的方法,而只会谈论使用该工具进行负载测试的技术方面。

如果您想了解有关Atlassian产品的负载测试方法的更多信息,那么我在Highload 2018上谈到了这一点

因此,让我们继续使用dc-app-performance-toolkit。

该工具允许您加载测试Atlassian应用程序,例如Jira,Confluence和Bitbucket。当我需要在数据中心上测试Atlassian Jira插件以进行认证时,我就了解了该工具,然后立即喜欢上了该工具,因为我不必花费数小时来设置它。一切开箱即用。

该工具使用TaurusjmeterSelenium

您可以将此工具用于以下目的:

  • 您正在为Atlassian Marketplace开发插件。在这种情况下,您可以使用此工具来认证您的Data Center插件。
  • 您可以根据自己的需要使用Atlassian Jira,Confluence和Bitbucket,并使用标准工具,脚本,插件或任何其他方式修改这些产品,并且希望了解配置如何承受负载。在这种情况下,您也可以使用此工具。此外,请务必注意,您可以对自己的数据进行压力测试。为此,您不必重做工具中的任何内容。该工具的文档说它仅支持Atlassian产品的某些版本,但是如果您没有Atlassian产品的完全旧的版本,则该工具很可能无需其他修改即可工作。无论如何,在本系列文章中,我将告诉您如何修改该工具。

在大多数情况下,测试Atlassian Jira,Confluence和Bitbucket所需执行的步骤是相同的​​,因此,我将在Atlassian Jira上进行所有工作。如果产品有任何特定步骤,我将提及。

安装


首先要做的是使用github获得一个工具:

git clone https://github.com/atlassian/dc-app-performance-toolkit.git

并转到创建的文件夹:

cd dc-app-performance-toolkit

接下来,您需要安装所有依赖项才能使用该工具。您可以在path_to_dc_app_performance_toolkit / README.md中阅读如何执行此操作

配置文件


在使用该工具之前,请阅读path_to_dc_app_performance_toolkit / doc文件夹中该工具的文档

这是此文件夹内容的简要说明:

  • 3 md ( Jira, Confluence Bitbucket). , Data Center.
  • : jira, confluence bitbucket , .


jira.yml


在开始负载测试之前,您需要对path.to_dc_app_performance_toolkit / app文件夹中  jira.yml,  confluence.yml  或  bitbucket.yml文件进行更改,具体取决于要测试的产品。这些是Taurus配置文件。您可以在这里阅读有关金牛座的信息 我将在jira.yml上发表评论。其他产品的文件是基于相同原理构建的。


settings:

设置是Taurus配置文件的一部分。它包含金牛座的顶级选项。您可以在此处找到有关此部分的更多信息 

  artifacts-dir: results/jira/%Y-%m-%d_%H-%M-%S

artifacts-dir-将用于存储负载测试工件的路径模板。这是工件的部分列表:

  • bzt.log -bzt命令的日志。此命令开始负载测试。
  • error_artifacts -一个文件夹,用于存储Selenium的屏幕截图和html测试,但以错误结尾。
  • jmeter.err -JMeter日志。
  • kpi.jtl -JMeter测试数据。
  • pytest.out -Selenum测试执行日志。
  • selenium.jtl -硒测试数据。
  • results.csv -汇总测试结果。
  • jira.yml -jira.yml,用于测试。


  aggregator: consolidator

聚合器-用于收集测试结果并将结果传输到报告模块的聚合器。您可以在此处阅读有关聚合器的更多信息

  verbose: false

verbose-用于在调试模式下启动Taurus的参数。在我们的情况下,我们关闭此模式。

  env:

env允许您设置环境变量。您可以在这里阅读更多内容 

    application_hostname: localhost   # Jira DC hostname without protocol and port e.g. test-jira.atlassian.com or localhost
    application_protocol: http      # http or https
    application_port: 2990            # 80, 443, 8080, 2990, etc
    application_postfix: /jira           # e.g. /jira in case of url like http://localhost:2990/jira
    admin_login: admin
    admin_password: admin

上面的参数包含有关要测试的实例的信息。我为计算机上的Jira实例指定了参数。这些参数将在JMeter,Selenium和脚本中使用。

    concurrency: 200
    test_duration: 45m

这些参数将传递到执行部分。在讨论本节时,我将解释这些参数的含义。

  WEBDRIVER_VISIBLE: false

WEBDRIVER_VISIBLE设置执行Selenium测试期间Chrome浏览器的可见性。我们正在隐藏Chrome。

 JMETER_VERSION: 5.2.1

JMETER_VERSION是我们将用于测试的JMeter版本。

    allow_analytics: Yes            # ,        Atlassian.    Atlassian ,   ,   ,       .

services:

services-Taurus配置文件的部分。在此处指示有关在开始测试之前,之后和期间需要运行哪些脚本的信息。您可以在此处阅读有关此部分的更多信息

  - module: shellexec

Shell executor用于执行脚本。

    prepare:
      - python util/environment_checker.py
      - python util/data_preparation/jira/prepare-data.py
    shutdown:
      - python util/jmeter_post_check.py
      - python util/jtl_convertor/jtls-to-csv.py kpi.jtl selenium.jtl
    post-process:
      - python util/analytics.py jira
      - python util/cleanup_results_dir.py

准备,关闭和后期处理是金牛座生命周期的各个阶段。您可以在此处阅读有关Taurus生命周期的更多信息在每个阶段,都会运行脚本。这些脚本是:

  • util / environment_checker.py-检查Python的版本,如果版本不同则停止测试。
  • util / data_preparation / jira / prepare-data.py-准备测试数据。我们将在下一部分中详细讨论该脚本。
  • util/jmeter_post_check.py – , kpi.jtl. , - JMeter.
  • util/jtl_convertor/jtls-to-csv.py kpi.jtl selenium.jtl – results.csv kpi.jtl selenium.jtl. results.csv . : , , 90% , .
  • util/analytics.py jira – Atlassian. Atlassian allow_analytics.
  • util/cleanup_results_dir.py – , .


execution:

执行-Taurus配置文件的部分。包含将在测试期间执行的脚本。您可以在此处找到更多信息

  - scenario: jmeter
    concurrency: ${concurrency}
    hold-for: ${test_duration}
    ramp-up: 3m

这些是JMeter的脚本执行选项。您可以在此处找到更多信息 

并发是虚拟用户数。该参数表示JMeter将模拟多少个并发用户。在我们的案例中,我们模拟了200个同时工作的用户。

加速-测试超频时间。我们将逐步达到200个同时工作的用户。在我们的案例中,我们将在3分钟内达到200个同时工作的用户。

保持-在并发参数中达到给定数量的并发用户后的测试持续时间。

  - scenario: selenium
    executor: selenium
    runner: pytest
    hold-for: ${test_duration}

硒测试执行选项。您可以在此处找到更多信息 

执行者-硒。
Runner-测试将使用pytest进行。
保留-测试时间。

scenarios:


方案-Taurus配置文件的部分。这是执行部分中每个脚本的配置。

  selenium:
    script: selenium_ui/jira_ui.py

脚本-硒测试的路径。

  jmeter:
# provides path to the jmeter project file
    script: jmeter/jira.jmx
    properties:
      application_hostname: ${application_hostname}
      application_protocol: ${application_protocol}
      application_port: ${application_port}
      application_postfix: ${application_postfix}
      # Workload model
# the number of actions for an hour. 
      total_actions_per_hr: 54500
# actions and the % of execution within one hour. The sum of all parameters must equal to 100%
      perc_create_issue: 4
      perc_search_jql: 13
      perc_view_issue: 43
      perc_view_project_summary: 4
      perc_view_dashboard: 12
      perc_edit_issue: 4
      perc_add_comment: 2
      perc_browse_projects: 4
      perc_view_scrum_board: 3
      perc_view_kanban_board: 3
      perc_view_backlog: 6
      perc_browse_boards: 2
      perc_standalone_extension: 0 # By default disabled

脚本-JMeter项目的路径,将在测试期间执行。

total_actions_per_hr一小时内将执行的操作数。一种措施是执行一项测试。可以从perc_参数中了解将要运行的测试。
perc_参数-每个测试的完成百分比。所有perc_参数的总和必须等于100%。

modules:
  consolidator:
    rtimes-len: 0 # CONFSRVDEV-7631 reduce sampling
    percentiles: [] # CONFSRVDEV-7631 disable all percentiles due to Taurus's excessive memory usage


modules-Taurus配置文件的部分。本节包含测试期间将使用的所有模块的说明。

  jmeter:
    version: ${JMETER_VERSION}
    detect-plugins: true
    memory-xmx: 8G  # allow JMeter to use up to 8G of memory
    plugins:
      - bzm-parallel=0.4
      - bzm-random-csv=0.6
      - jpgc-casutg=2.5
      - jpgc-dummy=0.2
      - jpgc-ffw=2.0
      - jpgc-fifo=0.2
      - jpgc-functions=2.1
      - jpgc-json=2.6
      - jpgc-perfmon=2.1
      - jpgc-prmctl=0.4
      - jpgc-tst=2.4
      - jpgc-wsc=0.3
      - tilln-sshmon=1.0
      - jpgc-cmd=2.2
      - jpgc-synthesis=2.2
    system-properties:
      server.rmi.ssl.disable: true
      java.rmi.server.hostname: localhost
      httpsampler.ignore_failed_embedded_resources: "true"

jmeter-JMeter模块的参数。您可以在此处阅读有关Jmeter模块的信息
detect-plugins-JMeter插件管理器允许您自动安装JMeter插件。我们将此参数设置为yes,以便Taurus告诉Jmeter自动安装所有必需的插件。
插件-编写测试时使用的JMeter插件列表。
系统属性-JMeter的附加参数。

  selenium:
# version of the chrome driver
    chromedriver:
      version: "80.0.3987.106" # Supports Chrome version 80. You can refer to http://chromedriver.chromium.org/downloads

硒-硒的参数。
chromedriver是我们将用于测试的Chrome驱动程序的版本。

reporting:
- data-source: sample-labels
  module: junit-xml

报告-Taurus配置文件的部分。在这里,您可以设置分析和报告模块的设置。我们使用JUnit xml报告模块。您可以在此处找到有关此模块的更多信息

让我们总结一下。

jira.xml文件中有6个部分:
设置-顶级设置和参数。
您需要在此部分中更改以下参数:

application_hostname: localhost   # Jira DC hostname without protocol and port e.g. test-jira.atlassian.com or localhost
    application_protocol: http      # http or https
    application_port: 2990            # 80, 443, 8080, 2990, etc
    application_postfix: /jira           # e.g. /jira in case of url like http://localhost:2990/jira
    admin_login: admin
    admin_password: admin

您可能还需要更改以下参数:

concurrency: 5
test_duration: 5m

我将这些参数更改为较小的值,以便快速进行测试。
如果您更改了test_duration和并发性,请确保在执行部分中检查斜升参数。您可能也需要更改它。
服务-将在Taurus测试生命周期的各个阶段执行的脚本。
执行-测试脚本的执行参数。首先,运行JMeter,然后运行Selenium。
方案-测试脚本参数。也许您想更改每小时的操作次数和测试百分比。我将在以下部分之一中讨论如何添加或删除测试。
模块-用于测试的模块。我们使用合并器,JMeter和Selenium。Taurus在测试过程中为我们提供了这些模块的可用性。
报表-报表模块的参数。
好。我们已经更改了配置文件,并准备运行测试。

运行测试


首先,激活Python虚拟环境(您可以在README.md文件中找到有关此信息),转到app文件夹并运行测试:

bzt jira.yml

就我而言,测试失败并显示以下错误:

17:03:26 WARNING: Errors for python util/data_preparation/jira/prepare-data.py:
There are no software projects in Jira

一切正确。我的吉拉副本是空的。有必要用测试数据填充它。在第2部分中,我将告诉您如何执行此操作。

All Articles