Ortada Yazı Birimi Testleri


14

Birim testi% 100 mü yoksa hiç anlaşılmadı mı?

Eski projelerime göz atıyordum ve bu sefer birim testi ile özellikler eklemeye başladım. Ancak, birim testleri olmayan geçmiş bileşenleri tekrar kullanacaksam bu sonuçta değersiz mi?

Önceki tüm sınıflar için birim testleri yazmam gerekiyor ve hiç rahatsız etmiyor muyum yoksa yalnızca eklediğim yeni şeyler için birim testleri yazmam doğru mu?

Yanıtlar:


14

Herhangi bir birim testi hiç yoktan iyidir. Yani bu bir ya hep ya hiç anlaşma değil.

Sizin durumunuzda, Test Odaklı Geliştirme bir norm olmadığından, testlerin nasıl bir işe yaradığını merak edeceksiniz.

Gelecekte yazacağınız herhangi bir kodun (geçerli) işlevselliği bozmadığından emin olmak istersiniz - ve bu, alt durumlarınızın işe yaradığı yerdir. İyi yazılmış testler geçerse, büyük olasılıkla hiçbir şeye zarar vermediniz. Gelen bir sonraki geliştirici testler ve belgeler için size teşekkür edecektir.

Başlayabileceğiniz şey, iyi bölünmüş katmanlı bir mimariye sahipseniz, veri erişim katmanlarını alın ve testlerle yukarı doğru (UI katmanına doğru) çalışın. Projenin bir etki alanı modeli varsa, mantığın çoğuna sahip olması muhtemel olarak TDD için en olası adaydır. Hizmet (veya iş mantığı) katmanı yalnızca Alan Adı / Veri Erişimi katmanına çağrı yapıyorsa, TDD tarzında Hizmet katmanı yapmanın bir anlamı yoktur. Bunlar kabarık testler ve çok değerli değil.

Emma gibi bir kod kapsama aracına eklendi - ve genel test kapsamındaki gelişmeyi sürekli olarak izleyebilirsiniz.


3

Başlangıçta birim testleri olmayan çok büyük bir kod tabanı üzerinde çalıştım. Birkaç uygulamayı takip ederek (birkaç yıl sonra), kod tabanının çoğunu testler kapsamında tutuyoruz.

Tüm yeni kodlar birim testlerine sahip olmalıdır.

Değiştirilen tüm kodlar üzerinde birim testleri eklenmelidir.

Testleri eski koda bozmadan güvenli bir şekilde ekleme yöntemimiz öncelikle aşağıdaki temel yaklaşımı kullanmaktır:

İşlevselliğini değiştirmek için küçük bir kod bölümü seçin.

  1. Kodu çevrelemek için sistem düzeyinde entegrasyon testleri oluşturmaya çalışın. Bu seviyede testin kombinatoryal karmaşıklığı nedeniyle, bu testler sadece büyük hataları almak için bir "duman" testi oluşturacaktır.
  2. Değiştirdiğiniz kodu test edebilmek için ihtiyacınız olan arayüzleri tanıtın. Yüksek güvene sahip olduğunuz çok küçük değişikliklerden oluşan dizileri içeren yeniden düzenleme tekniklerini kullanın. Mümkünse araç desteğini kullanmaya çalışın. Bunu, örneğin, değiştirdiğiniz yöntemi kendi nesnesine taşıyarak / çıkararak yapabilirsiniz. Geri dönebilmek için değişikliklerinizi düzenli olarak kontrol edin. Düzeltme denetim geçmişini gözden geçirerek değişiklikleri nasıl yaptığınızı düzenli olarak gözden geçirin.

    Test eklemenizi engelleyen bağımlılıkları ortadan kaldırmak için gereken minimum değişiklikleri yapmaya çalışın.

  3. Testleri, değiştireceğiniz kodun işlevselliğini mümkün olduğunca kapsayacak şekilde yazın. Düzenli olarak check-in yapın ve tüm değişiklikleri gözden geçirin.
  4. Yeni işlev / işlev değişikliği için testler yazın.
  5. İşlevselliği uygulayın (bu normal TDD döngünüzdür)
  6. Testlerin kapsadığı alanları yeniden düzenlediğinizden emin olun (kırmızı-yeşil-refactor).

Bunu ne kadar çok yaparsak, o kadar kolay olduğunu gördük. Kod tabanına her geri döndüğünüzde, biraz daha iyidir.

KG test kullanıcılarımıza ulaşan hataların sayısında büyük bir düşüş gördük. İşlevsel gerilemeler artık neredeyse duyulmamışken, bu yüzden bizim için çabaya değer olduğunu düşünüyorum.


2

(yorum yapma yeteneğinin olmaması için) Bence hiç denememek daha iyidir. Her snippet'in test edilmesi gerekmez, ancak en sonunda programcı tarafından kullanılacak olanın test edilmesi gerekir. Dahili olarak kullandığınız fayda işlevlerini test etmek iyidir, ancak daha sonra temiz bir API aracılığıyla her şeye erişiyorsanız gerekli değildir.


2

Eski şeyler yıllardır iyi çalışıyorsa, eski şeylerde bir şeyi değiştirmediğiniz sürece birim testleri oluşturmak zorunlu değildir. Her neyse, yeni parçalar için yazı birimi testleri hiç anlamsız değil. Yeni parçalar hata içermesi muhtemel parçalardır ve aynı zamanda değiştirilmesi veya yeniden düzenlenmesi en muhtemel parçalardır.


+1 "yeni parçalar hata içermesi muhtemel kısımlardır"
MIA

Bu, projenin karmaşıklığına bağlıdır. "İyi çalışmak" genellikle "son zamanlarda kırılmadı" veya "herhangi birisinin bahsettiği şekilde kırılmadığı" anlamına gelir "... mevcut kod için her zaman birim testleri yazmanız gerektiğini önermek için doğru şekilde veya amaçlandığı gibi çalıştığını.
Dave DuPlantis

1

Mevcut kodunuzu ve başlayacak zamanınız varsa, eski kodun temel işlevlerini kapsamaya başlayabilirsiniz. Ayrıca PM'den bunun için biraz daha zaman isteyebilirsiniz =)


0

Birim testi% 100 mü yoksa hiç anlaşılmadı mı?

Kesinlikle hayır! Eklediğiniz yeni kodu test etmeye başlayın. Bazı eski bileşenlerin testleri olmasa bile, bunu yapmanın çok büyük faydalarını göreceksiniz. Bu bileşenlerden biriyle uğraşmanız veya içinde bir hata bulmanız gerektiğinden, bir test yazın. Zamanla daha eski kodlardan daha fazlasını test edersiniz.

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.