
Sulit untuk melebih-lebihkan pentingnya pengujian, terutama ketika menyangkut platform integrasi untuk interaksi sistem konveyor kredit. Pada artikel ini kami ingin berbicara tentang bagaimana tim kami pertama kali merancang bus semacam itu, dan kemudian meluncurkan tes otomatis untuknya.
Apa itu platform integrasi dan mengapa itu diperlukan?
Dalam sistem perusahaan besar, sering ada masalah interaksi antara subsistem internal. Karena koneksi dan permintaan yang tak ada habisnya, kusut dari waktu ke waktu menjadi semakin membingungkan dan rumit. Menjadi sulit untuk
bersantai untuk mempertahankan dan mengelolanya.
Setiap subsistem memiliki siklus rilis sendiri: beberapa diperbarui setahun sekali, dan beberapa - sekali seminggu. Perubahan ini juga perlu diperhitungkan dan diintegrasikan ke dalam kanvas sistem secara keseluruhan. Untuk melakukan ini, Anda memerlukan perantara yang bertukar data antara semua subsistem perusahaan. Perantara ini adalah platform integrasi.
Dalam mencari artis untuk pengembangannya, pelanggan menyiapkan tugas uji yang perlu diterapkan dan dilindungi. Itu adalah deskripsi tugas yang cukup sederhana dengan beberapa sistem yang dipilih: database, layanan, direktori file, dll. Dalam seminggu, perlu untuk membuat dan menunjukkan solusi toleran kesalahan, serta menggambarkan platform pengembangan. Dalam pelaksanaan proyek-proyek tersebut, kami telah memperoleh pengalaman yang layak, dan menurut hasil pembelaan kami dipilih sebagai pelaksana.
Pada saat itu, pelanggan dalam banyak kasus menggunakan skema integrasi point-to-point: setiap sistem terintegrasi dengan yang lain. Itu tidak nyaman dan sulit untuk dipertahankan. Kami memiliki tiga tugas:
- mengganti integrasi yang ada melalui platform integrasi;
- mengintegrasikan sistem bank baru;
- Otomatis pertukaran data di antara mereka.
Setelah berhasil melewati tugas tes, kami memulai proyek. Pentahapannya sendiri ditentukan dengan cara ini:
- melakukan audit;
- menemukan karyawan pelanggan yang memahami keadaan target proses bisnis (dan bukan hanya yang sekarang);
- untuk merumuskan persyaratan bisnis untuk sistem TI dan menyediakan peta jalan untuk transisi ke keadaan target proses bisnis.
Implementasi
Untuk implementasi, mereka memilih platform integrasi modular Red Hat JBoss Fuse.
Arsitektur Sekering JBossSedikit lagi tentang alat dasar yang ada di luar kotak:
Apache Camel , dibangun di atas templat integrasi perusahaan (EIP), menyediakan perutean pesan, memiliki sejumlah besar adaptor siap pakai untuk bekerja dengan sistem eksternal: database, file, pialang pesan, layanan direktori, surat, dll.
Apache ActiveMQ , yang mengatur pertukaran pesan, dan juga memastikan pengiriman dan penyimpanannya sampai pelanggan mengambilnya.
Proses integrasi itu sendiri (aliran) adalah serangkaian tindakan berurutan. Misalnya: untuk menerima pesan dari sistem sumber melalui adaptor yang dikembangkan / ada, konversikan data pesan, tambahkan, filter, kirimkan lebih jauh ke sistem penerima melalui adaptor mereka.
Proses integrasiPada saat yang sama, verifikasi data, pengiriman yang dijamin, penanganan kesalahan dengan ketentuan kemampuan untuk mengumpulkan sistem pemantauan, menginformasikan pelaksana yang bertanggung jawab tentang kesalahan, dll. Harus disediakan di sepanjang jalan.
Contoh
Ambil proses mengeluarkan pinjaman di bank. Seorang klien di bank Internet mengisi aplikasi, mengirimkan data dari formulir dan menunggu hasilnya. Apa yang terjadi di dalam ini: melalui sisa api yang disediakan ke bank Internet, bus menerima permintaan dengan data utama. Lebih lanjut, ia meminta melalui antarmuka sabun dalam sistem MDM informasi tambahan tentang klien, menggabungkan informasi yang diterima ke dalam perangkat umum dan mentransfernya melalui antrian ActiveMQ khusus ke sistem RTDM untuk merumuskan penawaran dalam kerangka produk pinjaman yang ada. Kemudian hasil dari RTDM dikembalikan sebagai imbalan, dan bus mentransmisikan tawaran untuk klien kembali ke bank Internet.
Pengujian
Ketika bus integrasi diteruskan ke penguji, awalnya masalah pengujian produk diputuskan secara manual. Namun, dalam prosesnya, diputuskan untuk mengotomatisasi seluruh proses dan membuat platform pengujian.
Kami menulis emulator untuk semua sistem bank. Klien tidak selalu menyediakan akses untuk pengujian data dan sistem yang bekerja sekaligus, oleh karena itu emulator dikembangkan untuk setiap proyek secara terpisah. Kompleksitas pekerjaan ini sebanding dengan pengembangan solusi integrasi itu sendiri. Platform uji memiliki tugas: untuk mengumpulkan, menyebarkan, menjalankan tes, dan mengirim hasilnya ke TestRail.
Kami membuat dua set skrip yang dijalankan pada setiap build (CI / CD). Menurut komit, majelis diinisiasi dan dikerahkan ke stand. Setelah prosedur penyebaran, skrip pendek (uji asap) dijalankan, yang memberi tahu kami bahwa tidak ada interaksi integrasi yang terputus.
Kami mengejar skenario yang diperluas untuk majelis malam, yang memberi kami jawaban lengkap untuk pertanyaan: ada apa dengan bus dan bagaimana cara berinteraksi dengan sistem eksternal? Dalam laporan pagi hari, kami melihat tes atau masalah yang berhasil muncul. Namun, kami tidak mengotomatiskan pengujian platform integrasi dengan sistem eksternal, karena sangat sulit untuk memverifikasi hasil pengujian tersebut. Oleh karena itu, mereka meninggalkan pengujian manual: karyawan pelanggan melakukan tes penerimaan sistem mereka, dan spesialis kami memeriksa log apakah informasi tersebut diteruskan dengan benar.
Hasilnya, adalah mungkin untuk mencapai otomatisasi uji 100% pada emulator. Ketika memperbarui salah satu sistem eksternal, bus mengambil tugas untuk menjaga operabilitas proses bisnis, sehingga, perubahan dilakukan langsung kepadanya. Ini memungkinkan Anda untuk dengan cepat menguji perubahan apa pun.
Alih-alih sebuah kesimpulan
Setelah semua tahapan berlalu, tim kami membangun proses yang cepat dan transparan dengan kontraktor dan pelanggan, dan proses pengembangan, pengujian, implementasi, dan dukungan selanjutnya berjalan dengan mudah. Sebagai hasilnya, 12 proses bisnis terotomatisasi, yang pada intinya menggabungkan pekerjaan sistem utama bank: ABS, MDM, pemrosesan, RTDM, dll. Dalam proyek semacam itu, kami selalu mencoba hanya dengan pengujian otomatis, praktis tanpa melibatkan penguji fungsional. Ini mengurangi biaya akhir pengembangan dan integrasi proyek, mengurangi waktu untuk memasarkan dan meningkatkan faktor manusia.
Alexander Sadykov, Wakil Kepala Departemen Pengujian, Pusat Solusi Perangkat Lunak, Jet Infosystems
Pavel Ivanov, Ketua Tim Pengembangan, Pusat Solusi Perangkat Lunak, Jet Infosystems