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.yml , confluence.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:
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:
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:
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.