Kami adalah tim besar (10-12 pengembang dan 4 qa) yang mengerjakan beberapa proyek dengan repositori git yang sama. Ini adalah layanan web backend berbasis pegas boot. Kami mencari strategi percabangan dan penerapan git yang baik. kami juga memiliki tim qa yang memastikan bahwa fitur kami berfungsi seperti yang diharapkan (bebas bug sampai batas tertentu).
Setelah membaca beberapa artikel, saya merasa bahwa model Gitflow akan bekerja dengan baik untuk kita. Inilah pertanyaan saya.
Di mana tim QA kami harus menguji fitur kami?
- haruskah mereka menguji pada cabang fitur, di mana mereka akan meningkatkan bug dan pengembang akan memperbaikinya dan setelah lulus uji QA kami bergabung untuk mengembangkan. dan QA akan kembali melakukan pengujian integrasi dalam mengembangkan cabang.
- haruskah kita menggabungkan semua fitur (setelah pengujian unit dan pengujian dasar dari pengembang) untuk mengembangkan cabang dan membiarkan pengujian qa dari sana. perbaikan dan tes semua akan terjadi dalam pengembangan juga.
Saya ingin tahu pendekatan apa yang berhasil baik untuk orang lain.
Pertanyaan bagus Saya tidak berpikir ada jawaban 'resmi' yang benar untuk ini. Itu tergantung seberapa cepat Anda bisa menguji.
Masalah penting adalah bahwa setiap penggabungan, kompilasi atau bahkan penyebaran, berpotensi dapat membuat bug. Semakin jauh 'naik' rantai yang Anda uji, semakin cepat Anda tahu tentang bug, tetapi juga semakin banyak kali Anda harus menguji ulang.
Untuk memastikan bahwa Anda telah menguji perangkat lunak yang digunakan pelanggan, Anda benar-benar harus menguji penyebaran langsung sebelum lalu lintas pelanggan (dengan asumsi aplikasi web) dialihkan ke server-server tersebut melalui pola penyebaran biru / hijau.
Tapi jelas ini agak terlambat untuk menjadi yang pertama kali Anda memeriksa kode sama sekali!
Jika Anda menguji cabang rilis dalam qa env maka Anda dapat mengambil risiko dan mengurangi pengujian langsung menjadi tes merokok saja. dan terapkan perbaikan bug ke cabang rilis. Tetapi Anda tidak dapat menilai apakah suatu fitur sudah lengkap sebelum membuat rilis
Jika Anda menguji pengembangan maka Anda mendapatkan cabang bug-fix-fitur mini. Fitur masih digabungkan sebelum dinilai, ditambah fitur untuk rilis berikutnya dapat bertabrakan dengan pengujian rilis saat ini.
Jika Anda menguji cabang Fitur, Anda memerlukan sejuta lingkungan dan harus mengatur urutan gabungan dan uji sign off. ditambah banyak pengujian ulang.
Dari pengalaman saya, saya akan merekomendasikan:
uji cepat cabang fitur pada mesin dev. cukup pastikan fitur-fiturnya lengkap dan penguji / pengembang setuju tentang apa arti persyaratan.
Pengujian sehari-hari / pengujian otomatis pada cabang dev yang digunakan untuk server qa. Memungkinkan Anda menguji semua fitur bersama dan mengatakan kapan Anda siap untuk merilis.
Jika semua fitur dalam tetapi pengujian belum selesai. misalnya sprint selesai. membuat cabang rilis dan menyebarkan ke lingkungan qa kedua. Hal ini memungkinkan untuk memperbaiki / menguji bug pada rilis 1 untuk melanjutkan pada saat yang sama dengan fitur untuk rilis 2.
(penggemar scrum akan mengatakan bahwa Anda hanya harus memasukkan perbaikan bug ke sprint 2 tetapi tetaplah praktis)
Tes asap pada penyebaran hijau / biru hidup sebelum beralih. Ini sangat penting karena Anda akan mengambil kesalahan konfigurasi / lingkungan yang tidak terlihat oleh siapa pun saat berkembang.
sumber
Saya setuju dengan Thomas Owens. Anda mungkin harus menguji dua kali. Sekali pada cabang fitur sebelum digabungkan dan sekali pada cabang utama Anda sebelum Anda rilis.
Bahkan, saya sangat menyukai alur kerja itu sehingga saya membuat alat, Topico , yang secara otomatis membuat dan menjalankan versi pakai aplikasi Anda untuk setiap permintaan tarik, masing-masing dengan URL pengujian uniknya sendiri. Ini memungkinkan tim QA Anda untuk menguji cabang fitur secara terpisah tanpa perlu semacam lingkungan uji dinamis yang diatur pada mesin mereka sendiri.
Pendekatan ini akan berarti hanya kode yang telah lulus pengujian manusia yang akan mencapai cabang utama Anda, sehingga menjaga integritasnya.
Saya memperkenalkan ini di beberapa perusahaan dan itu sangat membantu siklus rilis kami. Kami sekarang dapat menjadwalkan rilis secara akurat, dan kami jauh lebih baik dalam memahami apa yang mungkin membuatnya menjadi rilis berikutnya dan apa yang harus menunggu rilis berikutnya. Itu hanya memberi Anda lebih banyak kepercayaan diri.
sumber