Hari ini kita mengamati bagaimana model pengembangan air terjun secara bertahap mati di seluruh dunia. Dia tidak dicintai karena beratnya dan reaksi buruknya terhadap perubahan. Ini secara langsung mempengaruhi relevansi produk dan meningkatkan TTM (waktu-ke-pasar), menghasilkan biaya tambahan. Pengembang membangun kembali di atas rel yang gesit, dan kami tidak terkecuali.
Metodologi gesit pada awalnya dibuat untuk tim kecil yang membuat produk turnkey dalam mode end-to-end dan bertanggung jawab atas kualitasnya sendiri. Tetapi bagaimana jika Anda mengembangkan sistem perbankan yang sangat kritis di mana puluhan tim tangkas bekerja? Bagaimana cara mencapai kepercayaan pada produk yang memberikan pengujian panjang dan komprehensif seperti pada air terjun? Dalam posting ini kami akan membagikan solusi kami untuk masalah ini.

Setiap orang menyelesaikan masalah dengan cara yang berbeda, tetapi biasanya masalah ini terkait dengan pengujian otomasi. Tes sedang dikembangkan di atas rintisan, aturan umum untuk membentuk simpanan tim tetangga adalah kerangka kerja untuk interaksi antar tim seperti SAFe. Akibatnya, karena sinkronisasi jaminan simpanan, tim produk terkait dapat menulis dan melakukan pengujian bersama, termasuk pengujian integrasi. Kami memiliki kerangka kerja seperti itu.
Tetapi sekarang kami menempatkan diri di tempat pemilik sistem perbankan yang kompleks dan sangat kritis. Lagipula, siapa yang bertanggung jawab atas kualitas seluruh produk ini jika mereka terlibat langsung dalam lusinan tim tangkas yang bertanggung jawab? Anda harus yakin bahwa tidak ada yang akan gagal dalam produksi. Memperkenalkan pengujian tambahan? Hai, air terjun, dan selamat tinggal, TTM.
Tidak ada solusi yang sempurna. Dalam situasi ini, kita akan selalu memiliki konflik antara prinsip-prinsip metodologi dan keandalan hasil yang dijamin. Ini adalah kompromi yang kami temukan.
Gerbang berkualitas
Jika kekhususan produk Anda mengasumsikan bahwa ia tidak sepenuhnya terisolasi dari yang lain, maka pada titik kontak Anda harus bermain dengan satu aturan - perhatikan tingkat kualitas minimum. Kode harus dicakup oleh unit test, tidak boleh mengandung cacat kritis keamanan informasi, distribusi harus menjalani tes asap saat dikirimkan. Bukan timah, tetapi persyaratannya wajib untuk semua orang. Implementasinya adalah lolos ke pengujian umum.
Jadi, secara umum, praktik
Quality Gates terlihat seperti serangkaian pemeriksaan otomatis yang dibangun di dalam setiap pipeline devops sistem. Bahkan, itu mencerminkan kecenderungan pengujian shift-shift, yang sekarang sering dibicarakan dalam kerangka para devops.

Kami sepakat dengan semua tim tentang sejumlah pemeriksaan, gerbang kualitas, yang harus mereka lewati selama tahap-tahap siklus hidup.
Coding
Sebelum membangun kode, Anda memerlukan analisis statis wajib, memeriksa kode untuk kepatuhan dengan standar bahasa pemrograman tertentu. Serta kelengkapan cakupan dengan unit test. Ada beberapa alat untuk ini. Sebagai contoh, kami menyukai SonarQube. Setelah melewati gerbang kualitas ini, tim dapat yakin bahwa mereka tidak melanggar sejumlah aturan dasar pada tahap awal. Sebagai contoh, duplikasi signifikan dihindari, yang meningkatkan kompleksitas kode dan kemungkinan masalah.
Tes kedua sebelum perakitan adalah pemeriksaan IS. Ada praktik yang diterima secara umum untuk mengidentifikasi masalah IS dalam kode dan alat yang dapat memindai kode dan mengidentifikasi tempat-tempat berbahaya. Misalnya, variabel yang dinyatakan secara tidak benar dapat menyebabkan masalah dalam produksi. Di sini kami sepakat untuk tidak mengizinkan segala sesuatu yang dapat diungkapkan pada tahap penulisan kode, ke pentest dan pemeriksaan yang lebih kompleks.
Membangun distribusi
Ketika merakit kit distribusi, kami selalu memeriksa hasilnya: bahwa perakitan berjalan dengan benar, bahwa semua layanan dimulai dan berfungsi sebagaimana mestinya, bahwa kit distribusi dapat diinstal pada lingkungan yang diinginkan, dan itu akan berfungsi. Uji verifikasi buiild seperti itu menghilangkan potensi kesalahpahaman antara penguji dan pengembang. Dalam praktik air terjun, dulu pengembang selesai bekerja, menyerahkan distribusi kepada penguji, dan ketika dipasang di dudukan, ternyata perakitan bahkan tidak dimulai. Kemudian seluruh siklus itu rusak, perkembangannya melebar dan tidak ada yang baik terjadi sama sekali.
Interaksi integrasi kami sangat rumit. Penting untuk tidak melanggar pendirian di mana tim lain dapat diperiksa. Kita dapat melakukan ini karena distribusi yang buruk, dan tetangga stan akan mengetahuinya sebelum kita - kita hanya akan mengganggu seluruh proses kerja untuk mereka. Selain itu, ini dapat merusak data uji. Dan persiapan mereka juga membutuhkan uang dan membutuhkan waktu yang lama. Terutama ketika menyangkut data pengguna yang dianonimkan.
Tes Asap
Saat kit distribusi dipasang di setiap bangku tes, ia lulus serangkaian tes asap sederhana. Di stand pengujian sistem, fungsionalitas distribusi diuji. Selanjutnya, kit distribusi diletakkan pada dudukan pengujian integrasi, di mana interaksi integrasi diuji. Ini juga menjalankan serangkaian tes asap. Jika distribusi tidak lulus, ia tidak dapat melanjutkan ke tahap berikutnya.
Menggunakan gerbang kualitas ini, kami mendapatkan ide awal tentang kualitas distribusi. Jika tes asap berhasil, tim mulai menguji. Jika kit distribusi tidak lulus tes asap pada tahap ini, kemungkinan besar tidak akan lulus pengujian manual. Di sini kami menetapkan hanya jika majelis berpotensi siap untuk pergi ke prom.
Gerbang kualitas sebagai kerangka kerja
Kami berusaha keras untuk memastikan bahwa gerbang kualitas menjadi kerangka kerja lengkap untuk mengelola kualitas pengembangan sejumlah besar produk dengan gesit. Jika sebuah tim secara konstan gagal untuk melewati gerbang kualitas yang wajib, ini adalah sinyal bahwa ada masalah yang perlu didiskusikan dan diselesaikan. Di sisi lain, jika beberapa tim telah menguasai gerbang kualitas dasar dan membangunnya ke dalam prosedur internal, itu dapat melangkah lebih jauh dan termasuk gerbang kualitas tambahan.
Di masa depan kami berencana untuk meluncurkan set baru gerbang kualitas wajib. Dan juga opsional, sehingga setiap tim dengan tingkat kematangan yang cukup dapat memilih apa yang dibutuhkan. Misalnya, jika Anda ingin mengetahui stabilitas paket distribusi di lokasi pengujian integrasi, tim akan mengambil gerbang kualitas saja. Jika Anda perlu memastikan bahwa unit yang rumit dan multi-komponen tidak menghalangi penyebaran, yang lain akan menerimanya. Seseorang memiliki bias terhadap keamanan di depan, seseorang terhadap pemeriksaan pengujian beban, ketersediaan tegakan, respons, seseorang di depan integrasi atau verifikasi beberapa data. Setiap tim akan dapat menemukan gerbang berkualitas untuk kasus mereka.
Penting untuk dicatat bahwa gerbang mutu bukan pengganti pengujian, tetapi
alat kontrol utama . Tidak ada yang membatalkan pengujian. Tugas utama di sini adalah untuk meminimalkan kerusakan pada tim lain dari kualitas produk yang buruk sedini mungkin.
Contoh pipa pihak ketiga yang mencakup gerbang berkualitasHasil implementasi gerbang kualitas
Pertama-tama, kami telah meningkatkan stabilitas siklus produksi. Pergeseran dalam aksi, kami dapat segera mendeteksi bug fungsionalitas penting. Lebih sedikit waktu yang dihabiskan untuk berbagai iterasi pengujian, cacat sebelumnya terdeteksi, sehingga eliminasi mereka lebih murah.
Waktu tunggu telah menurun - waktu dari awal pengkodean fitur hingga implementasinya dalam produksi. Stabilitas fase rekayasa TTM telah meningkat karena fakta bahwa kami telah mengurangi waktu henti dalam proses pengiriman kit distribusi ke lingkungan industri. Kami menghabiskan waktu yang sama untuk pengujian, tetapi kami tidak memiliki waktu henti karena runtuhnya dudukan, kebutuhan untuk menunggu distribusi dibangun kembali.
Waktu yang tersedia untuk lingkungan pengujian telah meningkat. Sebelumnya, Anda bisa meletakkan majelis di atasnya dan melupakannya selama seminggu. Sementara itu, tim terkait tidak dapat diuji dalam lingkungan ini, karena bangunan Anda rusak dan Anda akan mengetahuinya hanya setelah seminggu. Sekarang, ketika Anda meletakkan perakitan di tanah, Anda sendiri mengujinya untuk masalah yang paling umum, jika perlu, mundur, selesaikan, kembalikan kembali. Dan peluang untuk tidak menghentikan siapa pun menjadi jauh lebih tinggi. Pengenalan gerbang kualitas juga akan mengarah pada pengurangan biaya pemulihan tegakan dan pelatihan ulang data uji.
Pendapat anda
Seperti yang kami katakan di awal, kontradiksi antara prinsip-prinsip tangkas dan pembangunan terintegrasi tidak dapat dipotong sebagai simpul Gordian. Seseorang hanya dapat berusaha untuk memastikan bahwa itu membawa masalah sesedikit mungkin. Dalam kasus kami, praktik gerbang kualitas membantu, tetapi, tentu saja, kami tidak menganggapnya ideal. Bagaimana Anda mengatasi masalah ini? Akan sangat menarik bagi kita untuk membahas masalah ini.
Nikolay Vorobyov-Sarmatov, Sberbank-Technology, Sberworks
Terima kasih kepada Mikhail Bizhan untuk bantuan dalam mempersiapkan artikel!