Kod silme işleminin bir hatayı düzelttiğini kanıtlamak için bir test yazmalı mıyım?


14

Bazen bir hatayı düzeltmenin kodun bir bölümünü silmeyi gerektirdiği duruma gireceğim . TDD puristi, başarısız bir test yazmayı, kodu silmeyi ve daha sonra test geçişini izlemeyi savunur.

Şimdi, bazı kodların kaldırıldığını iddia eden bir test yapmak gerçekten garip görünüyor. Tabii ki, hiç kimse kaynak kontrolüne kazılmış ve bu kodu geri koymak sağlamak istiyorum, ama buna değer mi? Buna değerse, eklenen kod için bir test yazmaktan kesinlikle daha az değerli görünüyor , değil mi?


8
Hatanın nasıl giderildiğine bakılmaksızın herhangi bir regresyon testinin yararlı olduğunu düşünüyorum
Ismail Badawi

1
Test, kodun kaldırıldığını iddia etmez - test, hatanın düzeltildiğini iddia eder ...
user253751

Yanıtlar:


50

Yanlış yöne bakıyorsunuz. Test gelmez değil bu kod çıkarıldı düşünmektedirler. Test belirli bir işlevsellik olduğunu iddia eder.

Test, geçmesi için gereken kod miktarını umursamaz ve bazı kodları kaldırdığınızı fark etmez. Böyle bir teste sahip olmanın değeri, bir hata nedeniyle oluşturduğunuz diğer testlerle aynıdır: test geçtiğinde ve testin derleme sürecine entegrasyonu sırasında hatanın yokluğuna güvenirsiniz. büyük olasılıkla tekrar kullanılmayacaktır.

Oysa bir TDD perspektifinden bakmak için başka bir yol şudur: Eğer kod düzeltmeleri böcek ve silme biliyorsanız sonra bir test yazmak isteyip merak, zaten TDD yanlış yaptı. Böcek üzerinde çalışmaya başladığınızda, ilk önce hatanın varlığını garanti eden testi yazarak başarısız olmalısınız . Ancak daha sonra, kodun kaldırılmasını isteyip istemediğiniz gerçek hatayı düzeltir ve test geçişini yaparsınız. Sorduğunuz soru bu şekilde ortaya çıkmıyor bile.


3
+1, ancak aşağıdaki durumu hayal edebiliyorum: kaldırılan kod, sorunlu etki alanını doğru anlamayan birinin eklediği bazı saçma işlevsellik içeriyordu. Şimdi, bir kod incelemesi sırasında, başka bir geliştirici tüm parçanın gerçekten saçma olduğunu ve kodun kaldırılacağını görür. Böyle saçma davranışlar için çok fazla test yaptırmak test takımınızı şişirebilir.
Doc Brown

2
Çıkarılan işlevsellik bazı giriş / çıkışları yanlış işledi. Açıkçası bir başkası problemi aynı şekilde yanlış anlayabilir. Test süiti şişkinliğinden korkuyorsanız, TDD'nin sizin için olduğunu sanmıyorum. Zaten test giysisi şişmesi nedir?
Dorus

3
@DocBrown: TDD yapıyorlarsa, o saçma işlevselliği gerektiren bazı testler olmalı , aksi takdirde ilk etapta bu kodu yazmalarına izin verilmezdi! Unutmayın, testi geçmek için yalnızca minimum miktarda kod yazmanıza izin verilir. Böyle bir test yoksa , kod ilk etapta asla yazılmamış olmalı ve sadece silinebilir. Orada ise olan bir test kuvvetleri saçma davranış, o zaman bu test kaldırılması gerektiğini o, şimdi de daha önce açıklanan aynı dava altındadır: Test gitti, kodu silin.
Jörg W Mittag

Her iki durumda da, test takımına hiçbir zaman test eklemezsiniz ve ikinci durumda bir tane bile silebilirsiniz . Bununla birlikte, testin gerçekten mantıklı olduğu ortaya çıkarsa, o zaman işlevsellik o kadar da saçma değildi.
Jörg W Mittag
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.