Cara meningkatkan CI / CD dengan ujian shift-kiri

Aplikasi pengujian dulunya merupakan aktiviti yang mencabar secara teknikal dan tidak berjalan dengan waktu yang dijadualkan beberapa hari atau minggu sebelum pelepasan aplikasi. Pasukan pengembangan diberi kelonggaran untuk membuat kod hingga jam kesebelas, dan penguji, yang melakukan banyak pekerjaan mereka secara manual, tidak mempunyai banyak pilihan selain membuat sedikit masa yang diberikan kepada mereka. Hasilnya adalah bahawa banyak aplikasi menjalani pengujian di bawah standar, dan tim teknologi terpaksa menanggapi masalah produksi dan kecacatan meningkat oleh pengguna akhir dan sistem pemantauan aplikasi.

Menggunakan amalan integrasi berterusan, kerangka pengujian unit, dan amalan automasi ujian telah menaikkan paradigma ini. Daripada melakukan jaminan kualiti pada akhir proses pengembangan, banyak praktik pengujian kini bermula dan dilaksanakan sepenuhnya semasa pengekodan, integrasi, dan penerapan. Perangkat dan pasukan tangkas mengautomasikan skrip ujian, dan saluran paip CI / CD meminta untuk menjalankan ujian semasa penyatuan kod atau fasa penghantaran mereka. Hasil bersihnya adalah bahawa pemaju diberi amaran apabila perubahan kod mereka melanggar struktur dan dapat mengambil langkah segera untuk mengatasi masalah yang dilaporkan.

Mengautomasikan ujian dan mengintegrasikan skrip pengujian ke dalam saluran paip CI / CD dikenali sebagai ujian shift-kiri. Ini menyiratkan bahawa lebih banyak amalan jaminan kualiti dapat dilakukan dalam fasa pengembangan untuk mengatasi masalah lebih awal pada garis masa pelepasan. Pengujian automatik adalah salah satu keutamaan penerapan untuk pasukan tangkas dan devops yang ingin meningkatkan frekuensi penggunaan.

Pada pengenalan fungsi baru, skrip ujian yang dibina mengesahkan keupayaan baru. Ujian ini kemudian dapat automatik dan disertakan dalam langkah-langkah membangun atau menyebarkan. Daripada meminta jurutera QA menjalankan ujian regresi pada akhir proses pelepasan, anda boleh menjalankan dan mengesahkan banyak ujian ini sebagai sebahagian daripada pengembangan. Ujian ini beralih ke kiri dari akhir proses pelepasan ke fasa pengembangan dan pengekodan yang lebih awal.

Ujian Shift-kiri memungkinkan komitmen pasukan tangkas terhadap kualiti

Ujian kiri-kanan bukan sahaja mendorong kecekapan dan meningkatkan kualiti, tetapi juga mewujudkan perubahan budaya yang signifikan dalam proses pengembangan tangkas.

Beberapa pasukan pembangunan menganggap jaminan kualiti dan ujian sebagai penghalang untuk mendapatkan kod mereka ke produksi. Setelah bertungkus lumus dalam memuaskan pemilik produk yang tangkas dan menyelesaikan kodnya, rakan sepasukan QA mengenal pasti senarai bug yang memerlukan pemulihan. Sekiranya QA menemui banyak pepijat, ia dapat mempengaruhi garis masa pelepasan untuk memperbaikinya. Lebih teruk lagi apabila bahagian kod yang penting perlu dibuat semula kerana kelemahan mendedahkan masalah logik, keselamatan, atau prestasi. Dalam senario ini, pembangun dan jurutera QA mungkin berada dalam pasukan tangkas yang sama tetapi tidak bertindak sebagai satu pasukan.

Ujian Shift-kiri membolehkan pasukan lincah mengalihkan tanggungjawab berkualiti kepada pasukan pembangun dan penguji sepenuhnya. Semasa ujian dijalankan sebagai sebahagian daripada saluran paip CI / CD, ini memberi peluang yang lebih baik bagi pembangun untuk menangani masalah kualiti pada saat ketika mereka mengerjakan kod yang relevan. Saluran paip CI / CD memberi amaran kepada pemaju mengenai binaan yang gagal, dan kebanyakan pasukan pembangunan yang mengatur sendiri memerlukan segera menyelesaikan masalah ini.

Ujian kiri-kanan juga memberi peluang kepada pembangun dan jurutera QA untuk mengautomasikan lebih banyak ujian. Amalan terbaik adalah untuk pasukan menentukan siapa yang melaksanakan automasi bergantung pada jenis ujian yang diperlukan untuk fungsi yang dikembangkan. Sebagai contoh, pembangun sering bertanggungjawab untuk mengautomasikan ujian unit dan API, tetapi jurutera automasi QA sering mengembangkan ujian pengalaman pengguna dan ujian transaksi akhir-ke-akhir yang mensimulasikan panggilan API berbilang langkah ke pelbagai perkhidmatan.

Bila hendak menggunakan ujian shift-kiri

Ujian Shift-kiri berfungsi paling baik untuk lebih banyak tahap atom, ujian atom yang mempunyai masa pelaksanaan yang pendek. Sangat mustahak untuk menguji secara automatik dalam saluran paip CI / CD, dan dijalankan setiap kali pembangun mencetuskan binaan, melaksanakan dengan cepat dan tidak memperlambat proses pembuatan.

Ujian yang lebih kompleks dan intensif masa seperti ujian pengalaman pengguna akhir hingga akhir, ujian transaksi, analisis kod statik, dan ujian keselamatan sering berjalan lebih baik di luar saluran paip CI / CD dan pada jadual harian atau lebih kerap. Ujian ini masih memberikan maklum balas awal kepada pembangun mengenai masalah kualiti, tetapi ujian itu dibuat secara automatik di luar CI / CD untuk mengelakkan kelewatan atau kemacetan.

Thomas J. Sweet, seorang VP dalam Perkhidmatan IT di GM Financial, berkongsi dengan saya pandangan peribadinya mengenai had strategi ujian shift kiri. Dia menyarankan, “Bergeser ke kiri selalu merupakan strategi, kecuali ketika melakukan pengujian integrasi pada pengiriman vendor pihak ketiga, karena Anda sering tidak memiliki akses ke kod sumber mereka. Walaupun anda mempunyai aplikasi dalaman dengan seni bina monolitik lama, anda boleh memulakannya dengan menguatkuasakan dasar daftar masuk asas yang memerlukan tinjauan kod dan imbasan keselamatan. Daftar masuk harus ditolak jika imbasan itu merangkumi amaran dan kegagalan penting. "

Salah satu penyelesaian yang berpotensi untuk ujian hilir dengan rakan integrasi adalah dengan melaksanakan virtualisasi perkhidmatan. Teknik ini membolehkan pasukan pembangunan mensimulasikan tindak balas sistem hilir terhadap input yang berbeza. Ia berfungsi dengan baik apabila sistem hiliran ditentukan dengan baik. Alat dari Fokus Mikro, Tricentis, dan lain-lain membolehkan keupayaan ini.

Rob Pociluk, seorang pengurus jaminan kualiti yang berpengalaman, adalah penyokong kuat ujian pergeseran kiri dalam pengembangan tangkas. “Bersedia dan dapat menguji bahagian kecil kod menjadikan QA tetap fleksibel dan terus bergerak selama kemajuan pecut. Pasukan tetap harus berhati-hati menggunakan shift kiri terlalu banyak kerana anda boleh kehilangan tujuan kod itu sendiri. "

Oleh itu, walaupun pasukan merangkul sepenuhnya ujian shift kiri, ada alasan yang baik untuk tetap menjadualkan tetingkap ujian pada build lengkap kod yang disasarkan untuk dilancarkan. Ini memastikan bahawa semua ujian automatik dilakukan pada build terakhir, tetapi juga memungkinkan menjadwalkan ujian tambahan yang memerlukan sistem berfungsi sepenuhnya.

Salah satu ujian tersebut adalah UAT (ujian penerimaan pengguna), di mana pengguna akhir dan pakar kandungan terpilih mengesahkan dan memberikan maklum balas. Sebilangan UAT dapat dilakukan semasa pengembangan, tetapi mungkin tidak mudah untuk membuat orang melakukan ujian ini dengan kerap atau ketika fungsi tidak siap sepenuhnya.

Prasyarat untuk strategi ujian beralih ke kiri

Ujian Shift-left adalah amalan devops yang semakin meningkat, tetapi mempunyai prasyarat dan pelaburan awal. Beberapa keupayaan dan amalan penting diperlukan.

  • Kapasiti dan persekitaran pengujian yang mencukupi diperlukan untuk menyokong bilangan binaan dan ujian yang dijalankan secara serentak.
  • Pasukan lincah memerlukan sekumpulan alat untuk menguji produk yang dengan mudah disatukan ke saluran paip CI / CD dan alat penjadualan pekerjaan, dan yang dapat mengesahkan fungsi, kualiti kod, keselamatan, dan prestasi.
  • Arkitek, pakar infosec, ketua QA, dan anggota kanan organisasi yang lain harus menetapkan standard ujian dan objektif tahap perkhidmatan yang membentuk kriteria penerimaan lalai.
  • Apabila aplikasi memerlukan input pengguna, pasukan ujian memerlukan data dan corak ujian yang mencukupi untuk mengesahkan persona, kes penggunaan, dan corak input yang mencukupi.
  • Pada komitmen sprint atau sebelumnya, pasukan scrum, termasuk jurutera automasi ujian QA, harus mengatur strategi pengujian mengenai kemampuan apa yang diuji, jenis pengujian apa yang dilaksanakan, proses automasi apa yang diperbarui, dan siapa yang mengembangkan ujian.
  • Pasukan Devops harus mengukur jangka masa berjalan dan bendera saluran paip CI / CD apabila langkah ujian automatik mempengaruhi produktiviti. Pasukan Devops sering memerlukan jadual ujian tambahan di luar saluran paip CI / CD untuk melaksanakan ujian yang lebih lama.
  • Pasukan harus kerap membincangkan jurang dalam ujian automatik mereka, terutama pengesahan yang memerlukan pakar subjek, UAT, atau ujian dengan rakan kongsi. Sekiranya pasukan tangkas tidak dapat mengatasi jurang ini dengan automasi, maka kitaran pelepasan harus memperhitungkan overhead untuk mengurangkan risiko dan menyelesaikan ujian ini.

Terakhir, pasukan tangkas dan organisasi pemalu harus secara berkala mengukur dan membincangkan liputan ujian mereka. Menggunakan strategi pengujian shift-kiri tidak akan berhasil jika pasukan pengembangan dan jurutera automasi berkualiti tidak benar-benar melaksanakan, mengotomatisasi, dan mengintegrasikan ujian yang mencukupi untuk menangkap masalah dan menangani risiko.

Mempercepat kitaran pelepasan atau membolehkan penghantaran berterusan tanpa automasi ujian yang mencukupi dapat menghasilkan masalah kualiti yang signifikan yang menurunkan pengalaman bagi pengguna akhir. Pasukan pengembangan lincah mendorong pelepasan terlalu kerap kemudian mendapati mereka menangani masalah dan kecacatan pengeluaran dan bukannya melabur dalam automasi yang lebih banyak dan lebih baik.