اختبار الحمل في Atlassian Jira ، Confluence ، Bitbucket Part 1

تحية للجميع!

أريد مشاركة تجربتي مع Atlassian Jira و Confluence و Bitbucket اختبار الضغط باستخدام Atlassian dc-app-performance-toolkit .

ستكون هذه سلسلة من المقالات التي لن أتحدث فيها عن منهجية اختبار الحمل ، ولكن سأتحدث فقط عن الجوانب التقنية لاختبار الحمل باستخدام الأداة.

إذا كنت ترغب في معرفة المزيد عن منهجية اختبار الحمل في سياق منتجات Atlassian ، فقد تحدثت عن هذا في Highload 2018 .

لذا ، دعنا ننتقل إلى dc-app-performance-toolkit.

تتيح لك هذه الأداة تحميل تطبيقات Atlassian الاختبارية مثل Jira و Confluence و Bitbucket. لقد تعرفت على هذه الأداة عندما كنت بحاجة إلى اختبار المكوّن الإضافي Atlassian Jira للحصول على شهادة في مركز البيانات ، وعلى الفور أحببت هذه الأداة لأنني لم أكن مضطرًا لقضاء ساعات في إعدادها. كل شيء يعمل خارج الصندوق

تستخدم الأداة Taurus و jmeter و Selenium .

يمكنك استخدام هذه الأداة للأغراض التالية:

  • أنت تطور مكونات إضافية لسوق Atlassian. في هذه الحالة ، يمكنك استخدام هذه الأداة للمصادقة على المكون الإضافي لمركز البيانات.
  • 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


قبل بدء اختبار الحمل، تحتاج إلى إجراء تغييرات على jira.yml ،  confluence.yml  أو  ملف bitbucket.yml ، والتي تقع في path_to_dc_app_performance_toolkit / التطبيق مجلد  ، اعتمادا على المنتج الذي كنت تسير على الاختبار. هذه ملفات تكوين برج الثور. يمكنك أن تقرأ عن برج الثور هنا .
سأقدم تعليقات على jira.yml. ملفات المنتجات الأخرى مبنية على نفس المبدأ.

settings:

الإعدادات هي جزء من ملف تكوين برج الثور. يحتوي على خيارات المستوى الأعلى لـ Taurus. يمكنك العثور على مزيد من المعلومات حول هذا القسم  هنا .

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

artifacts-dir - قالب المسار الذي سيتم استخدامه لتخزين أدوات اختبار الحمل. هنا قائمة جزئية من القطع الأثرية:

  • bzt.log - سجل الأمر bzt. يبدأ هذا الأمر اختبار التحميل.
  • error_artifacts - مجلد لتخزين لقطات الشاشة واختبارات html للسيلينيوم ، والتي انتهت بالأخطاء.
  • jmeter.err - سجل جيميتر.
  • kpi.jtl - بيانات اختبار جيميتر.
  • pytest.out - سجل تنفيذ اختبار Selenum.
  • selenium.jtl - بيانات اختبار السيلينيوم.
  • results.csv - نتائج الاختبار المجمعة.
  • jira.yml - jira.yml الذي تم استخدامه للاختبار.


  aggregator: consolidator

مجمع - مجمع الذي سيتم استخدامه لجمع نتائج الاختبار ونقل النتائج إلى وحدة إعداد التقارير. يمكنك قراءة المزيد عن المجمعين هنا .

  verbose: false

مطول - معلمة لإطلاق برج الثور في وضع التصحيح. في حالتنا ، نوقف هذا الوضع.

  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 بتعيين مستوى الرؤية لمتصفح Chrome أثناء تنفيذ اختبارات السيلينيوم. نحن نخفي Chrome.

 JMETER_VERSION: 5.2.1

JMETER_VERSION هو إصدار JMeter الذي سنستخدمه للاختبار.

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

services:

الخدمات - قسم من ملف التكوين الثور. يشار إلى المعلومات حول البرامج النصية التي تحتاج إلى تشغيلها قبل البدء وبعد الاختبار وأثناءه. يمكنك قراءة المزيد عن هذا القسم هنا .

  - module: shellexec

يستخدم برنامج شل لتنفيذ البرامج النصية.

    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

التحضير والإغلاق وما بعد العملية هي مراحل دورة حياة برج الثور. يمكنك قراءة المزيد عن دورة حياة برج الثور هنا . في كل مرحلة ، يتم تشغيل البرامج النصية. هذه البرامج النصية هي:

  • util / environment_checker.py - التحقق من إصدار Python وإيقاف الاختبار إذا لم يكن الإصدار هو نفسه.
  • util / data_preparation / jira / Prepar-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:

التنفيذ - قسم من ملف تكوين برج الثور. يحتوي على نصوص برمجية سيتم تنفيذها أثناء الاختبار. يمكنك العثور على مزيد من المعلومات هنا .

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

هذه هي خيارات تنفيذ البرنامج النصي لـ JMeter. يمكنك العثور على مزيد من المعلومات  هنا .

التزامن هو عدد المستخدمين الافتراضيين. هذه المعلمة تعني عدد المستخدمين المتزامنين الذين سيحاكاةهم JMeter. في حالتنا ، نقوم بمحاكاة 200 مستخدم يعملون في وقت واحد.

تكثيف - اختبار وقت رفع تردد التشغيل. سنذهب إلى 200 مستخدم يعملون في وقت واحد تدريجيًا. في حالتنا ، سنصل إلى 200 مستخدم يعملون في وقت واحد في 3 دقائق.

عقد - مدة الاختبار بعد الوصول إلى عدد معين من المستخدمين المتزامنين في معلمة التزامن.

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

خيارات تنفيذ اختبار السيلينيوم. يمكنك العثور على مزيد من المعلومات  هنا .

منفذ - السيلينيوم.
عداء - سيتم إجراء الاختبارات باستخدام pytest.
عقد - مدة الاختبار.

scenarios:


السيناريوهات - مقطع من ملف تكوين برج الثور. فيما يلي تكوين كل برنامج نصي من قسم التنفيذ.

  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


الوحدات النمطية - قسم من ملف تكوين برج الثور. يحتوي هذا القسم على وصف لجميع الوحدات التي سيتم استخدامها أثناء الاختبار.

  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 هنا .
اكتشاف المكونات الإضافية - يسمح لك JMeter Plugins Manager بتثبيت الإضافات لـ JMeter تلقائيًا. قمنا بتعيين هذه المعلمة على نعم ، بحيث يخبر 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

إعداد التقارير - قسم من ملف تكوين برج الثور. هنا تقوم بتعيين الإعدادات لوحدات التحليل وإعداد التقارير. نستخدم وحدة إعداد التقارير JUnit xml. يمكنك العثور على مزيد من المعلومات حول هذه الوحدة هنا .

دعونا نلخص.

لدينا 6 أقسام في ملف jira.xml:
الإعدادات - الإعدادات والمعلمات ذات المستوى الأعلى.
تحتاج إلى تغيير المعلمات التالية في هذا القسم:

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

لقد غيرت هذه المعلمات إلى قيم صغيرة حتى تعمل الاختبارات بسرعة.
إذا قمت بتغيير مدة الاختبار والتزامن ، فتأكد من التحقق من معلمة تكثيف في قسم التنفيذ. قد تحتاج إلى تغييره أيضًا.
الخدمات - البرامج النصية التي سيتم تنفيذها في مراحل دورة حياة اختبار الثور.
التنفيذ - معلمات التنفيذ لنصوص الاختبار. أولاً ، قم بتشغيل JMeter ، ثم السيلينيوم.
سيناريوهات - معلمات اختبار البرنامج النصي. ربما ترغب في تغيير عدد العمليات لكل ساعة ونسبة الاختبارات. سأتحدث عن كيفية إضافة أو إزالة الاختبارات في أحد الأجزاء التالية.
الوحدات - الوحدات المستخدمة للاختبارات. نستخدم الدمج ، JMeter والسيلينيوم. يوفر لنا برج الثور توفر هذه الوحدات أثناء الاختبار.
إعداد التقارير - معلمات وحدة إعداد التقارير.
حسن. لقد قمنا بتغيير ملف التكوين ، ونحن على استعداد لإجراء الاختبارات.

اختبار المدى


أولاً ، قم بتنشيط بيئة Python الظاهرية (يمكنك العثور على معلومات حول ذلك في ملف README.md ) ، وانتقل إلى مجلد التطبيق وقم بإجراء الاختبار:

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