Kendi kodunuzu test etme nasıl geliştirilir [kapalı]


12

Bugün oldukça aptalca ama çok önemli bir şey nedeniyle hiç çalışmadığı ortaya çıkan bazı kodlarda bir değişiklik kontrol ettim. Bu konuda gerçekten kötü hissediyorum ve umarım sonunda ondan bir şeyler öğrenirim. Aptalca şey, daha önce bunları yaptım ve her zaman kendime söylüyorum, bir dahaki sefere bu kadar aptal olmayacağım ... Sonra tekrar olur ve daha da kötü hissediyorum.

Çeneni tutup hatalarından öğrenmen gerektiğini biliyorum ama işte: Kendimi geliştirmeye çalışıyorum, sadece bu şeylerin olmasını nasıl önleyebileceğimi göremiyorum.

Şimdi size soruyorum çocuklar: Kodunuzu test ederken belirli temel kurallarınız var mı?


Yanıtlar:


17

Kod değişiklikleri yapmadan önce testler yazın.

Önerilen değişiklik bir hatayı düzeltmekse, ilk önce hatayı göstererek testin başarısız olmasını sağlayın. Sonra hatayı düzelttikten sonra geçtiğinden emin olun. Testi daha sonra yazarsanız ve sadece geçtiğini görürseniz, ilk önce hatayı düzgün bir şekilde test ettiğinden emin olamazsınız.

Önerilen değişikliğiniz mevcut işlevselliği değiştirmek veya bir özellik eklemekse, değiştireceğiniz kod alanının kapsamını iyi sağlamak için bazı testler yazın. Kodu değiştirmeye başlamadan önce bu testlerin geçtiğinden ve bitirdiğinizde de geçtiğinden emin olun.


Bu gerçekten iyi bir tavsiye, bir hata düzeltmesi almak biraz daha uzun sürebilir, ancak kesinlikle bu tür hataları tekrar yapmama neden olmayacak ve genel olarak daha kararlı bir kod yazmama izin verecek.
Peter

@Peter uzun vadede bakım zamanından tasarruf etmelidir. Manuel olarak duman test düzeltmeleri için daha az zaman harcamanız gerekir ve ayrıca kodun bir sonraki düzenlenişinde de testler yapılır. Bazen, hatayı yeniden üreten bir birim testi yazmanın, hatayı ilk başta hata ayıklamayı ve düzeltmeyi daha hızlı hale getirebileceğini bile görebilirsiniz.
Alb

@Peter Sıklıkla kendimi düzeltirken hatayı birkaç kez üretirken bulurum. Bunun yerine küçük bir test yazmak genellikle zaman kazandırır, kesinlikle işe yaradığından (ve gelecekte çalışacağından) emin olamazsınız.
Dasich

Bu harika bir tavsiye dostum, çok teşekkür ederim!
Shaheer

@Alb hatta kısa vadede.

3

Son durumları test etmeyi unutmayın! Birçok hata, en yaygın eylemin test edildiği, ancak daha az yaygın olanların test edilmediğinden kaynaklanmaktadır.


Imho gerçek mücevher bu kenar durumlarda bulmaktır. Sadece belirli bir senaryoyu düşünmediğimiz için, bir sistemden çıkan hatalardan sık sık şaşırırım.
Peter

2

Teknik yönelimli cevaplardaki teknik tavsiyelere uyun; iyi şeyler. Cevabım daha çok tutum hakkında.

Her geliştiricinin ara sıra yaptığı hatalardan dolayı kötü hissetmek sadece saçmadır ve gelecekte bu tür bir hata yapmamanıza yardımcı olmaz. Orada otururken kendini kötü hissediyorsun, yapı hala bozuk, biliyor musun? Ve sonra işiniz tamamen hatalardan kaçınmakla ilgili, biliyorum ki sabahları yataktan kalkmak her gün heyecan verici bir macera, değil mi?

Kırık kodların kontrol edilmesinin halkın sahtekarlığına neden olduğu şirketleri duydum. Kafamı böyle bir davranışa yol açacak çarpık, frat-boy, ortaokul düzeyinde bir düşüncenin etrafında bile bulamıyorum. Bir takım liderinin veya menajerinin yapması için herhangi bir karşı üretken olması pek mümkün olmayabilir.

Bu yüzden kendinizi dövmeyin. Hepimiz başardık. Muhtemelen haftada yarım gün saçma hatalara mal oluyorum ve bunu uzun süredir (öksürük) yapıyorum. Kod yazmak böyle görünüyor - sürekli kendi yetersizliğinize benziyor. Bir profesyoneli profesyonel yapan şey, asla hata yapmamak gibi efsanevi bir nitelik değildir (bazen büyük olanlar da dahil olmak üzere), ancak yaptıkları hatalara nasıl yanıt verdikleri.

Birlikte çalıştığım her geliştiriciye aşılayabileceğim bir mantra varsa, işte bu: Siz kodunuz değilsiniz . Kod yazıyorsunuz. Yazabildiğiniz kadar iyi ve verimli bir şekilde yazıyorsunuz. Sonra eve gidiyorsun. Bir kişi olarak değerinizi veya öz-değerinizi kodunuzun kalitesiyle eşitlerseniz, gerçekte kim olduğunuz hakkında tekneyi kaçırırsınız.


Kamu paylaşımları hakkında söylediklerinizi anlıyorum, ama aynı zamanda engellenmek sinir bozucu çünkü yapı bozuldu çünkü Joe
Bloggs

@tenpn - Tamamen. Ama söylediklerimin tersi Joe Bloggs için de geçerli. O da onun kodu değil. Meslektaşları olarak, Joe'yu gözümüzde bir aptal haline getirme dürtüsüne direnmeliyiz çünkü o herhangi birimizin yapabileceği bir hata yaptı.
Dan Ray

@tenpn aslında, trunk / master değişikliklerini yapmadan önce sistemi otomatik olarak test etmediğinden de suçlayabilirsiniz.
David

2
@tenpn - İş arkadaşlarınızı da yenmez.
Dan Ray

1
Değişiklik yapıyı bozmazsa ne olur? Giriş yapmadan önce kodunuzu oluşturmak mantıklıdır. Kodunuzu mümkün olan her şekilde test etmek çok açık değildir. Her zaman sahip olamayacağınız bir senaryo vardır. Hemen bugün sadece doğru (yanlış) sayılara sahip olduğunuzda meydana gelen bir kayan nokta yuvarlama hatasına rastladım
Peter

2

Başka bir önemli test uygulaması, testi yazmak ve kodu yazmadan ÖNCE en az bir kez başarısız olduğundan emin olmaktır. Yanlışlıkla kontrol ettiğiniz durumu test etmeyen bir totoloji testi yazmak ve yazmak kolaydır. Yanlış güvenceler hiçbir güvenceden neredeyse (ve bazen daha kötü).


0

Zaman zaman kullandığım bir fikir,

bir şube oluşturun ve kodunuzu kırın, testi çalıştırın ve testin hatayı yakaladığından emin olun.


0

Kodunuzu test ederken belirli temel kurallarınız var mı?

  • Kodunuzu daima birim test edin ve mümkün olduğunca yüksek kapsama alanına ulaşmaya çalışın.

Bazı ek genel noktalar:

  • kodlamaya başlamadan önce tasarım ve planlamaya biraz zaman ayırın
  • kodunuzu yeniden düzenleyin!
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.