Test de charge Atlassian Jira, Confluence, Bitbucket Partie 1

Bonjour à tous!

Je veux partager mon expérience avec Atlassian Jira, Confluence et Bitbucket stress testing en utilisant la boîte à outils Atlassian dc-app-performance-toolkit .

Ce sera une série d'articles dans lesquels je ne parlerai pas de la méthodologie du test de charge, mais je ne parlerai que des aspects techniques du test de charge à l'aide de l'outil.

Si vous souhaitez en savoir plus sur la méthodologie de test de charge dans le contexte des produits Atlassian, j'en ai parlé à Highload 2018 .

Passons donc à la boîte à outils dc-app-performance-toolkit.

Cet outil vous permet de charger des applications Atlassian de test telles que Jira, Confluence et Bitbucket. J'ai découvert cet outil lorsque j'ai eu besoin de tester le plug-in Atlassian Jira pour la certification sur le Data Center, et j'ai tout de suite aimé cet outil car je n'ai pas eu à passer des heures à le configurer. Tout a fonctionné hors de la boîte.

L'outil utilise Taurus , jmeter et Selenium .

Vous pouvez utiliser cet outil aux fins suivantes:

  • Vous développez des plugins pour Atlassian Marketplace. Dans ce cas, vous pouvez utiliser cet outil pour certifier votre plug-in pour Data Center.
  • Atlassian Jira, Confluence Bitbucket , , , . . , . - . , Atlassian, Atlassian, , , . , .

Les étapes que vous devez effectuer pour tester Atlassian Jira, Confluence et Bitbucket sont les mêmes dans la plupart des cas, je vais donc faire tout le travail sur Atlassian Jira. S'il y a des étapes spécifiques pour le produit, je le mentionnerai.

Installation


La première chose à faire est d'obtenir un outil avec github:

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

Et allez dans le dossier créé:

cd dc-app-performance-toolkit

Ensuite, vous devez installer toutes les dépendances pour utiliser l'outil. Vous pouvez lire comment procéder dans path_to_dc_app_performance_toolkit / README.md .

Fichiers de configuration


Avant d'utiliser l'outil, veuillez lire la documentation de cet outil dans le dossier path_to_dc_app_performance_toolkit / doc .

Voici une brève description du contenu de ce dossier:

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


jira.yml


Avant de commencer le test de charge, vous devez apporter des modifications au fichier jira.ymlconfluence.yml  ou  bitbucket.yml , qui se trouvent dans le dossier  path_to_dc_app_performance_toolkit / app , selon le produit que vous allez tester. Ce sont des fichiers de configuration Taurus. Vous pouvez lire sur le Taureau ici .
Je ferai des commentaires sur jira.yml. Les fichiers pour d'autres produits sont construits sur le même principe.

settings:

paramètres est une section du fichier de configuration du Taurus. Il contient des options de niveau supérieur pour Taurus. Vous pouvez trouver plus d'informations sur cette section  ici .

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

artefacts-dir - modèle de chemin qui sera utilisé pour stocker les artefacts de test de charge. Voici une liste partielle des artefacts:

  • bzt.log - le journal de la commande bzt. Cette commande démarre le test de charge.
  • error_artifacts - un dossier pour stocker les captures d'écran et les tests html de Selenium, qui s'est terminé par des erreurs.
  • jmeter.err - Journal JMeter.
  • kpi.jtl - Données de test JMeter.
  • pytest.out - Journal d'exécution des tests Selenum.
  • selenium.jtl - Données d'essais au sélénium.
  • results.csv - résultats de tests agrégés.
  • jira.yml - jira.yml, qui a été utilisé pour les tests.


  aggregator: consolidator

agrégateur - l'agrégateur qui sera utilisé pour collecter les résultats des tests et transférer les résultats vers le module de rapport. Vous pouvez en savoir plus sur les agrégateurs ici .

  verbose: false

verbose - paramètre pour lancer Taurus en mode débogage. Dans notre cas, nous désactivons ce mode.

  env:

env vous permet de définir des variables d'environnement. Vous pouvez en lire plus  ici .

    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

Les paramètres ci-dessus contiennent des informations sur votre instance que vous allez tester. J'ai spécifié les paramètres de l'instance Jira, qui se trouve sur mon ordinateur. Ces paramètres seront utilisés dans JMeter, Selenium et les scripts.

    concurrency: 200
    test_duration: 45m

Ces paramètres seront transmis à la section d'exécution. J'expliquerai la signification de ces paramètres lorsqu'ils parleront de cette section.

  WEBDRIVER_VISIBLE: false

WEBDRIVER_VISIBLE définit la visibilité du navigateur Chrome lors de l'exécution des tests Selenium. Nous cachons Chrome.

 JMETER_VERSION: 5.2.1

JMETER_VERSION est la version de JMeter que nous utiliserons pour les tests.

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

services:

services - section du fichier de configuration Taurus. Les informations sur les scripts que vous devez exécuter avant de commencer, après et pendant le test sont indiquées ici. Vous pouvez en savoir plus sur cette section ici .

  - module: shellexec

L'exécuteur shell est utilisé pour exécuter des scripts.

    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

La préparation, l'arrêt et le post-processus sont les étapes du cycle de vie du Taurus. Vous pouvez en savoir plus sur le cycle de vie du Taureau ici . À chaque étape, des scripts sont exécutés. Ces scripts sont:

  • util / environment_checker.py - vérifie la version de Python et arrête le test si la version n'est pas la même.
  • util / data_preparation / jira / prepare-data.py - prépare les données de test. Nous parlerons de ce script en détail dans la partie suivante.
  • 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:

exécution - section du fichier de configuration Taurus. Contient des scripts qui seront exécutés pendant les tests. Vous pouvez trouver plus d'informations ici .

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

Ce sont les options d'exécution de script pour JMeter. Vous pouvez trouver plus d'informations  ici .

la concurrence est le nombre d'utilisateurs virtuels. Ce paramètre signifie combien d'utilisateurs simultanés JMeter simulera. Dans notre cas, nous simulons 200 utilisateurs travaillant simultanément.

ramp-up - teste le temps d'overclocking. Nous irons progressivement à 200 utilisateurs simultanément actifs. Dans notre cas, nous atteindrons 200 utilisateurs travaillant simultanément en 3 minutes.

hold-for - durée du test après avoir atteint un nombre donné d'utilisateurs simultanés dans le paramètre de concurrence.

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

Options d'exécution des tests de sélénium. Vous pouvez trouver plus d'informations  ici .

exécuteur testamentaire - Sélénium.
coureur - les tests seront effectués à l'aide de pytest.
conservation - durée du test.

scenarios:


scénarios - section du fichier de configuration Taurus. Voici la configuration de chaque script de la section d'exécution.

  selenium:
    script: selenium_ui/jira_ui.py

script - le chemin vers les tests Selenium.

  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

script - le chemin d'accès au projet JMeter, qui sera exécuté pendant les tests.

total_actions_per_hr le nombre d'actions qui seront effectuées en une heure. Une action consiste à effectuer un test. Les tests qui seront exécutés peuvent être compris à partir des paramètres perc_.
paramètres perc_ - pourcentage d'achèvement de chaque test. La somme de tous les paramètres perc_ doit être égale à 100%.

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


modules - section du fichier de configuration Taurus. Cette section contient une description de tous les modules qui seront utilisés pendant les tests.

  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 - paramètres du module JMeter. Vous pouvez lire sur le module Jmeter ici .
detect-plugins - JMeter Plugins Manager vous permet d'installer automatiquement des plugins pour JMeter. Nous avons défini ce paramètre sur yes, afin que Taurus indique à Jmeter d'installer automatiquement tous les plugins nécessaires.
plugins - une liste des plugins JMeter qui ont été utilisés lors de l'écriture des tests.
system-properties - paramètres supplémentaires pour 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

sélénium - paramètres pour le sélénium.
chromedriver est la version du pilote Chrome que nous utiliserons pour les tests.

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

reporting - section du fichier de configuration Taurus. Vous définissez ici les paramètres des modules d'analyse et de rapport. Nous utilisons le module de reporting JUnit xml. Vous pouvez trouver plus d'informations sur ce module ici .

Résumons.

Nous avons 6 sections dans le fichier jira.xml:
paramètres - paramètres et paramètres de niveau supérieur.
Vous devez modifier les paramètres suivants dans cette section:

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

Vous devrez peut-être également modifier les paramètres suivants:

concurrency: 5
test_duration: 5m

J'ai changé ces paramètres en petites valeurs pour que les tests fonctionnent rapidement.
Si vous avez modifié test_duration et concurrency, assurez-vous de vérifier le paramètre d'accélération dans la section d'exécution. Vous devrez peut-être également le modifier.
services - scripts qui seront exécutés aux étapes du cycle de vie du test Taurus.
exécution - paramètres d'exécution des scripts de test. Tout d'abord, exécutez JMeter, puis Selenium.
scénarios - paramètres de script de test. Vous aimerez peut-être changer le nombre d'opérations par heure et le pourcentage de tests. Je vais vous expliquer comment ajouter ou supprimer des tests dans l'une des parties suivantes.
modules - modules utilisés pour les tests. Nous utilisons le consolidateur, JMeter et Selenium. Taurus nous fournit la disponibilité de ces modules pendant les tests.
reporting - paramètres du module de reporting.
Bien. Nous avons modifié le fichier de configuration et sommes prêts à exécuter les tests.

Exécuter le test


Tout d'abord, activez l'environnement virtuel Python (vous pouvez trouver des informations à ce sujet dans le fichier README.md ), accédez au dossier de l'application et exécutez le test:

bzt jira.yml

Dans mon cas, le test a échoué avec une erreur:

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

Tout est correct. Ma copie de Jira est vide. Il est nécessaire de le remplir avec des données pour les tests. Je vais vous dire comment le faire, dans la partie 2.

All Articles