Asumsikan Anda menggunakan proses integrasi berkelanjutan yang sering memperbarui beberapa lingkungan target, sehingga setiap kali ada perubahan "Anda" dapat menguji perubahan Anda segera. Itu bagian dari tujuan CI, bukan?
Tetapi, juga asumsikan bahwa Anda memiliki orang lain yang terlibat dalam siklus pengujian Anda, mis. Manajer atau pelanggan. Masuk akal untuk melibatkan orang lain dalam mencoba meninjau (menghancurkan?) Perubahan Anda yang akan datang, bukan?
Tetapi jika Anda terus menerus memberikan perubahan dalam lingkungan di mana orang-orang itu, dengan serius, mencoba mengujinya, maka beberapa masalah dapat muncul, seperti:
they
mungkin membuang-buang waktu mereka dalam melaporkan masalah yang, pada saat mereka menyimpan laporan (mendalam), mereka bahkan tidak dapat mereproduksi masalah itu sendiri (mis. karena secara tidak sengaja Anda juga mengalami masalah yang sama, dan sudah memperbaikinya di lingkungan mereka).you
mungkin tidak dapat mereproduksi masalah yang mereka laporkan, karena lingkungan tempat mereka mengalami masalah, tidak lagi identik (Anda (!!!) mungkin telah overlay lingkungan mereka).
Jadi, apa yang dapat Anda lakukan (bagaimana mengkonfigurasi hal-hal?) Untuk menghindari situasi (frustasi) seperti itu?
sumber
Terdengar seperti Anda sedang berbicara tentang lingkungan tes yang terus-menerus kembali digunakan tanpa andal kembali diinisialisasi untuk setiap pelaksanaan tes. Ini membuat tes semacam itu tidak dapat diandalkan. Serupa, dari perspektif keandalan, dengan pengujian manual, jika Anda mau.
IMHO Anda tidak boleh menggunakan pengujian seperti itu di dalam tujuan kualifikasi CI / CD Anda karena itu akan secara efektif membatalkan proses kualifikasi Anda (setidaknya di area itu). Mengatakan bahwa perangkat lunak lolos tes X tanpa benar-benar menjalankan tes X untuk setiap versi perangkat lunak yang dikirim atau tanpa kepastian bahwa
pass
hasil yang diperoleh tidak disengaja (karena kesalahan positif) akan mengikis tingkat kepercayaan pengujian Anda. Negatif palsu tidak merusak kredibilitas, tetapi mereka juga tidak diinginkan karena "kebisingan" yang mereka buat tidak perlu.Tidak apa-apa untuk melakukan pengujian seperti itu di luar proses kualifikasi CI / CD Anda. Tetapi Anda akan memperlakukan hasil yang gagal dalam pengujian tersebut seperti bug yang ditemukan pelanggan: Anda harus mereproduksi masalah dengan andal agar dapat mengembangkan perbaikan untuk itu dan mengonfirmasi bahwa perbaikan tersebut berfungsi. Dan Anda tidak dapat benar-benar melakukannya jika pengujian tidak dapat diandalkan.
Jika Anda berencana untuk mengatasi masalah ini maka idealnya Anda pertama kali akan mengembangkan kasus pengujian otomatis dan andal untuk mereproduksi masalah tersebut. Yang akan Anda gunakan untuk mengembangkan perbaikan dan mengonfirmasi keefektifannya (hasil tes harus beralih dari FAIL ke PASS). Anda dapat (harus?) Juga meletakkan testcase ini di dalam proses kualifikasi CI / CD Anda untuk mencegah kemunculan kembali di masa mendatang, jika diinginkan - untuk meningkatkan tingkat kualitas rilis perangkat lunak Anda secara keseluruhan.
sumber
inside
danoutside
referensi relatif terhadap loop verifikasi CI. Pada dasarnya saya mempertanyakan alasan keberadaan lingkungan QA - sebagian besar tes yang dilakukan di sana harus dapat diandalkan dan akhirnya dieksekusi sebagai bagian dari verifikasi CI, terutama dalam konteks penyebaran berkelanjutan - karena Anda ingin menjalankannya pada setiap iterasi CI (berhasil setidaknya sampai titik itu).Pendekatan yang biasa adalah menciptakan lingkungan yang berbeda:
DEV - ini adalah tempat di mana tim dev mengacaukan semuanya. Berikut adalah buat semua perubahan tala, menyebarkan versi baru dan sebagainya. Di sinilah tempat CI terintegrasi sepenuhnya.
PREPROD / QA - ini adalah tempat "bermain" QA / tes / tim validasi melakukan tes. Lingkungan ini biasanya membeku selama tes. Integrasi CI dengan lingkungan ini hanya untuk menyediakan versi baru dari produk, konfigurasi, dll.
PRODUKSI - apakah perlu dijelaskan :)?
sumber
Jika Anda melakukan CI / CD, itu menyiratkan bahwa ada beberapa tes otomatis terjadi (CI) sebelum penyebaran (CD). Jika Anda menemukan banyak masalah di lingkungan pengujian Anda, itu berarti mereka tidak tertangkap oleh tes yang dijalankan sebelum penyebaran; ini menunjukkan pengujian otomatis tidak memadai. Jika pengembang mengalami masalah di mana cacat muncul di lingkungan pengujian, mereka perlu meningkatkan suite pengujian otomatis mereka untuk mencegah hal ini. Ini juga akan meningkatkan kualitas dan keandalan secara keseluruhan, hingga produksi.
sumber
Untuk menambah jawaban Romeo Ninov, secara internal di dalam lingkungan Anda perlu mencoba dan memisahkan aplikasi sebanyak mungkin. Ini adalah sebagian mengapa buruh pelabuhan telah begitu sukses untuk dev / test. Ini membuat Anda hampir berpura-pura tidak berbagi lingkungan sama sekali.
Pilihan lainnya adalah memiliki server yang sangat jelas tempat aplikasi dijalankan yang terpisah dari infrastruktur lainnya yang membentuk lingkungan Anda. Yaitu. Semua mesin manajemen lingkungan atau pemberdayaan berjalan di server yang terpisah dan berumur panjang. Kemudian Anda menghubungkan server baru berumur pendek berdasarkan gambar yang dikenal untuk menguji aplikasi dan, jika ada perubahan yang dilakukan pada gambar dasar, Anda perlu menerapkan perubahan itu di mana - mana untuk setiap komponen baru. Yang berarti menguji perubahan terhadap semuanya.
Jika tim appdev meminta perubahan yang merusak aplikasi orang lain, maka nasib buruk, mereka perlu secara internal membuat mitigasi dalam kode mereka dan menjaga persyaratan spesifik mereka terpisah dari penawaran lingkungan.
sumber