Pengujian Perangkat Lunak di RTI
Perangkat lunak RTI adalah inti dari banyak misi penting sistem. Pelanggan kami tentu saja sangat peduli dengan keandalan dan kualitas sistem mereka. Jadi, ketika saya bertemu dengan pelanggan dan mempresentasikan proses pengembangan RTI, kami membahas praktik pengembangan, alat yang kami gunakan, dan lab RTI IIoT. Banyak yang sangat ingin tahu tentang pengujian perangkat lunak yang kami lakukan di RTI dan kerangka pengujian yang kami gunakan. Saya selalu menikmati percakapan ini; kami bangga dengan perhatian kami pada pengujian. Entri blog ini merangkum pengujian yang kami lakukan.
Proses pengembangan dan pengujian kami umum di seluruh rangkaian produk RTI Connext. Pengecualian adalah RTI Connext DDS CERT, yang menargetkan aplikasi yang memerlukan sertifikasi keselamatan dan mengikuti proses pengembangan yang berbeda. Selama pengembangan, dan sebelum RTI merilis perangkat lunak baru apa pun, kami menjalankan serangkaian besar pengujian untuk memvalidasi fungsionalitas yang benar dan untuk memastikan kinerja dan penskalaan perangkat lunak dengan baik.
Uji unit memvalidasi bahwa fungsi individu melakukan seperti yang diharapkan. Tes unit digunakan sebagai mekanisme uji regresi kunci dengan setiap rilis produk. Kerangka kerja pengujian unit melakukan lebih dari sekadar menguji fungsi individu. Hal ini juga memungkinkan untuk tingkat pengujian fitur single-node. Dalam rilis yang lebih baru, kami bahkan telah memasukkan pengaturan Quality of Service (QoS) yang disediakan pelanggan sebagai bagian dari konfigurasi pengujian kami. Proses kami dirancang untuk memastikan fungsi yang benar di lingkungan yang serealistis mungkin.
Sebagai bagian dari pengembangan fitur baru, kami membuat rencana pengujian fitur dan menerapkan serangkaian pengujian fitur ujung ke ujung . Pengujian ini diimplementasikan melalui serangkaian pengujian yang dipesan lebih dahulu atau, dalam kasus Connext DDS Micro, dalam kerangka pengujian terdistribusi yang baru. Lingkungan pengujian ini menggunakan sejumlah "penguji coba" yang menjalankan pengujian pada mesin yang berbeda dan "pengelola pengujian" yang menyinkronkan pelaksanaan pengujian antara runner pengujian. Bahasa pengujian DDS sederhana dikembangkan untuk menjelaskan pengujian, dan setiap runner pengujian menjalankan skrip, menerbitkan hasilnya (LULUS/GAGAL) dan menunggu skrip berikutnya dieksekusi. Fokus utama pengujian fitur adalah:
- Uji API tingkat aplikasi dan kebijakan QoS DDS (tenggat waktu, keaktifan, dll.)
- Menguji batas sumber daya
- Uji lintas endianness
- Uji penemuan
- Uji kinerja
- Pastikan stabilitas
Kami melakukan berbagai tingkat pengujian interoperabilitas:
- Kami menguji interoperabilitas dengan produk RTI lainnya selama pengembangan dan selama pengujian instalasi. Kami mengembangkan serangkaian tes interoperabilitas otomatis. Misalnya, Connext 6 memperkenalkan sejumlah fitur baru yang sama antara perpustakaan Connext DDS Micro 3.0 dan Connext DDS core 6.0. Kami secara otomatis membuat ribuan kombinasi konfigurasi dan memvalidasi perilaku yang benar. Interoperabilitas dengan versi RTI yang lebih lama diuji saat kami menentukan, setelah analisis, bahwa ada risiko interoperabilitas terputus.
- Interoperabilitas bahasa dilakukan secara tidak langsung, karena beberapa alat kami ditulis dalam Java atau bahasa lain. Misalnya, kami menguji interoperabilitas dengan aplikasi berbasis Java saat menggunakan alat berbasis Java RTI seperti Konsol Admin RTI yang dikombinasikan dengan aplikasi dalam bahasa lain.
- Tingkat dasar interoperabilitas dengan vendor DDS lain secara rutin dilakukan pada pertemuan Object Management Group (OMG) DDS. Vendor mengoordinasikan serangkaian pengujian yang lebih mendalam untuk memvalidasi Keamanan DDS, Jenis yang Dapat Diperluas, dan protokol kabel DDS-RTPS (https://github.com/omg-dds).
Instal pengujian menangkap integrasi dan pengujian interoperabilitas di antara beberapa produk. Pengujian ini dijalankan secara manual dan melalui rangkaian pengujian instalasi otomatis. Instal pengujian mencakup berbagai masalah integrasi dan interoperabilitas:
- Pemasangan - Apakah semua file sudah terpasang dengan benar?
- Antarmuka pengguna grafis (GUI) - Saat ini tidak ada pengujian GUI otomatis. Selama pengujian pemasangan manual, kami memverifikasi bahwa integrasi berfungsi dengan baik:mis., antara RTI Launcher dan rtiddsgen , atau rtipprototyper .
- Dokumentasi - Apakah dokumentasi yang tepat dikirimkan?
- Pengujian fungsionalitas dasar untuk semua produk menggunakan contoh yang dikirimkan. Untuk beberapa produk, kami menjalankan seluruh Panduan Memulai. Pengujian ini diulangi di berbagai platform.
- Pengujian interoperabilitas produk dan bahasa dasar .
Untuk mempercepat dan memperluas pengujian ini, kami memiliki pengujian pemasangan otomatis untuk banyak fungsi. Tes saat ini mencakup:
- Instalasi - filecheck untuk memastikan file telah terinstal dengan benar.
- Menjalankan utilitas, termasuk rtiddsping , rtiddsspy dan rtiprototyper.
- Menjalankan contoh yang dihasilkan rtiddsgen di C, C++, C++03, C++11, C++ CLI, C# dan Java, menggunakan kombinasi pustaka DDS statis/dinamis dan rilis/debug.
- Menjalankan contoh yang dikirimkan menggunakan kombinasi pustaka DDS statis/dinamis dan rilis/debug.
- Contoh kinerja dalam C++ dan Java.
- Contoh yang dikirimkan TCP dalam C.
Pengujian ini dijalankan pada 80 arsitektur berbeda termasuk platform Windows, Linux, Solaris, Lynx, QNX, Darwin, dan VxWorks.
Kami memiliki berbagai pengujian performa dan profil memori. Membuat tes kinerja terdistribusi yang valid dan bermakna sangat menantang. Pendekatan sederhana tidak dapat menangani atau bahkan secara kasar mengukur pengorbanan dalam buffer, throughput, latency, pengiriman real-time, stack, dan sistem operasi. RTI memiliki pengalaman luas dalam mengevaluasi metrik kinerja yang paling penting bagi sistem dunia nyata.
- Pengujian unit menangkap informasi kinerja dan memori untuk fungsi tertentu.
- Kami menggunakan uji kinerja (perfTest) untuk mengkarakterisasi kinerja Connext DDS. Kami memiliki investasi besar dalam perfTest sehingga dapat membuat pengukuran yang realistis. Ini dapat digunakan bersama dengan produk lain, seperti Layanan Perutean. Kami menggunakan PerfTest untuk mengumpulkan latensi publik dan data throughput kami. Hasil kinerja tersedia di https://www.rti.com/products/dds/benchmarks.html.
- memTest dibuat untuk memantau jejak memori Connext DDS Core. Connext DDS Micro mengumpulkan informasi jejak memori terperinci sebagai bagian dari pengujian unit.
- Aplikasi lain seperti Konsol Admin RTI dan Layanan Perekaman RTI memiliki kemampuan pemantauan kinerja bawaan.
Integrasi berkelanjutan dari PerfTest dan MemTest memastikan kami tidak mundur (melebihi persentase yang telah ditentukan sebelumnya) saat fitur baru ditambahkan ke produk Connext DDS.
Tes daya tahan meniru skenario yang sudah berjalan lama. Tes ketahanan memantau memori tumpukan dalam berbagai kasus penggunaan dinamis, seperti membuat dan menghapus peserta jarak jauh atau membuat dan menghapus titik akhir jarak jauh. Kerangka uji ketahanan juga berjalan dengan Plugin Keamanan RTI dalam kasus penggunaan uji fuzz di mana paket RTPS diubah secara acak. Pengujian berjalan dengan Rilis yang Tersedia Secara Umum (GAR) terbaru.
Uji coba skala besar dan stres sengaja dibuat sebagai bagian dari pengembangan fitur baru. Misalnya, ketika kami memperkenalkan Transport Mobility (juga dikenal sebagai mobilitas IP), kami membuat serangkaian tes untuk meniru koneksi dan pemutusan dari berbagai titik akses nirkabel. Ketika kami meningkatkan implementasi penemuan, kami membuat kerangka pengujian khusus untuk mensimulasikan ribuan titik akhir dan secara otomatis memverifikasi bahwa mereka ditemukan oleh setiap aplikasi. Biasanya, pengujian ini tidak dijalankan kembali pada setiap rilis, sebagian karena persyaratan peralatan dan jaringan. Beberapa pengujian (misalnya, pengujian penemuan skala besar) dijalankan kembali saat kami membuat perubahan pada implementasi penemuan.
Produk kami kuat dan kompleks, dan harus bekerja dalam rangkaian aplikasi yang bahkan lebih kompleks. Jadi, tentu saja kami tidak dapat menguji setiap skenario atau menemukan setiap kemungkinan masalah. Namun kami yakin bahwa kami memiliki salah satu program pengujian paling ekstensif di industri ini. Melalui proses pengujian yang ketat dan beragam ini, kami tahu bahwa pelanggan kami dapat mulai menggunakan rilis produk terbaru dengan tingkat kepercayaan yang tinggi.
Tentang penulis
[1] [2] 下一页