Bir test antik kültüründe teste nasıl başlayabilirim? [kapalı]


20

Bir itirafta bulunacağım: Resmi otomatik test hiçbir zaman programlama geçmişimin bir parçası değildi. Şu anda birçok geliştiriciyle (çoğu bir tür web geliştiricisi) çok büyük bir şirkette çalışıyorum ve çoğunun da test etmediği açıktır *. (* Resmi olarak söylemeye devam etmeyeceğim ; lütfen çıkarımda bulunun.)

Teste başlamak için kuruluşumun desteğini almayı beklersem, bu asla olmayacak. Yönetimde testi zorlayarak "içeriden bir şeyler değiştirmeye" çalışırsam, değişiklik gerçekleşmeden önce buharım tükenir. Şimdi teste başlamam gerekiyor.

Ama TDD ve ilkiyle birlikte üretim kodu ile birlikte birçok test kodu ile sonuçlanacağım. Sürüm kontrol sistemlerimiz (tümü merkezileştirilmiş) test kodunu saklamak için organize edilmemiştir. İş istasyonumdaki her şeye bir yer bulmam gerekecek.

Değer vermeyen veya araçları sağlamayan bir kültürde kişisel yazılım testi uygulamasına başlamak mümkün müdür? Resmi araç ve kuruluşların testler, çerçeveler ve otomasyonlar için yeri olmadığında test etmenizi sağlamak için hangi teknikleri ve araçları kullanıyorsunuz?


14
Test kodunu neden şirketinizin VCS'sinde saklayamıyorsunuz? srcÜretim kodu için bir dizini olan bir projede, bir dizin de eklemek mümkün olacağını hayal ediyorum test- ya da herhangi bir nedenle açıkça yasak mı?
Péter Török


@ PéterTörök Bizi fazla abarttınız. Bir srcdizinimiz yok, web köklerimiz var. Kodumu merkezi VCS'ye kontrol etmek için web köküne kontrol ediyorum.
kojiro

Yetiştirme kültürünüzde kaynak kontrolünüz yoksa, bunu ilk önce (ya da aynı zamanda) yapmaya çalışacağım, çünkü ekibinizin yaşadığından emin olduğum diğer birçok sorunu çözecektir. Daha sonra test için yapmak istediğiniz şeyin temelini atar.
Scott Wylie

@ScottWylie Bunu tam olarak söylemedim. VCS'miz var, sadece test için organize olmadık (veya webroot şeyler için düz düzenlemelerin ötesinde herhangi bir şey). Sanırım 1998'de birinin yeğeni CVS kurdu ve o zamandan beri kimse değiştirmedi.
kojiro

Yanıtlar:


22

Ben şahsen bunu büyük bir başarı ile yaptım. Başarı için anahtar faktörler:

  • (Geçici) yönetim desteği alın. Otomat testlerinin avantajları iyi belgelenmiştir ve herhangi bir menajeri en azından denemeye ikna etmelidir. Bu, VCS ve bir yapı sunucusunda bir nokta bulmayı içerir, çünkü
  • Otomatik testler, yalnızca sık sık ve otomatik olarak çalıştırıldıklarında tam değerlerini sağlar, böylece sorunları yakında öğrenirsiniz ve bunları çalıştırmayı unutmayan insanlara güvenmek zorunda kalmazsınız. Bunları en az günlük çalıştıran bir yapı sunucusuna ihtiyacınız var. Bu eski bir iş istasyonu olabilir. Jenkins koşmak için çok az iş gerektirir.
  • Örnek olun. Testler yazın, size sağladığı yararlar hakkında konuşun ve diğer geliştiricilerin getirdiği hataları ortaya çıkardıklarında, potansiyel olarak çok daha büyük utanmadan nasıl korundukları hakkında konuşun.
  • Düşük asılı meyveyi tercih edin. Uygulamanın bazı bölümlerini test etmek zor, diğerleri ise kolay olacaktır. Bazıları sağlam, bazıları kırılgan olacaktır. Kırılgan ancak test edilmesi kolay parçalar için yazma testleri en kısa sürede en yüksek değeri sağlar.
  • Yeniden kullanılabilir testler yazıp yazamayacağınıza bakın, örneğin tüm modüllerin (web sayfaları, REST hizmetleri, her ne olursa olsun) sahip olması gereken, ancak genellikle unutulan test kuralları veya özellikleri.

7

Yönetim desteği olmadan suda ölürsünüz. Yönetim, değerli işler yapmadığınızı iddia edecek, incelemelerinizde cezalandırılacaksınız ve sonunda kovulacaksınız. Yönetimi erken test etmenin daha az maliyete mal olduğunu görmenin yolları vardır. Kültürü değiştirmek mümkündür ama boynunuzu doğrama bloğuna koyuyorsunuz.

Machiavelli Prens bölümünü, herhangi bir şey yapmadan önce değişimi nasıl tanıtacağınızı okumanızı öneririm .


Sizinki, testin aksi takdirde harcanmayacak zamana mal olacağını öne süren ikinci cevaptır. Ama evangelistleri test etmek (bana öyle geliyor), testin zaman kazandırdığını söyleyecektir. Sadece uzun vadede değil, aynı zamanda orta uzunlukta bir projeye kadar bile, çünkü üretim kodunuzu hata ayıklamak için çok fazla zaman harcamazsınız ve testler, kodu onları geçecek şekilde uyarlamaya zorlar ( teorinin anlaşılması) hepsi kodlama için harcanan toplam zamanı azaltmaya yarar. Bunun böyle olmadığını mı buldun?
kojiro

1
@kojiro: Evet, genel testler zaman ve maliyetleri azaltacaktır. Ancak, kısa vadede bunu yapmayacaktır. Bazı yöneticiler kısa vadeyi daha önemli bulmaktadır. Sonuçta, şirkete ödeme yapılmazsa ve hata düzeltmeleri için müşteriyi ücretlendirirse iyi bir yazılım nedir?
Sardathrion - Monica'yı

2
Test etmek zaman kazandırır, ancak kodun yarısını test edilebilir olmak için yeniden yapmanız gerektiğinde, ilk önce tüm bu işleri sadece aylarca yolda yapmak, test yapabilmek ve daha sonra hızlandırmak için zaman kaybedersiniz. Yöneticiler "bu ay" da düşündükleri "aylarca yolda" düşünmüyorlar, bu yüzden gördükleri tek şey "zaman kaybı" çünkü bu geliştirici yapabileceğimiz testlerle oynadıkları yeni kodlar oluşturmuyor ' t satmak ya da, daha büyük olasılıkla, "zaten çalışır" yeniden düzenleme kodu
Wayne Molina

Genellikle kısa vadede bile zaman kazanır. Bir şey üzerinde çalışırken, bir test yoluyla bir kod parçasını kullanabilmek, daha sonra tüm uygulamayı çalıştırmak ve belirli bir kod parçasını yürütmek için koaksiyel hale getirmek zorunda kalmak çok daha hızlıdır.
Stefan Billiet

3

Benim deneyimime göre, kültür anti-test ise, bunu makul bir şekilde tanıtamazsınız. Testler zaman kaybı olarak görülecektir ve "zaman kaybetmek" ya da "çok uzun sürmek" için kınanacaksınız ya da kod yıllarca test edilebilir bir şekilde yazılmama (yani arayüz yok, her şey) testleri ilk etapta yazabilmeniz için yeniden test etmek ve / veya yeniden yazmak için çok fazla zaman harcamanız gerekir (böylece "çok uzun süre" ve "zaman kaybetme" riski taşır). .

Yalnızca mevcut şeylerle etkileşime girmesi gereken (kötü alanların etrafında güzel bir paketleyici oluşturun) yeşil alan işleri yapıyorsanız veya sorunlara neden olmayacağı veya yapmanızı gerektirmeyen küçük miktarlarda yapabiliyorsanız bir şansınız olabilir. "size atanmamış görevler üzerinde çalışmak" hangi köpek kulübesine koyabilirsiniz.


1

Otomatik testin ele alabileceği bir sorun (şu anda tanınmayan) yeterince iyi bir durum ortaya çıkana kadar çok ileri gideceğinizi sanmıyorum.

Tanımlanmış komut dosyalarına karşı el ile test kültürü varsa, bu komut dosyalarının yürütülmesinin, eksik veya yanlış sonuç alma riski ile birlikte maliyeti vardır. Bunun bir tarihi (belgelenmiş veya "savaş hikayesi" formunda) olabilir. Uzun vadeli maliyet tasarrufu sağlamak amacıyla bu manuel testlerden bazılarını otomatikleştirmek için bir pilot proje önerin.

Manuel bir test fonksiyonu bile yoksa, o zaman işin otomatik veya başka türlü herhangi bir resmi testin değere sahip olduğunu algılamadığını öneririm. Bu durumda, önündeki yolun uzun ve dik bir yokuş yukarı olduğunu düşünürdüm, ancak yine de işletmenin yazılım kalitesine daha az rahat bir yaklaşım benimsemekten fayda sağlayabileceğine dair açık bir gösterime ihtiyaç duyuyorum. Bunu yapamıyorsanız, o zaman ticari gerekçelerle bu fikre nasıl destek olabileceğini görmek zor.


0

Bir fikir, başka birinin yazdığı kodun hatalı olduğunu kanıtlayan bir test yazmayı hedeflemenizdir. Kavramı satmalı.

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.