Geçiş yapma deneyimim
Uzun yıllar boyunca, kodum için birim testleri yazmak için yeterli zamanım olmadığı için yanlış anlama altındaydım. Testler yazarken şişkin, ağır şeyler vardı, bu da beni sadece ihtiyaç duyduklarını bildiğimde birim testleri yazmam gerektiğini düşünmeye teşvik etti .
Son zamanlarda Test Odaklı Geliştirme'yi kullanmaya teşvik edildim ve bunun tam bir vahiy olduğunu gördüm. Şimdi, birim testleri yazmak için zamanım olmadığına kesin olarak inanıyorum .
Deneyimlerime göre, testler göz önünde bulundurularak geliştirerek daha temiz arayüzler, daha odaklanmış sınıflar ve modüller ve genellikle daha fazla SOLID , test edilebilir kod elde edersiniz .
Birim testleri olmayan ve bir şeyi manuel olarak test etmek zorunda kalan eski kodlarla çalıştığımda, "bu kod zaten birim testleri varsa bu çok daha hızlı olurdu" diye düşünmeye devam ediyorum. Her ne zaman yüksek kuplaj ile kodlamak için birim test işlevselliği eklemek zorunda kalsam, "bu bir de-coupled bir şekilde yazılmış olsaydı çok daha kolay olurdu" diye düşünmeye devam ediyorum.
Desteklediğim iki deney istasyonunun karşılaştırılması ve karşılaştırılması. Biri bir süredir varlığını sürdürüyor ve büyük miktarda eski kod içeriyor, diğeri nispeten yeni.
Eski laboratuvara işlevsellik eklerken, genellikle laboratuvara inmek ve ihtiyaç duydukları işlevselliklerin sonuçları ve bu işlevselliği diğer işlevleri etkilemeden nasıl ekleyebileceğim ile çalışmak için saatler geçirmektir. Kod, çevrimdışı testlere izin verecek şekilde ayarlanmamıştır, bu yüzden hemen hemen her şeyin çevrimiçi olarak geliştirilmesi gerekir. Çevrimdışı geliştirmeye çalışsaydım, makul olmayacak kadar sahte nesnelerle sonuçlanırdım .
Daha yeni laboratuvarda, genellikle masamda çevrimdışı olarak geliştirerek, yalnızca hemen gerekli olan şeyleri alay ederek ve daha sonra laboratuarda sadece kısa bir süre geçirerek, alınmayan kalan sorunları ütülerek işlevsellik ekleyebilirim. -hat.
Benim tavsiyem
İyi başladınız, geliştirme iş akışınızda büyük değişiklikler yapacağınız zaman, herkesin bu kararı vermekle meşgul olduğundan ve ideal olarak çoğu insanın satın aldığından emin olmalısınız . Sorunuzdan, bu hakkın var gibi görünüyor. Eğer insanlar bu fikre hevesli değilse, ya başarısızlığa ya da kötü niyet yaratmaya mahkumdur.
Eğer zorlayıcı bir iş örneği sunabilirim sürece, olur değil senin bütün sistem için birim testler ve şartnamelerin bir zemin yukarı uygulanmasını öneriyoruz. Yukarıda bahsettiğim gibi, eğer bir sistem test düşünülerek tasarlanmamışsa , bunun için otomatik testler yazmak çok zor olabilir.
Bunun yerine küçük başlamayı ve İzci Kuralını kullanmanızı tavsiye ederim :
Kamp alanını her zaman bulduğunuzdan daha temiz bırakın.
Bu kod tabanında bir şey uygularken, mevcut davranışı test etmek ve eski davranıştan yeniye geçişi test etmek için gereken belirli testleri belirleyebilirseniz, hem spesifikasyondaki değişikliği belgelediniz hem de Sisteminiz.
Dokunmadığınız modüller birim testleri almaz, ancak bunlara dokunmuyorsanız, muhtemelen kullanımda kapsamlı bir şekilde test edildikleri ve herhangi bir değişikliğe ihtiyaç duymadıkları veya asla kullanılmadıkları içindir.
Bundan kaçınmak istediğiniz şey, asla ihtiyaç duyulmayacak geliştirici çabası testleri yazmaktır ( YAGNI aynı zamanda üretim kodu * 8 'için olduğu gibi test kodu için de çalışır), bir daha asla kullanılmayacak ve insanları demoralize etmeyecektir. sonuçta testlerin işe yaramaz olduğunu düşünerek.
özet
Küçük başlayın, testlere aşamalı olarak güvenin ve ekibinize en çok ne zaman ve nerede yarar sağladıklarını test ederek iş değeri kazanın.