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.yml , confluence.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:
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:
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:
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.