Toplamda yaklaşık 40 geliştiriciden oluşan 5 ekip içeren bir geliştirme grubunun üyesiyim. Scrum metodolojisini 3 haftalık sprintlerle takip ediyoruz. Birkaç saat süren bir inşa boru hattıyla (kapsamlı otomatik testler nedeniyle) sürekli bir entegrasyon kurulumumuz (Jenkins) var. Temel olarak, geliştirme süreci iyi çalışır.
Bununla birlikte, birkaç gün sonra yeni bir sprint içinde yapımızın genellikle kararsız hale geldiğini ve sprint-sonu "kesinti duruncaya" kadar titrek kaldığını gözlemliyoruz. Bu olumsuz etki, o yapı özellikle UI- / Webtests edilir uzak boru hattı aşağı adım uzaklıktadır değil (sadece bir 'yeşil' yapı üzerinde tetiklenen çünkü) birkaç gün boyunca yürütülür. Sonuç olarak, yeni tanıtılan hatalar genellikle sprintte çok geç tespit edilir.
- Her taahhüt temel bir test grubuna göre doğrulanır. Doğrulandıktan sonra, değişiklik bir kod incelemesinden sonra master hale getirilir (Gerrit)
- Temel birim testleri her 30 dakikada bir, süresi 10 dakikadan az sürer
- Entegrasyon testleri her 2 saatte bir, 1 saatte bir yapılır
- UI- / Webtests başarılı entegrasyon testlerinde çalışır, birkaç saat sürer
Sprint sırasında inşa istikrarından kimin sorumlu olduğuna bağlı olarak (sorumluluk sprint başına aktarılır), yapıyı tekrar dengeye getirmek için ara, geçici "kesinti durakları" olabilir.
Yani, istiyoruz:
- Geliştirici ekiplerimiz, bir sprint boyunca değişiklikleri geliştirmek ve taahhüt etmek için
- Bir derleme adımı başarısız olursa derleme sürecimiz, sonraki derleme sonuçlarının çok az anlamı olduğundan
- Geliştiricilere zamanında kaliteli geri bildirim vermek için oluşturma sürecimiz
(2) verildiğinde, (1) ve (3) noktaları birbiriyle çelişiyor gibi görünmektedir. Herkes bununla nasıl başa çıkılacağı konusunda iyi bir uygulama var mı?
( Şu anda (2) noktasını gevşetiyoruz ve başarısız yapım adımlarında bile yapı sürekliliğine izin veriyoruz. Bunun henüz kalitemizi nasıl etkilediğine dair bir geri bildirimim yok )
Teşekkürler, Simon
several hours
, asıl sorun budur diyebilirim . birleştirilmiş çözümün çok büyük ve çok geniş olduğunu gösterir. Çözümü bileşenlendirmeye çalışmalı ve daha sonra paket olarak küçük kod parçalarına sahip olmalısınız (tüm platformlardaki tüm ana dillerde şu veya bu şekilde kullanılabilir). Bu nedenle, herhangi bir değişiklik yalnızca bileşenlerin içine girer ve çok daha hızlı tespit edilir. Tam yapı aslında zaten birleştirilmiş bileşenleri bir araya getirecek ve daha hızlı olacaktır. Bu durumda, doğru bileşenlerin çözüldüğünden emin olmak için yalnızca bazı testler gerçekleştirirsiniz.