Pengujian Beban Atlassian Jira, Confluence, Bitbucket Bagian 1

Halo semuanya!

Saya ingin berbagi pengalaman saya dengan Atlassian Jira, Confluence dan Bitbucket stress testing menggunakan Atlassian dc-app-performance-toolkit .

Ini akan menjadi serangkaian artikel di mana saya tidak akan berbicara tentang metodologi pengujian stres, tetapi saya hanya akan berbicara tentang aspek teknis pengujian stres dengan menggunakan alat ini.

Jika Anda ingin mempelajari lebih lanjut tentang metodologi pengujian beban dalam konteks produk Atlassian, maka saya membicarakan hal ini di Highload 2018 .

Jadi, mari kita beralih ke dc-app-performance-toolkit.

Alat ini memungkinkan Anda memuat aplikasi uji Atlassian seperti Jira, Confluence dan Bitbucket. Saya belajar tentang alat ini ketika saya perlu menguji plugin Atlassian Jira untuk sertifikasi di Pusat Data, dan segera saya menyukai alat ini karena saya tidak perlu menghabiskan waktu berjam-jam mengaturnya. Semuanya bekerja di luar kotak.

Alat ini menggunakan Taurus , jmeter dan Selenium .

Anda dapat menggunakan alat ini untuk tujuan berikut:

  • Anda sedang mengembangkan plugin untuk Atlassian Marketplace. Dalam hal ini, Anda dapat menggunakan alat ini untuk mengesahkan plug-in Anda untuk Pusat Data.
  • Atlassian Jira, Confluence Bitbucket , , , . . , . - . , Atlassian, Atlassian, , , . , .

Langkah-langkah yang perlu Anda lakukan untuk menguji Atlassian Jira, Confluence, dan Bitbucket adalah sama dalam kebanyakan kasus, jadi saya akan melakukan semua pekerjaan pada Atlassian Jira. Jika ada langkah spesifik untuk produk, saya akan menyebutkan ini.

Instalasi


Hal pertama yang harus dilakukan adalah mendapatkan alat dengan github:

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

Dan buka folder yang dibuat:

cd dc-app-performance-toolkit

Selanjutnya, Anda perlu menginstal semua dependensi untuk menggunakan alat ini. Anda dapat membaca bagaimana melakukan ini di path_to_dc_app_performance_toolkit / README.md .

File konfigurasi


Sebelum menggunakan alat ini, harap baca dokumentasi untuk alat ini di folder path_to_dc_app_performance_toolkit / doc .

Berikut ini penjelasan singkat tentang isi folder ini:

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


jira.yml


Sebelum memulai pengujian beban, Anda perlu membuat perubahan pada file jira.ymlconfluence.yml  atau  bitbucket.yml , yang terletak di folder  path_to_dc_app_performance_toolkit / app , tergantung pada produk mana yang akan Anda uji. Ini adalah file konfigurasi Taurus. Anda dapat membaca tentang Taurus di sini .
Saya akan memberikan komentar di jira.yml. File untuk produk lain dibuat dengan prinsip yang sama.

settings:

pengaturan adalah bagian dari file konfigurasi Taurus. Ini berisi opsi tingkat atas untuk Taurus. Anda dapat menemukan informasi lebih lanjut tentang bagian ini di  sini .

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

artifacts-dir - path template yang akan digunakan untuk menyimpan artefak pengujian beban. Berikut adalah sebagian daftar artefak:

  • bzt.log - log dari perintah bzt. Perintah ini memulai pengujian beban.
  • error_artifacts - folder untuk menyimpan tangkapan layar dan tes html Selenium, yang berakhir dengan kesalahan.
  • jmeter.err - JMeter log.
  • kpi.jtl - Data pengujian JMeter.
  • pytest.out - Log eksekusi uji selenum.
  • selenium.jtl - Data pengujian selenium.
  • results.csv - hasil tes agregat.
  • jira.yml - jira.yml, yang digunakan untuk pengujian.


  aggregator: consolidator

aggregator - agregator yang akan digunakan untuk mengumpulkan hasil tes dan mentransfer hasilnya ke modul pelaporan. Anda dapat membaca lebih lanjut tentang agregator di sini .

  verbose: false

verbose - parameter untuk meluncurkan Taurus dalam mode debug. Dalam kasus kami, kami mematikan mode ini.

  env:

env memungkinkan Anda mengatur variabel lingkungan. Anda dapat membaca lebih lanjut di  sini .

    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

Parameter di atas berisi informasi tentang instance Anda yang akan Anda uji. Saya menentukan parameter untuk instance Jira, yang terletak di komputer saya. Parameter ini akan digunakan dalam JMeter, Selenium, dan skrip.

    concurrency: 200
    test_duration: 45m

Parameter ini akan diteruskan ke bagian eksekusi. Saya akan menjelaskan arti dari parameter ini ketika mereka berbicara tentang bagian ini.

  WEBDRIVER_VISIBLE: false

WEBDRIVER_VISIBLE menetapkan visibilitas browser Chrome selama pelaksanaan tes Selenium. Kami menyembunyikan Chrome.

 JMETER_VERSION: 5.2.1

JMETER_VERSION adalah versi JMeter yang akan kami gunakan untuk pengujian.

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

services:

layanan - bagian dari file konfigurasi Taurus. Informasi tentang skrip mana yang harus dijalankan sebelum memulai, setelah dan selama pelaksanaan tes ditunjukkan di sini. Anda dapat membaca lebih lanjut tentang bagian ini di sini .

  - module: shellexec

Eksekutor Shell digunakan untuk mengeksekusi skrip.

    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

Mempersiapkan, mematikan dan pasca-proses adalah tahapan dari siklus hidup Taurus. Anda dapat membaca lebih lanjut tentang siklus hidup Taurus di sini . Pada setiap tahap, skrip dijalankan. Skrip-skrip ini adalah:

  • util / environment_checker.py - memeriksa versi Python dan menghentikan tes jika versinya tidak sama.
  • util / data_preparation / jira / prep-data.py - menyiapkan data uji. Kita akan membicarakan skrip ini secara rinci di bagian selanjutnya.
  • 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:

eksekusi - bagian dari file konfigurasi Taurus. Berisi skrip yang akan dieksekusi selama pengujian. Anda dapat menemukan informasi lebih lanjut di sini .

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

Ini adalah opsi eksekusi skrip untuk JMeter. Anda dapat menemukan informasi lebih lanjut di  sini .

concurrency adalah jumlah pengguna virtual. Parameter ini berarti berapa banyak pengguna bersamaan yang akan disimulasikan oleh JMeter. Dalam kasus kami, kami mensimulasikan 200 pengguna yang bekerja secara bersamaan.

ramp-up - uji waktu overclocking. Kami akan pergi ke 200 pengguna yang bekerja secara bersamaan secara bertahap. Dalam kasus kami, kami akan mencapai 200 pengguna yang bekerja secara bersamaan dalam 3 menit.

hold-for - durasi pengujian setelah mencapai sejumlah pengguna bersamaan dalam parameter konkurensi.

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

Opsi eksekusi uji selenium. Anda dapat menemukan informasi lebih lanjut di  sini .

eksekutor - Selenium.
pelari - tes akan dilakukan menggunakan pytest.
hold-for - durasi pengujian.

scenarios:


skenario - bagian dari file konfigurasi Taurus. Berikut adalah konfigurasi untuk setiap skrip dari bagian eksekusi.

  selenium:
    script: selenium_ui/jira_ui.py

script - jalan menuju tes 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 - jalur menuju proyek JMeter, yang akan dieksekusi selama pengujian.

total_actions_per_hr jumlah tindakan yang akan dilakukan dalam satu jam. Satu tindakan adalah melakukan satu tes. Tes yang akan dijalankan dapat dipahami dari parameter perc_.
parameter perc_ - persentase penyelesaian setiap tes. Jumlah dari semua parameter perc_ harus sama dengan 100%.

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


modul - bagian dari file konfigurasi Taurus. Bagian ini berisi deskripsi semua modul yang akan digunakan selama pengujian.

  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 dari modul JMeter. Anda dapat membaca tentang modul Jmeter di sini .
detect-plugins - JMeter Plugins Manager memungkinkan Anda untuk menginstal plugin untuk JMeter secara otomatis. Kami mengatur parameter ini ke ya, sehingga Taurus memberitahu Jmeter untuk menginstal semua plugin yang diperlukan secara otomatis.
plugins - daftar plugin JMeter yang digunakan saat menulis tes.
properti-sistem - parameter tambahan untuk 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

selenium - parameter untuk Selenium.
chromedriver adalah versi driver Chrome yang akan kami gunakan untuk pengujian.

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

pelaporan - bagian dari file konfigurasi Taurus. Di sini Anda mengatur pengaturan untuk modul analisis dan pelaporan. Kami menggunakan modul pelaporan JUnit xml. Anda dapat menemukan informasi lebih lanjut tentang modul ini di sini .

Mari kita simpulkan.

Kami memiliki 6 bagian dalam file jira.xml:
settings - pengaturan dan parameter tingkat atas.
Anda perlu mengubah parameter berikut di bagian ini:

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

Anda mungkin juga perlu mengubah parameter berikut:

concurrency: 5
test_duration: 5m

Saya mengubah parameter ini ke nilai kecil sehingga tes bekerja dengan cepat.
Jika Anda mengubah test_duration dan concurrency, pastikan untuk memeriksa parameter ramp-up di bagian eksekusi. Anda mungkin perlu mengubahnya juga.
layanan - skrip yang akan dieksekusi pada tahap siklus hidup tes Taurus.
eksekusi - parameter eksekusi skrip uji. Pertama, jalankan JMeter, dan kemudian Selenium.
skenario - parameter skrip pengujian. Mungkin Anda ingin mengubah jumlah operasi per jam dan persentase tes. Saya akan berbicara tentang cara menambah atau menghapus tes di salah satu bagian berikut.
modul - modul yang digunakan untuk pengujian. Kami menggunakan konsolidator, JMeter dan Selenium. Taurus memberi kami ketersediaan modul-modul ini selama pengujian.
pelaporan - parameter modul pelaporan.
Baik. Kami telah mengubah file konfigurasi dan siap untuk menjalankan tes.

Jalankan tes


Pertama, aktifkan lingkungan virtual Python (Anda dapat menemukan informasi tentang ini di file README.md ), buka folder aplikasi dan jalankan tes:

bzt jira.yml

Dalam kasus saya, tes gagal dengan kesalahan:

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

Semuanya benar. Salinan Jira saya kosong. Penting untuk mengisinya dengan data untuk pengujian. Saya akan memberi tahu Anda cara melakukannya, di bagian 2.

All Articles