Bu yazımda sizlere test süreçlerinde branch stratejisinden bahsedeceğim.

Branchler projelerimizin birer kopyasıdır. Branchler, projemizin o anki haline dokunmadan, aynı proje üzerinde birden fazla kişi farklı konularda yeni özellikler (feature) ekleyerek çalışmamızı sağlar. Böylece proje hızla geliştirilmeye devam edebilir. Böylece ana kodumuza dokunmadan bazı deneysel çalışmalar yapabilir, kütüphane yükseltmeleri deneyebilir, başarısız olması durumunda herhangi bir geri alma yükü ile karşı karşıya kalmadan basitçe branchimizi silebiliriz. Başarılı olması durumunda ise yine basitçe DEV branch’i ile birleştirip devam edebiliriz.

Feature branch projeye eklenen yeni özelliği içermektedir. Açıklayıcı bir branch ismi kullanılması tercih edilmelidir. Feature branch isimlendirme formatı Feature / ABC şeklinde yapılabilir.

Tamamlanan feature branchler, testlerden sonra DEV’e merge olarak kodun son hali ile birleştirilmiş olur. Release branch ise dev ve master branchin birleştirilmesiyle “release/[major].[release].[hotfix]” etiketi oluşturulmuş olur.

Test Mühendisi bu aşamaların, DEV branchinde devreye girebilir. Tüm özellikleri birlikte test etme imkanı olacaktır ve tek bir branchte test edeceği için hangi özelliğin hangi branchte olduğuna bakması gerekmeyecektir. Ancak bunun bazı dezavantajları olacaktır. Feature branchler ile geliştirilen her bir özellik test edilmeden DEV branchine aktarılacağı için DEV branchinde çok fazla bulgu ile karşılaşılabilir. Bulunan bulgular ile ilgili; “Yapılan geliştirmelerin birbirlerini etkilediği noktada mı?” ya da “Özellik geliştirilirken hatalı geliştirmeden mi kaynaklandığı” konusu netleşmeyecektir.

İkinci ve sağlıklı bir yol olarak, Test Mühendisi Feature Branch’te devreye girebilir. Özelliğin detayları ile birlikte hazırlanan kapsamlı test senaryoları manuel olarak branch üzerinde koşulur. Bulgular çözümlenerek branchin içerdiği özelliğin hatasız çalıştığından emin olunmalıdır. Feature branchlerin birleştirilerek DEV’e merge olduğunda; birden fazla geliştirilen özellik bir araya geleceği için feature branchlerde çalışan fonksiyonlarda dev branchinde hata alabiliriz. Bu nedenle DEV branchinde ilgili özellikleri ve öncesinde var olan özellikleri tekrar test etmemiz gerekir. Bu noktada, manuel test yapmak çok fazla vaktinizi alacaktır. Bu nedenle otomasyon kullanarak, yeni eklenen özelliklere ait senaryoları otomasyon senaryosuna ekleyerek master branchinde tüm senaryoları deneyebilirsiniz. Son olarak master branchinde yapılan test ile release alınan kodun güvenirliği daha sağlam olacaktır. Eğer otomasyon kullanmıyorsanız, ilgili proje üzerindeki deneyiminize güvenerek belirli fonksiyonları test edebilirsiniz.