Prueba de carga Atlassian Jira, Confluence, Bitbucket Part 1

¡Hola a todos!

Quiero compartir mi experiencia con Atlassian Jira, Confluence y Bitbucket stress testing usando Atlassian dc-app-performance-toolkit .

Esta será una serie de artículos en los que no hablaré sobre la metodología de las pruebas de carga, pero solo hablaré sobre los aspectos técnicos de las pruebas de carga utilizando la herramienta.

Si desea obtener más información sobre la metodología de prueba de carga en el contexto de los productos Atlassian, hablé de esto en Highload 2018 .

Entonces, pasemos al kit de herramientas dc-app-performance-tool.

Esta herramienta le permite cargar aplicaciones Atlassian de prueba como Jira, Confluence y Bitbucket. Aprendí sobre esta herramienta cuando necesitaba probar el plugin Atlassian Jira para la certificación en el Centro de datos, e inmediatamente me gustó esta herramienta porque no tuve que pasar horas configurándola. Todo salió de la caja.

La herramienta utiliza Tauro , jmeter y selenio .

Puede usar esta herramienta para los siguientes propósitos:

  • Está desarrollando complementos para Atlassian Marketplace. En este caso, puede usar esta herramienta para certificar su complemento para el Centro de datos.
  • Atlassian Jira, Confluence Bitbucket , , , . . , . - . , Atlassian, Atlassian, , , . , .

Los pasos que debe realizar para probar Atlassian Jira, Confluence y Bitbucket son los mismos en la mayoría de los casos, por lo que haré todo el trabajo en Atlassian Jira. Si hay pasos específicos para el producto, lo mencionaré.

Instalación


Lo primero que debe hacer es obtener una herramienta con github:

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

Y ve a la carpeta creada:

cd dc-app-performance-toolkit

A continuación, debe instalar todas las dependencias para usar la herramienta. Puede leer cómo hacer esto en path_to_dc_app_performance_toolkit / README.md .

Archivos de configuración


Antes de usar la herramienta, lea la documentación de esta herramienta en la carpeta path_to_dc_app_performance_toolkit / doc .

Aquí hay una breve descripción del contenido de esta carpeta:

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


jira.yml


Antes de comenzar la prueba de carga, debe realizar cambios en el archivo jira.ymlconfluence.yml  o  bitbucket.yml , que se encuentran en la carpeta  path_to_dc_app_performance_toolkit / app , según el producto que vaya a probar. Estos son los archivos de configuración de Taurus. Puedes leer sobre Tauro aquí .
Haré comentarios sobre jira.yml. Los archivos para otros productos se basan en el mismo principio.

settings:

la configuración es una sección del archivo de configuración de Taurus. Contiene opciones de nivel superior para Tauro. Puede encontrar más información sobre esta sección  aquí .

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

artifacts-dir: plantilla de ruta que se usará para almacenar artefactos de prueba de carga. Aquí hay una lista parcial de artefactos:

  • bzt.log - el registro del comando bzt. Este comando inicia la prueba de carga.
  • error_artifacts - una carpeta para almacenar capturas de pantalla y pruebas html de Selenium, que terminó con errores.
  • jmeter.err - Registro de JMeter.
  • kpi.jtl - Datos de prueba de JMeter.
  • pytest.out - Registro de ejecución de prueba de Selenum.
  • selenium.jtl - Datos de prueba de selenio.
  • results.csv - resultados agregados de la prueba.
  • jira.yml - jira.yml, que se usó para las pruebas.


  aggregator: consolidator

agregador: el agregador que se utilizará para recopilar resultados de pruebas y transferir los resultados al módulo de informes. Puedes leer más sobre agregadores aquí .

  verbose: false

detallado: parámetro para iniciar Taurus en modo de depuración. En nuestro caso, desactivamos este modo.

  env:

env le permite establecer variables de entorno. Puedes leer más  aquí .

    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

Los parámetros anteriores contienen información sobre su instancia que va a probar. Especifiqué los parámetros para la instancia de Jira, que se encuentra en mi computadora. Estos parámetros se usarán en JMeter, Selenium y scripts.

    concurrency: 200
    test_duration: 45m

Estos parámetros se pasarán a la sección de ejecución. Explicaré el significado de estos parámetros cuando hablen de esta sección.

  WEBDRIVER_VISIBLE: false

WEBDRIVER_VISIBLE establece la visibilidad del navegador Chrome durante la ejecución de las pruebas de Selenium. Estamos escondiendo Chrome.

 JMETER_VERSION: 5.2.1

JMETER_VERSION es la versión de JMeter que usaremos para las pruebas.

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

services:

servicios: sección del archivo de configuración de Taurus. Aquí se indica la información sobre qué scripts necesita ejecutar antes de comenzar, después y durante la prueba. Puedes leer más sobre esta sección aquí .

  - module: shellexec

El ejecutor de shell se utiliza para ejecutar 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 preparación, el apagado y el posproceso son las etapas del ciclo de vida de Tauro. Puedes leer más sobre el ciclo de vida de Tauro aquí . En cada etapa, se ejecutan los scripts. Estos scripts son:

  • util / environment_checker.py: comprueba la versión de Python y detiene la prueba si la versión no es la misma.
  • util / data_preparation / jira / prepare-data.py: prepara los datos de prueba. Hablaremos de este script en detalle en la siguiente parte.
  • 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:

ejecución: sección del archivo de configuración de Taurus. Contiene scripts que se ejecutarán durante las pruebas. Puedes encontrar más información aquí .

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

Estas son las opciones de ejecución de script para JMeter. Puedes encontrar más información  aquí .

concurrencia es el número de usuarios virtuales. Este parámetro significa cuántos usuarios simultáneos simulará JMeter. En nuestro caso, simulamos 200 usuarios que trabajan simultáneamente.

aceleración: pruebe el tiempo de overclocking. Iremos a 200 usuarios que trabajan simultáneamente de forma gradual. En nuestro caso, llegaremos a 200 usuarios que trabajan simultáneamente en 3 minutos.

Hold-for: duración de la prueba después de alcanzar un número determinado de usuarios concurrentes en el parámetro de concurrencia.

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

Opciones de ejecución de prueba de selenio. Puedes encontrar más información  aquí .

albacea - selenio.
runner: las pruebas se realizarán con pytest.
Hold-for - duración de la prueba.

scenarios:


escenarios: sección del archivo de configuración de Taurus. Aquí está la configuración para cada script de la sección de ejecución.

  selenium:
    script: selenium_ui/jira_ui.py

script: el camino a las pruebas de 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: la ruta al proyecto JMeter, que se ejecutará durante las pruebas.

total_actions_per_hr el número de acciones que se realizarán en una hora. Una acción es realizar una prueba. Las pruebas que se ejecutarán se pueden entender a partir de los parámetros perc_.
parámetros perc_: porcentaje de finalización de cada prueba. La suma de todos los parámetros perc_ debe ser igual al 100%.

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


módulos: sección del archivo de configuración de Taurus. Esta sección contiene una descripción de todos los módulos que se utilizarán durante las pruebas.

  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: parámetros del módulo JMeter. Puedes leer sobre el módulo Jmeter aquí .
detect-plugins: JMeter Plugins Manager le permite instalar complementos para JMeter automáticamente. Establecemos este parámetro en yes, para que Taurus le diga a Jmeter que instale todos los complementos necesarios automáticamente.
complementos: una lista de complementos de JMeter que se utilizaron al escribir las pruebas.
propiedades del sistema: parámetros adicionales para 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

selenio - parámetros para el selenio.
chromedriver es la versión del controlador de Chrome que usaremos para las pruebas.

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

informes - sección del archivo de configuración de Taurus. Aquí establece la configuración de los módulos de análisis e informes. Usamos el módulo de informes JUnit xml. Puede encontrar más información sobre este módulo aquí .

Resumamos

Tenemos 6 secciones en el archivo jira.xml:
configuraciones - configuraciones y parámetros de nivel superior.
Debe cambiar los siguientes parámetros en esta sección:

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

También es posible que deba cambiar los siguientes parámetros:

concurrency: 5
test_duration: 5m

Cambié estos parámetros a valores pequeños para que las pruebas funcionen rápidamente.
Si cambió test_duration y concurrencia, asegúrese de verificar el parámetro de aceleración en la sección de ejecución. Es posible que deba cambiarlo también.
servicios: scripts que se ejecutarán en las etapas del ciclo de vida de la prueba Taurus.
ejecución: parámetros de ejecución de scripts de prueba. Primero, ejecuta JMeter, y luego Selenium.
escenarios: prueba los parámetros del script. Quizás le gustaría cambiar la cantidad de operaciones por hora y el porcentaje de pruebas. Hablaré sobre cómo agregar o eliminar pruebas en una de las siguientes partes.
módulos: módulos utilizados para pruebas. Utilizamos consolidator, JMeter y Selenium. Taurus nos proporciona la disponibilidad de estos módulos durante las pruebas.
informes: parámetros del módulo de informes.
Bueno. Hemos cambiado el archivo de configuración y estamos listos para ejecutar las pruebas.

Ejecutar prueba


Primero, active el entorno virtual de Python (puede encontrar información sobre esto en el archivo README.md ), vaya a la carpeta de la aplicación y ejecute la prueba:

bzt jira.yml

En mi caso, la prueba falló con un error:

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

Todo es correcto. Mi copia de Jira está vacía. Es necesario llenarlo con datos para la prueba. Te diré cómo hacerlo, en la parte 2.

All Articles