Önce ne gelmeli: test mi yoksa kod incelemesi mi?


25

Tasarım kalıplarını ve yaşam döngülerini programlamak konusunda oldukça yeniyim ve merak ediyorum, önce ne gelmeli, kod incelemesi ya da test etmeli, bunlar ayrı insanlar tarafından yapıldı mı?

Bir taraftan, hiç kimse çalışıp çalışmadığını kontrol etmiyorsa neden kod incelemeyi zahmete sokuyor? Testten önce incelemeyi yaparsanız diğerinden bazı hatalar erken bulunabilir.

Hangi yaklaşım önerilmektedir ve neden?


1
Sorunun bu adımların sırası ile ilgili olduğunu, hiçbir şekilde gerçekleştirilmeleri gerekip gerekmediğini not edin
Richlv

8
TDD'yi nerede kullanıyorsanız, sorunuz bile bir anlam ifade etmedi.
Edward Strange

Yanıtlar:


40

Önce geliştirici birimi sınaması, ardından kod incelemesi, ardından QA sınaması nasıl yaptığımdır. Bazen kod incelemesi ünite testinden önce gerçekleşir, ancak genellikle yalnızca kod gözden geçiricisi gerçekten kullanıldığında ve bunu yapabildiği tek zaman bu olur.


1
Yaklaşmak için iyi bir yol. Sadece testin kendisinin kod incelemesini yapmanın değerli olduğunu da eklemek istiyorum (özellikle kapsam boşluklarını tespit etmek için).
Kevin Hsu

@KevinHsu, mükemmel nokta
HLGEM

15

Standart Q, ürün QA'ya gitmeden önce kod incelemesini yapmaktır. Bunun nedeni, ürün test edildikten ve doğrulandıktan sonra, yeniden kodlama yapmak ve dahili kodları değiştirmek için daha az teşvik edici olmasıdır. Daha sonra hepsinin tekrar test edilmesi gerekecekti. Ayrıca çoğu durumda birim testi yaptığımızı unutmayın.


8

İdeal olarak, Çevik bir dünyada, her ikisi de :)

Test odaklı geliştirme, gerçek kodun yazılmasından önce birim testlerin geliştirilmesini teşvik eden bir yöntemdir - bu şekilde, spesifikasyonları kodda yakalayabilir ve testleri geçen testleri yazabilirsiniz. Bundan sonra, tüm farklı bileşenlerin bir araya gelmesini sağlayan otomatik entegrasyon testleri, uygulamanızın işlevselliğinin beklenenden daha iyi olmasını sağlamak için İyi Bir Şeydir.

Kod incelemeleri gelince, çift programlama, kodunuzu yazarken yazdığınızdan başka bir akla sahip olmanın yararlı bir yoludur. Ancak, bu mutlaka pratik bir yaklaşım değildir. Mevcut şirketimde çalışma şekli, kodun geliştiricinin kişisel makinesinde test edildikten sonra, ancak ortak bir geliştirme sunucusuna dağıtılmadan önce gözden geçirilmesidir.


6

Kod incelemesi, kodun istenen kalite seviyesine sahip olduğundan ve şirketin tanımladığı kod kurallarına uyduğundan emin olmak için zaten çalışan şeyleri "parlatmak" için yapılır.

Kod incelemesi, eski kodu yeniden yapılandırdığınız ve geliştirdiğiniz gelecekteki genel optimizasyon etkinliğinin bir parçası olarak da olabilir.

Bir check-in yapmadan önce kod incelemesi yapıyorsanız, kod incelemesi iki test aşaması arasında gerçekleşir: önce bir geliştirici olarak kodunuzu test edersiniz, meslektaşınız kod incelemesi yapar, kontrol edersiniz, daha sonra özel test uzmanları daha ayrıntılı bir şekilde çalışacaktır. entegrasyon testleri.


4

Önce test et. Son testi yap. Test et, test et, test et.

Kod incelemesi olması güzel. Ancak zor - kişilikleri içeren veya farklı görüşler varsa, acı verici bir süreç olabilir.

Testler çok açık: ya çalışıyor ya da çalışmıyor. Öyleyse test et, test et, test et! Ve mümkünse kod incelemesi.


Ve ne zaman uyuyacaksın?

4
Kod incelemeleri, testlerin yapamadığı şeyleri yakalayabilir ve önemli ölçüde daha az zaman içerebilir. En azından, başka bir dev ile bir ilişki kurmak ve birbirlerinin çalışmalarını gözden geçirmek iyidir. Artı, iyiliğin karşılığını verirken kodlarından çok şey öğreniyorsun!
Ethel Evans

1
Katılmıyorum ... Kod yorumları sadece ince hataları bulmak için ama stil hatalarını keşfetmek için, önemlidir ve bir deneyimli programcı bakarak algılayabilir ancak performans böcek bulmak için çok fazla zaman test alacak
Amit Wadhwa

Bir şey kod incelemesi sıklıkla, birim testlerinin asla yakalayamayacağını yakalar, dev, gereksinimleri yanlış yorumladığında ortaya çıkar. Ayrıca, kodu olmayan işlenmeyen istisnalar veya karar yolları gibi şeyler (eğer bir onay onaylanmadığında ne olduğu için kodu yazmayı unuttuysa, o zaman muhtemelen bir sınavı da olmaz!)
HLGEM

2

Son işimde, ürün yaşam döngüsünün farklı aşamalarında yapacağımız üç farklı kod incelemesi vardı. İlk Sanity İnceleme adını verdik ve bir geliştirici bile ünite testi yapmadan önce oldu - aslında Sanity İncelemeleri özellikler tamamlanmadan bile yapıldı. Buradaki fikir, bir çift ekip üyesinin, gelişim sürecinin iyi gittiğinden ve dev bir sonuçta kalmayacağımızdan emin olmak için, geliştirme sürecinde olduğu gibi birkaç rastgele kod bölümünden geçip oturmasıydı. Bu özellik birleştirilmeye hazır olduktan sonra TDWTF girişi. Bu, daha çok ek rehberliğe ihtiyaç duyan insanlar için yapıldı (genç geliştiriciler, yeni işe alımlar ve diğer ekip üyelerinden daha az aşina oldukları bir şey üzerinde çalışmak üzere görevlendirilen kişiler için) ve genellikle sadece korkunç sorunları gideren kısa bir toplantıya devam etti.

Sonra birim değerlendirmeleri vardı. Bunlar genellikle üç geliştiriciyle yapıldı ve bir ünite / özellik test edildiğinde ve ana ağaca birleştirilmeye hazır olduğunda yapılacaktı. Bu en etken inceleme yapıldı ve biraz ayrıntıya girmek istiyorum. Bunun için üç geliştiricimiz vardı, çünkü kodun asıl yazarı, birleştirilmeden önce kodu imzalayan ağaç koruyucusu ve asıl geliştiricinin yedeğini almak üzere seçilen üçüncü bir geliştirici vardı. (Bir kod bölümünün tamamlanmasının ardından fikir, bir başka ekip üyesine tam bir bilgi aktarımı yapılmalıdır, bu nedenle ekipte her zaman kod tabanının herhangi bir yerinde tamamen rahat olan en az 2 kişi vardı).

Son olarak, proje incelemeleri yaptık. Bu, tüm ekibi kapsıyordu ve yaklaşık bir hafta sürecek ve QA ve ürün lansmanından sonra yapıldı ve amaç, herkesin katılabileceği, son sürüm döngüsünde tüm kod tabanında yapılan tüm değişiklikleri gözden geçirmesiydi. mimari değişimler hakkında konuşalım, projenin bir sonraki versiyonunda gelişmeye başlamadan önce neyin yenilenmesi ve düzeltilmesi gerektiğine karar verin.


2

İlk önce, geliştirilecek kod için otomatik testler yazın. Bilinen tüm gereksinimlerin test edildiğinden emin olmak için testleri gözden geçirin. Kodu yaz. İstediğiniz sıklıkta gözden geçirin.

Herhangi bir manuel test gerekliyse, herhangi bir manuel test yapılmadan önce kodu incelemek çok önemlidir . Aksi takdirde, kod incelemesinde önerilen tasarım geliştirmeleri reddedilir, çünkü manuel testlerin tekrarlanması gerekir.


Peki ya inceleme? Ayrıca, kod değiştirildikten sonra, testten sonra (hata bulunursa) yeniden yapılması gerekir.
Silver Light

2

Hangisi, yumurta mı yoksa tavuk mu?
Değişir.

Yeni iseniz ve ne yaptığınızdan emin değilseniz, o zaman elbette size bir yardım isteyin. Bu resmi olmayan ama çok ciddi ve değerli bir kod incelemesidir.

Genel olarak, önce kendi kirli işinizi yapmanızı önerdiğim halde, kodu çözdüğünüzden emin olun, doğru yerlerde doğru şekilde yorumda bulunun (yani zor bitler, açık olanları değil), en azından temelde çalışır ( en düşük genel durumlarda ve bazı sınır durumlarda veya istisnalarda test edilmiştir). O zaman arkadaşına götür.

Kodunuzu çok erken bir kez gözden geçirmeniz, arkadaşlarınızın zamanını boşa harcamaya neden olabilir. Çok geç gözden geçirilmesi, zamanınızın korkunç bir israfına neden olabilir. En yüksek verimlilik için doğru dengeyi bulmanız gerekir. Bu yüzden bazı testler önce incelemeden sonra incelemeye, sonra daha fazla teste tabi tutuluyor. Potansiyel olarak, karmaşıklığa ve yinelemelere bağlı olarak, farklı amaç ve odaklamalar içeren birkaç kod incelemeniz olabilir.

Ne kadar az değerlendirme yaparsanız o kadar emin olun (erken öğrenme aşamasındaysanız, bu normaldir). Ne kadar çok inceleme yaparsanız o kadar emin olun (kendinizden emin olmak asla iyi değildir, bu da genellikle bir takım oyuncusu kadar iyi olmadığınız anlamına gelir ve başınızın başını belaya sokabilir, kodunuzun anlaşıldığından emin olmanız gerekir) ve başkaları tarafından kullanılır). Ortadayken, incelemelerin bazılarının dışında bırakılabiliyor olmasıdır.

Sadece iki sentim.


2

Yazılım geliştirme süreçlerinin sonuç verimi ve kalitesini diğerlerinden daha fazla inceleyen ve ölçen Capers-Jones, aşağıdaki hata giderme aktivitelerinin sırasını önerir :

  • Tasarım denetimleri
  • Kod incelemeleri
  • Birim testleri
  • Yeni fonksiyon testleri
  • Regresyon testleri
  • Performans testleri
  • Sistem testleri
  • Harici beta testleri

Testten önce kod incelemesinin yapılmasının sebeplerinden biri, incelemenin sadece kodun kendisini değil, kodun test edilebilirliğini de göz önünde bulundurmasıdır.

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.