Tim pengembangan kami telah menggunakan strategi percabangan GitFlow dan ini sangat luar biasa!
Baru-baru ini kami merekrut beberapa penguji untuk meningkatkan kualitas perangkat lunak kami. Idenya adalah bahwa setiap fitur harus diuji / QA oleh tester.
Di masa lalu, pengembang bekerja pada fitur pada cabang fitur yang terpisah dan menggabungkannya kembali ke develop
cabang setelah selesai. Pengembang akan menguji sendiri karyanya di feature
cabang itu. Sekarang dengan penguji, kami mulai menanyakan pertanyaan ini
Di cabang mana tester menguji fitur baru?
Jelas, ada dua opsi:
- pada cabang fitur individu
- di
develop
cabang
Pengujian Di Kembangkan Cabang
Awalnya, kami percaya ini adalah cara yang pasti untuk dilakukan karena:
- Fitur ini diuji dengan semua fitur lainnya digabungkan ke
develop
cabang sejak pengembangannya dimulai. - Konflik apa pun dapat dideteksi lebih awal dari nanti
- Itu membuat pekerjaan penguji mudah, ia hanya berurusan dengan satu cabang (
develop
) setiap saat. Dia tidak perlu bertanya kepada pengembang tentang cabang mana untuk fitur apa (cabang fitur adalah cabang pribadi yang dikelola secara eksklusif dan bebas oleh pengembang yang relevan)
Masalah terbesar dengan ini adalah:
The
develop
cabang tercemar dengan bug.Ketika penguji menemukan bug atau konflik, ia melaporkannya kembali ke pengembang, yang memperbaiki masalah pada pengembangan cabang (cabang fitur ditinggalkan setelah digabungkan), dan mungkin ada lebih banyak perbaikan yang diperlukan setelahnya. Multiple commitence melakukan atau menggabungkan (jika suatu cabang diciptakan kembali dari
develop
cabang lagi untuk memperbaiki bug) membuat memutar kembali fitur daridevelop
cabang menjadi sangat sulit jika memungkinkan. Ada beberapa fitur yang digabungkan dan diperbaiki didevelop
cabang pada waktu yang berbeda. Ini menciptakan masalah besar ketika kami ingin membuat rilis dengan hanya beberapa fitur didevelop
cabang
Menguji Cabang Fitur
Jadi kami berpikir lagi dan memutuskan untuk menguji fitur pada cabang fitur. Sebelum kami menguji, kami menggabungkan perubahan dari develop
cabang ke cabang fitur (mengejar ketinggalan dengan develop
cabang). Ini bagus:
- Anda masih menguji fitur dengan fitur lain di arus utama
- Pengembangan lebih lanjut (misalnya perbaikan bug, penyelesaian konflik) tidak akan mencemari
develop
cabang; - Anda dapat dengan mudah memutuskan untuk tidak merilis fitur sampai sepenuhnya diuji dan disetujui;
Namun, ada beberapa kekurangannya
- Penguji harus melakukan penggabungan kode, dan jika ada konflik (sangat mungkin), ia harus meminta bantuan pengembang. Penguji kami berspesialisasi dalam pengujian dan tidak mampu mengkode.
- suatu fitur dapat diuji tanpa adanya fitur baru lainnya. mis. Fitur A dan B keduanya sedang diuji pada saat yang sama, kedua fitur tersebut tidak mengetahui satu sama lain karena tidak satu pun dari mereka telah digabungkan ke
develop
cabang. Ini berarti Anda harus menguji terhadapdevelop
cabang lagi ketika kedua fitur tersebut digabungkan ke cabang berkembang. Dan Anda harus ingat untuk menguji ini di masa depan. - Jika Fitur A dan B keduanya diuji dan disetujui, tetapi ketika konflik digabungkan diidentifikasi, kedua pengembang untuk kedua fitur percaya itu bukan kesalahannya sendiri / pekerjaan karena cabang fitur-fiturnya melewati tes. Ada overhead tambahan dalam komunikasi, dan kadang-kadang siapa pun yang menyelesaikan konflik frustrasi.
Di atas adalah kisah kami. Dengan sumber daya terbatas, saya ingin menghindari menguji semuanya di mana-mana. Kami masih mencari cara yang lebih baik untuk mengatasi hal ini. Saya akan senang mendengar bagaimana tim lain menangani situasi seperti ini.