
Mari kita bicara tentang bagaimana melakukan tes integrasi untuk Server Jira Atlassian. Untuk tujuan ini, kami akan menggunakan perpustakaan yang disediakan oleh Atlassian: jira-func-test-plugin dan jira-testkit-plugin.
Tes integrasi memungkinkan Anda untuk menguji operasi plugin Jira melalui layanan yang diekspor oleh plugin dan antarmuka pengguna Jira. Tentu saja, Anda bisa mengambil Selenium WebDriver dan menulis kode untuk menguji antarmuka pengguna Jira. Namun, dalam hal ini, Anda harus meresepkan semua logikanya sendiri. Misalnya, pengguna masuk, memasukkan kueri JQL, membuat proyek, memeriksa elemen dalam bentuk membuat tugas, mengelola izin proyek, dan sebagainya. Dan perpustakaan Atlassian menyediakan metode yang sudah siap untuk ini. Selain itu, kode Anda tidak perlu diubah saat meningkatkan ke versi baru Jira, cukup gunakan pustaka Atlassian yang cocok untuk versi ini.
Ada tiga cara untuk menulis tes integrasi untuk Atlassian Jira yang disediakan Atlassian:
- Tes kabel memungkinkan Anda menguji layanan yang diekspor plugin Anda secara eksternal. Contoh dari tes semacam itu ada di sini .
- Tes integrasi memerlukan plugin jira-func-test-plugin dan jira-testkit-plugin untuk dijalankan. Tes-tes ini memverifikasi operasi yang benar dari antarmuka pengguna Jira menggunakan permintaan dan tanggapan HTTP. Contoh dari tes semacam itu ada di sini .
- Halaman pengujian objek juga menguji antarmuka pengguna Jira, tetapi mereka bekerja melalui Selenium WebDriver.
Atlassian menulis bahwa pengujian antarmuka pengguna melalui pengujian objek Halaman lebih disukai daripada pengujian melalui jira-func-test-plugin. Tetapi dalam artikel ini kita akan belajar bagaimana menulis tes integrasi menggunakan plugin ini.
Kode sumber plug-in dengan tes integrasi yang dikembangkan dalam artikel dapat ditemukan di
sini .
Apa itu tes integrasi?
Perbedaan utama antara tes integrasi dan tes unit adalah bahwa tes unit tidak memerlukan instance Jira yang berfungsi, tidak seperti tes integrasi. Oleh karena itu, perlu bahwa instance Jira dinaikkan selama pengujian integrasi. Pengujian dapat dilakukan baik pada instance lokal (Jira, diangkat dari plug-in kami dengan tes integrasi), dan pada remote.
Mari kita menulis tes untuk instance lokal terlebih dahulu, dan kemudian saya akan memberi tahu Anda cara menjalankan tes yang sama pada instance jarak jauh.
Buat plugin Jira
Plugin dibuat menggunakan perintah
atlas-create-jira-plugin .
Tambahkan dependensi ke plugin kami
Ketergantungan berikut ini harus ditambahkan ke file pom.xml dari plugin kami:
<dependency> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-client</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-tests</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency>
Ketergantungan ini akan memungkinkan kami untuk mengembangkan tes integrasi.
Instal plugin yang diperlukan ke instance Jira lokal
Agar tes integrasi berfungsi, kita perlu memastikan bahwa ketika kita memulai instance Jira lokal kita, plugin jira-func-test-plugin dan jira-testkit-plugin diinstal di dalamnya.
Untuk melakukan ini, tambahkan baris berikut ke konfigurasi plugin maven-jira-plugin di pom.xml:
<pluginArtifacts> <pluginArtifact> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-test-plugin</artifactId> <version>${jira.version}</version> </pluginArtifact> <pluginArtifact> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-plugin</artifactId> <version>7.12.3</version> </pluginArtifact> </pluginArtifacts>
Menulis ujian
Buat file src / test / java / it / ru / matveev / alexey / jira / Integrationtests / selenium / ExampleTest.java:
package it.ru.matveev.alexey.jira.integrationtests.selenium; import com.atlassian.jira.functest.framework.BaseJiraFuncTest; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ExampleTest extends BaseJiraFuncTest { @Before public void setup() { backdoor.project().addProject("testproject", "TP", "admin"); backdoor.issues().createIssue("TP", "test issue"); } @Test public void goToIssueNavigator() { navigation.login("admin"); navigation.issueNavigator().createSearch("project = TP"); tester.assertTextPresent("TP-1"); } @After public void cleanup() { backdoor.project().deleteProject("TP"); }
Secara default, semua tes harus memiliki
Test
sufiks agar file dengan tes integrasi dapat berjalan. Ini dapat ditimpa dengan parameter
functionalTestPattern
dalam konfigurasi plugin maven-jira-plugin.
Dalam pengujian di atas, kami menguji operasi pencarian berdasarkan permintaan dalam Issue Navigator. Dalam metode
setup
, buat proyek dengan tugas, lalu tulis permintaan yang menerima tugas ini, dan verifikasi bahwa kami benar-benar dapat memilihnya. Kemudian dalam metode
cleanup
kami menghapus proyek yang dibuat.
Jalankan tes
Tes diluncurkan menggunakan perintah
atlas-integration-test
. Pada perintah ini, Jira lokal naik dan tes integrasi dilakukan di atasnya.
Struktur uji
Ada beberapa kelas yang dapat Anda warisi dari saat menulis tes integrasi:
BaseJiraEmailTest
,
BaseJiraFuncTest
,
BaseJiraRestTest
.
Kelas yang paling banyak digunakan adalah
BaseJiraFuncTest
. Ini memungkinkan Anda untuk menguji semua fungsi yang diperlukan.
Di kelas ini, ada variabel kelas seperti itu:
backdoor
: memungkinkan Anda untuk melakukan fungsi administratif, seperti mengelola proyek, indeks, skema izin proyek, pengguna, dan sebagainya.navigation
: memungkinkan Anda bernavigasi di antarmuka pengguna. Juga memungkinkan Anda untuk masuk dan keluar Jira di bawah pengguna yang diinginkan.tester
: memungkinkan Anda bekerja dengan halaman: mengatur nilai-nilai bidang, klik tombol, periksa apakah ada bidang dalam formulir, dan sebagainya.
Tes integrasi mengakses Jira sebagai
admin
dengan kata sandi
admin
, oleh karena itu, agar tes integrasi berfungsi di Jira, pengguna ini harus memiliki kata sandi ini.
Saat menggunakan perintah
navigation.login("username")
, kata sandi pengguna tempat Anda masuk ke Jira harus cocok dengan nama pengguna.
Menjalankan tes integrasi pada instance jarak jauh
Agar tes integrasi dapat berjalan pada instance jarak jauh, plugin jira-func-test-plugin dan jira-testkit-plugin harus diinstal di dalamnya.
Selain itu, dalam plugin dengan tes integrasi, Anda perlu membuat perubahan pada file src / test / resources / localtest.properties:
jira.protocol = http jira.host = remote-instance jira.port = 2991 jira.context = /jira jira.edition = all jira.xml.data.location = src/test/xml
Sekarang setelah menjalankan perintah
atlas-integration-test
, tes akan dijalankan pada instance jarak jauh.
Contoh uji
Berita baiknya adalah bahwa para pengembang paket jira-func-tes telah memasukkan dalam paket ini sejumlah besar contoh dengan tes untuk semua kesempatan. Mereka berada dalam paket webtests.
Semoga sukses dengan menguji Jira!