Hayır, iki nedenden dolayı değil:
hız
Taahhütler hızlı olmalıdır. Örneğin, 500 msn süren bir taahhüt çok yavaştır ve geliştiricilerin daha dikkatli davranmalarını teşvik edecektir. Bir Hello Dünyasından daha büyük herhangi bir projede, onlarca veya yüzlerce test yapacağınız göz önüne alındığında, ön işleme sırasında bunları çalıştırmak çok zaman alacaktır.
Tabii ki, dağıtık bir mimaride dakikalarca veya tek bir makinede haftalarca veya aylarca süren binlerce testle daha büyük projeler için işler kötüye gidiyor.
En kötü yanı, daha hızlı hale getirmek için yapabileceğiniz pek bir şey olmamasıdır. Yüzlerce birim testi olan küçük Python projeleri ortalama bir sunucuda çalıştırmak için en az bir saniye alıyor, ancak çoğu zaman çok daha uzun sürüyor. Bir C # uygulaması için, derleme süresi nedeniyle ortalama dört-beş saniye olacaktır.
Bu noktadan sonra, zamanı azaltacak daha iyi bir sunucu için fazladan 10.000 $ ödeyebilirsiniz, ancak çok fazla değil veya birden fazla sunucu üzerinde testler uygulayabilirsiniz, bu da işleri yavaşlatır.
Her ikisi de, binlerce sınava (ve ayrıca işlevsel, sistem ve entegrasyon sınamalarına) sahip olduğunuzda iyi ödeme yapar ve haftalar yerine dakikalar içinde çalıştırmanıza olanak tanır, ancak bu küçük ölçekli projeler için size yardımcı olmaz.
Bunun yerine, yapabilecekleriniz:
Geliştiricileri, bir taahhütte bulunmadan önce yerel olarak değiştirilen kodlarla ilgili testleri güçlü bir şekilde yürütmeye teşvik edin. Muhtemelen binlerce ünite testi yapamazlar, ancak ondan beşini çalıştırabilirler.
İlgili testleri bulup çalıştırmanın gerçekten kolay (ve hızlı) olduğundan emin olun. Örneğin Visual Studio, son testten bu yana yapılan değişikliklerden hangi testlerin etkilenebileceğini tespit edebiliyor. Diğer IDE'ler / platformlar / diller / çerçeveler benzer işlevlere sahip olabilir.
Taahhüdü mümkün olduğunca hızlı tutun. Stil kurallarını uygulamak tamamdır, çünkü çoğu zaman, bunu yapacak tek yer burasıdır ve bu tür kontroller genellikle inanılmaz derecede hızlıdır. Statik analiz yapmak hızlı kaldığı anda tamamdır, bu nadiren durumdur. Çalışan ünite testleri iyi değil.
Sürekli Entegrasyon sunucunuzda birim testlerini çalıştırın.
Geliştiricilerin yapıyı bozduklarında otomatik olarak bilgilendirildiğinden emin olun (veya birim testleri başarısız olduğunda, bir derleyiciyi kodunuza girebileceğiniz olası hataların bazılarını kontrol eden bir araç olarak görürseniz pratik olarak aynı şeydir).
Örneğin, son yapıları kontrol etmek için bir web sayfasına gitmek bir çözüm değildir. Otomatik olarak bilgilendirilmeleri gerekir . Bir açılır pencerenin gösterilmesi veya SMS gönderilmesi, nasıl bilgilendirilebileceklerinin iki örneğidir.
Geliştiricilerin yapıyı kırmanın (veya başarısızlık regresyon testlerinin) tamam olmadığını ve en kısa zamanda önceliklerinin bunu düzeltmek olduğunu anladığından emin olun. Patronlarının yarın için göndermelerini istedikleri yüksek öncelikli bir özellik üzerinde çalışıp çalışmadıkları önemli değil: yapıyı bozdular, düzeltmeleri gerekiyor.
Güvenlik
Depoyu barındıran sunucu, özellikle güvenlik nedeniyle birim testleri gibi özel kodlar çalıştırmamalıdır. Bu nedenler zaten GitLab'ın aynı sunucusunda CI koşucusunda açıklandı mı?
Öte yandan, fikriniz, derleme sunucusundaki ön işleme kancasından bir işlem başlatmaksa, o zaman işleri daha da yavaşlatır.