Lasttests Atlassian Jira, Confluence, Bitbucket Teil 1

Hallo alle zusammen!

Ich möchte meine Erfahrungen mit Atlassian Jira, Confluence und Bitbucket Stresstests mit dem Atlassian DC-App-Performance-Toolkit teilen .

Dies wird eine Reihe von Artikeln sein, in denen ich nicht auf die Methodik des Lasttests eingehen werde, sondern nur auf die technischen Aspekte des Lasttests mit dem Tool.

Wenn Sie mehr über die Lasttestmethode im Zusammenhang mit Atlassian-Produkten erfahren möchten, habe ich auf der Highload 2018 darüber gesprochen .

Fahren wir also mit dem DC-App-Performance-Toolkit fort.

Mit diesem Tool können Sie Testanwendungen von Atlassian wie Jira, Confluence und Bitbucket laden. Ich habe von diesem Tool erfahren, als ich das Atlassian Jira-Plugin für die Zertifizierung im Rechenzentrum testen musste, und sofort mochte ich dieses Tool, da ich keine Stunden damit verbringen musste, es einzurichten. Alles hat sofort funktioniert.

Das Tool verwendet Taurus , Jmeter und Selen .

Sie können dieses Tool für folgende Zwecke verwenden:

  • Sie entwickeln Plugins für den Atlassian Marketplace. In diesem Fall können Sie dieses Tool verwenden, um Ihr Plug-In für Data Center zu zertifizieren.
  • Sie verwenden Atlassian Jira, Confluence und Bitbucket für Ihre eigenen Anforderungen und ändern diese Produkte mithilfe von Standardtools, Skripten, Plugins oder anderen Mitteln. Sie möchten verstehen, wie Ihre Konfiguration der Belastung standhält. In diesem Fall können Sie dieses Tool auch verwenden. Darüber hinaus ist zu beachten, dass Sie Stresstests an Ihren eigenen Daten durchführen können. Dazu müssen Sie im Tool nichts wiederholen. Die Dokumentation für das Tool besagt, dass es nur bestimmte Versionen von Atlassian-Produkten unterstützt. Wenn Sie jedoch keine vollständig alte Version von Atlassian-Produkten haben, funktioniert das Tool höchstwahrscheinlich ohne zusätzliche Änderungen. In dieser Artikelserie werde ich Ihnen auf jeden Fall erklären, wie Sie das Tool ändern können.

Die Schritte, die Sie ausführen müssen, um Atlassian Jira, Confluence und Bitbucket zu testen, sind in den meisten Fällen dieselben, daher werde ich die gesamte Arbeit an Atlassian Jira ausführen. Wenn es bestimmte Schritte für das Produkt gibt, werde ich dies erwähnen.

Installation


Das erste, was zu tun ist, ist ein Tool mit Github zu bekommen:

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

Und gehen Sie zum erstellten Ordner:

cd dc-app-performance-toolkit

Als Nächstes müssen Sie alle Abhängigkeiten für die Verwendung des Tools installieren. Wie das geht, lesen Sie in path_to_dc_app_performance_toolkit / README.md .

Konfigurationsdateien


Bevor Sie das Tool verwenden, lesen Sie bitte die Dokumentation zu diesem Tool im Ordner path_to_dc_app_performance_toolkit / doc .

Hier ist eine kurze Beschreibung des Inhalts dieses Ordners:

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


jira.yml


Vor dem Lasttest starten, müssen Sie Änderungen an der machen jira.ymlconfluence.yml  oder  bitbucket.yml Datei , die in der Lage sind path_to_dc_app_performance_toolkit / app Ordner  , je nachdem , welches Produkt Sie testen wollen. Dies sind Taurus-Konfigurationsdateien. Sie können hier über Stier lesen .
Ich werde Kommentare zu jira.yml geben. Dateien für andere Produkte basieren auf demselben Prinzip.

settings:

Einstellungen ist ein Abschnitt der Taurus-Konfigurationsdatei. Es enthält Optionen der obersten Ebene für Stier. Weitere Informationen zu diesem Abschnitt finden Sie  hier .

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

Artefakte-Verzeichnis - Pfadvorlage, die zum Speichern von Lasttest-Artefakten verwendet wird. Hier ist eine unvollständige Liste von Artefakten:

  • bzt.log - das Protokoll des Befehls bzt. Dieser Befehl startet den Lasttest.
  • error_artifacts - Ein Ordner zum Speichern von Screenshots und HTML-Tests von Selenium, der mit Fehlern endete.
  • jmeter.err - JMeter-Protokoll.
  • kpi.jtl - JMeter-Testdaten.
  • pytest.out - Selenum-Testausführungsprotokoll.
  • selenium.jtl - Selentestdaten.
  • results.csv - aggregierte Testergebnisse.
  • jira.yml - jira.yml, das zum Testen verwendet wurde.


  aggregator: consolidator

Aggregator - Der Aggregator, mit dem Testergebnisse erfasst und an das Berichtsmodul übertragen werden. Weitere Informationen zu Aggregatoren finden Sie hier .

  verbose: false

verbose - Parameter zum Starten von Taurus im Debug-Modus. In unserem Fall schalten wir diesen Modus aus.

  env:

Mit env können Sie Umgebungsvariablen festlegen. Sie können mehr lesen  hier .

    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

Die obigen Parameter enthalten Informationen zu Ihrer Instanz, die Sie testen möchten. Ich habe die Parameter für die Jira-Instanz angegeben, die sich auf meinem Computer befindet. Diese Parameter werden in JMeter, Selenium und Skripten verwendet.

    concurrency: 200
    test_duration: 45m

Diese Parameter werden an den Ausführungsabschnitt übergeben. Ich werde die Bedeutung dieser Parameter erklären, wenn sie über diesen Abschnitt sprechen.

  WEBDRIVER_VISIBLE: false

WEBDRIVER_VISIBLE legt die Sichtbarkeit des Chrome-Browsers während der Ausführung von Selenium-Tests fest. Wir verstecken Chrome.

 JMETER_VERSION: 5.2.1

JMETER_VERSION ist die Version von JMeter, die wir zum Testen verwenden werden.

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

services:

services - Abschnitt der Taurus-Konfigurationsdatei. Informationen darüber, welche Skripte Sie vor dem Start, nach und während des Tests ausführen müssen, finden Sie hier. Weitere Informationen zu diesem Abschnitt finden Sie hier .

  - module: shellexec

Shell Executor wird zum Ausführen von Skripten verwendet.

    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

Vorbereiten, Herunterfahren und Nachbearbeiten sind die Phasen des Stier-Lebenszyklus. Weitere Informationen zum Stier-Lebenszyklus finden Sie hier . In jeder Phase werden Skripte ausgeführt. Diese Skripte sind:

  • util / environment_checker.py - Überprüft die Version von Python und stoppt den Test, wenn die Version nicht identisch ist.
  • util / data_preparation / jira / prepare-data.py - bereitet Testdaten vor. Wir werden im nächsten Teil ausführlich über dieses Skript sprechen.
  • 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:

Ausführung - Abschnitt der Taurus-Konfigurationsdatei. Enthält Skripte, die während des Tests ausgeführt werden. Weitere Informationen finden Sie hier .

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

Dies sind die Skriptausführungsoptionen für JMeter. Weitere Informationen finden Sie  hier .

Parallelität ist die Anzahl der virtuellen Benutzer. Dieser Parameter gibt an, wie viele gleichzeitige Benutzer JMeter simulieren wird. In unserem Fall simulieren wir 200 gleichzeitig arbeitende Benutzer.

Hochlauf - Übertaktungszeit testen. Wir werden schrittweise zu 200 gleichzeitig arbeitenden Benutzern gehen. In unserem Fall erreichen wir in 3 Minuten 200 gleichzeitig arbeitende Benutzer.

hold-for - Dauer des Tests nach Erreichen einer bestimmten Anzahl gleichzeitiger Benutzer im Parameter parallel.

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

Ausführungsoptionen für Selentests. Weitere Informationen finden Sie  hier .

Testamentsvollstrecker - Selen.
Läufertests werden mit Pytest durchgeführt.
Hold-for - Testdauer.

scenarios:


Szenarien - Abschnitt der Taurus-Konfigurationsdatei. Hier ist die Konfiguration für jedes Skript aus dem Ausführungsabschnitt.

  selenium:
    script: selenium_ui/jira_ui.py

Skript - der Pfad zu den Selen-Tests.

  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

Skript - Der Pfad zum JMeter-Projekt, der während des Tests ausgeführt wird.

total_actions_per_hr Die Anzahl der Aktionen, die in einer Stunde ausgeführt werden. Eine Aktion besteht darin, einen Test durchzuführen. Die Tests, die ausgeführt werden, können aus den perc_-Parametern verstanden werden.
perc_ parameters - Prozentsatz des Abschlusses jedes Tests. Die Summe aller perc_-Parameter muss 100% betragen.

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


Module - Abschnitt der Taurus-Konfigurationsdatei. Dieser Abschnitt enthält eine Beschreibung aller Module, die während des Tests verwendet werden.

  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 - Parameter des JMeter-Moduls. Über das Jmeter-Modul können Sie hier lesen .
Plugins erkennen - Mit JMeter Plugins Manager können Sie Plugins für JMeter automatisch installieren. Wir setzen diesen Parameter auf yes, damit Taurus Jmeter anweist, alle erforderlichen Plugins automatisch zu installieren.
Plugins - Eine Liste der JMeter-Plugins, die beim Schreiben der Tests verwendet wurden.
Systemeigenschaften - zusätzliche Parameter für 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

Selen - Parameter für Selen.
chromedriver ist die Version des Chrome-Treibers, die wir zum Testen verwenden werden.

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

Berichterstellung - Abschnitt der Taurus-Konfigurationsdatei. Hier legen Sie die Einstellungen für die Analyse- und Berichtsmodule fest. Wir verwenden das JUnit xml-Berichtsmodul. Weitere Informationen zu diesem Modul finden Sie hier .

Fassen wir zusammen.

Wir haben 6 Abschnitte in der Datei jira.xml:
Einstellungen - Einstellungen und Parameter der obersten Ebene.
In diesem Abschnitt müssen Sie die folgenden Parameter ändern:

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

Möglicherweise müssen Sie auch die folgenden Parameter ändern:

concurrency: 5
test_duration: 5m

Ich habe diese Parameter in kleine Werte geändert, damit die Tests schnell funktionieren.
Wenn Sie test_duration und Parallelität geändert haben, überprüfen Sie unbedingt den Hochlaufparameter im Ausführungsabschnitt. Möglicherweise müssen Sie es auch ändern.
Services - Skripte, die in den Phasen des Taurus-Testlebenszyklus ausgeführt werden.
Ausführung - Ausführungsparameter von Testskripten. Führen Sie zuerst JMeter und dann Selenium aus.
Szenarien - Testskriptparameter testen. Vielleicht möchten Sie die Anzahl der Vorgänge pro Stunde und den Prozentsatz der Tests ändern. Ich werde in einem der folgenden Teile darüber sprechen, wie Sie Tests hinzufügen oder entfernen.
Module - Module, die für Tests verwendet werden. Wir verwenden Consolidator, JMeter und Selen. Taurus bietet uns die Verfügbarkeit dieser Module während des Testens.
Reporting - Parameter des Reporting-Moduls.
Gut. Wir haben die Konfigurationsdatei geändert und sind bereit, die Tests auszuführen.

Lauftest


Aktivieren Sie zunächst die virtuelle Python-Umgebung (Informationen dazu finden Sie in der Datei README.md ), wechseln Sie in den App-Ordner und führen Sie den Test aus:

bzt jira.yml

In meinem Fall ist der Test mit einem Fehler fehlgeschlagen:

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

Alles ist richtig. Meine Kopie von Jira ist leer. Es ist notwendig, es mit Daten zum Testen zu füllen. Ich werde Ihnen in Teil 2 sagen, wie es geht.

All Articles