Sabitleme testlerinin öncelikli olduğu bir ortamı nasıl oluşturabilirim?


22

Ben orta ölçekli bir şirkette yazılım mühendisiyim. TeamCity'de çalışan oldukça sağlam bir test platformumuz var. Her kontrolde birim testleri ve günlük birim testi / BVT çalıştırması yapar.

Sorun şu ki - çok fazla kırık birim testimiz var.

Sık sık, sürekli kırılıyorsa ve bakımsızsa, birim testlerinin anlamsızlığını ortaya çıkarırım. Bir değişimin regresyona neden olup olmadığını görememek, birim test platformunun değerinin çoğunu ortadan kaldırır.

İyi alışkanlıklardan oluşan bir kültür yaratacak bir tohum yetiştirmek istiyorum - kırıldıklarında testleri sabitlemek, onları değerli olarak görmek, diğer işlerle birlikte testlerin sabitlemesine öncelik vermek.

Rüşvet denedim (unlu mamuller!), Sadece basitçe sordum ve takım liderleriyle konuşmaya başladım. Herkes bunun iyi bir fikir olduğunu söylüyor, ama bunun hakkında bir şey yapan sadece benim görüyorum.

Başkalarını testlerini düzeltmeye teşvik etme ve sprintlerinde test düzeltmeye öncelik verme konusunda en iyi yol nedir?

Bunu sormanın daha az öznel bir yolu varsa, herhangi bir ipucunu kabul etmekten mutlu olurum.


2
otomatik nerf silah yapıyı kırma adama yönelik ...
cırcır ucube

Aslında otomatik bir silah tabancamız var ... ... fakat yapı bozulmamış, sadece cihaz testleri :)
Codeman

7
Ünite testlerinin kırılması, yapıyı bozmayı gerektirir. ;)
Jeroen Vannevel 14:13

2
@ Ӎσᶎ: Buy-in önemlidir ama insanların aslında olana kadar bir sorunu çözmek için buy-in alamayan farkında sorunun. Bu durumda, katılım ihtiyacı sadece başlangıçta takım liderlerinden ve yöneticilerinden gelir. Geliştirici satın alma işlemi daha sonra gelebilir ve genellikle, geliştirme sistemi kendi geliştiricilerinin kendi hataları için ödeme yapması için kurulduğunda, doğal olarak gerçekleşir.
Aaron,

2
Eğer donutlar başarısız olursa kızarırsınız. :-)
Ross Patterson

Yanıtlar:


28

Testleri yapmadan herhangi bir şeyi serbest bırakmanın imkansız olmasını sağlayın.

  1. Herhangi bir test başarısız olursa derlemede başarısız olun.
  2. Herhangi bir test göz ardı edilirse derleme başarısız.
  3. Test kapsamı belirli bir seviyenin altına inerse derleme başarısız (insanlar sadece üzerinde çalışmak için testleri silemezler).
  4. Sürüm oluşturma işlemlerinizi yapmak için CI sunucusunu kullanın ve yalnızca sunucunun oluşturma damlasındaki yapıların UAT / evreleme / üretim / herhangi bir şekilde tanıtılmasına izin verin.

Meselenin gerçek şu ki, yapınız bir seferde yaklaşık 15 dakikadan daha fazla bir süre boyunca kırılırsa (ve bu başarısız testler dahil), o zaman sürekli entegrasyon yapmıyorsunuzdur .

"Nükleer seçenek", kaynak kontrol sunucunuzun reddetmesini, yapıyı bozan kullanıcı dışındaki herhangi bir kullanıcıdan taahhüt / checkin yapmaktır. Açıkçası bir yöneticinin eğer söylenen kişi tatile giderse geçici olarak bunu geçersiz kılabilir olması gerekir - ama eğer herkes testlerini düzeltinceye kadar tüm takımın berbat olduğunu bilirse, çabucak çözeceklerdir.

İyi bir politika (otomatikleştirildiğinde daha da iyi olan), yapıyı 15 dakika geçtikten sonra kaynağı bilinen en son kararlı işleme geri döndürmektir. Başka bir deyişle, düzeltemezseniz veya yapı veya testin bozulmasına neyin neden olduğunu bilmiyorsanız, o zaman geri dönün ve çözümlenene kadar yerel olarak çalışın ; sorun umursamıyorlar.

PS Zaten başarısız bir çok testiniz varsa, CI'da bir "takip eşiği" kullanabilirsiniz. Derleme, yalnızca son zamandan daha fazla test hatası olması durumunda başarısız olacak şekilde ayarlayın. Bu, kapsam kuralıyla birlikte, geliştiricilerin çalışmaya devam edebilmek istiyorlarsa sonunda test durumunu iyileştirmeye zorlayacaktır.

PPS Bunun bir kısmına sarsıcı gelebileceğinin farkındayım, ama hepsi senin kültüründe. Eğer insanlar sadece bir noktaya gelirse yok başarısız kırık yapı veya testleri bırakın (Bazen onları hatırlatmak zorunda rağmen ekibim neredeyse hiç yok), o zaman kural sıkı kümesiyle devam etmek gerekmez. Her ne kadar IMO her zaman kırık bir ünite testinde başarısız olmalısın. Entegrasyon / tarayıcı testleri bazen başarısız olabilir.


1
Tüm teknik ipuçlarınız faydalı olsa da, cevabınızın en değerli kısmı, “Bu tamamen sizin kültürünüz”, çünkü disiplinli bir problemden ziyade, testin algılanan faydası sorunudur. Ben bir PPS yerine öne koymak istiyorum
user40989 14:13 de

@ user40989: Seni duyuyorum. Kültür, yine de geliştirmeniz gereken bir şey. İnsanların ne kadar önemli testler anlamak istiyorsanız, bazen insanların öyle yapmak zorunda olamaz onları görmezden. İnsanlar yüksek seviyede kod kapsamına ve yeşil testlere alışınca, geri dönmek istemeyecekler ve daha sonra kendi geliştiricileriniz yeni işe alımlar için zorlayacaktır. Peki, umarım. Anal olarak görev yapan bir ekip, usta ve / veya yöneticinin liderliğini ve / veya kurulmasını sağlar. :)
Aaronaught

FWIW: Tüm sürüm sürecimiz şimdi otomatikleştirildi ve insanlar kırık testler yapmayı düşünmedi . Ekip lideri usta birleştirme yapar, daha sonra bir sürüm oluşturma başlatır ve tam anlamıyla bir yapı eserlerinden dağıtmak ve otomatik tarayıcı ve API testlerini çalıştırmak için bir düğmeye basan sistem yöneticilerine bir promosyon isteği gönderir. Hiç kimse bu süreçten şikayet etmiyor, çünkü zaman kazandırıyor - 2 hafta boyunca serbest bırakılması için uğraşıyorduk, şimdi temelde bir el dalgası. Kültürü geliştirerek demek istediğim bu - herkes bir testi düzeltmek için fazladan 2 dakika 2 saat sonra tasarruf edeceğini biliyor.
Aaron

10

Birimler başarısız olan testler sorun değil. Onlar bir semptomdur .

Asıl sorun kültürde. Nazikçe yürümeniz gerekir: işte ejderhalar . Kültürü kendiniz değiştiremezsiniz ve gıcırtılı çark olmak, sonunda sizi dışa vurur. Harfi harfine.

Nedeni savunmak ve önderlik etmek için kıdemli bir kişi bulmaya çalışırsanız öneririm. Bu başarısız olursa, genel bir geliştirici toplantısında, parmakları işaret etmeden veya adları çağırmadan yükseltmeyi deneyin. Başka bir alternatif de, uygun bir iş yapma konusunda kendinizin sorumluluğunu üstlenmektir: her check-in yaptığınızda yalnızca birkaç test daha düzeltin. Duvarda, zaman içerisinde kaç testin başarısız olduğunu gösteren bir çizelge tutun. Diğerleri görecek: belki de seçecekler.

Kolay bir cevap yok.


Gıcırtılı tekerlek olmak beni takım lideri yaptı. Belki gıcırtılığınla ilgili bir sorun vardı? Yine de tüm ciddiyetle, bu , dev ekibiyle değil, şirketin yönetimiyle çok farklı bir kültür sorununa işaret ediyor. Eğer yönetimin yanan bir yangına tepkisi güneş gözlüklerini takmaksa, defol git buradan. Aslında bir dev iseniz Ama dükkan kurumsal BT departmanı maliyet merkezi yazılım dışarı çalkalama aksine, oldukça muhtemel yöneticileri güvenle size pazara serbest bırakabilirsiniz hangi sıklıkta ve benzeri şeyler önemsediğimi bu.
Aaron
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.