تحية للجميع!أريد مشاركة تجربتي مع 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:
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 هو إصدار برنامج تشغيل 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:
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.