Tarif ettiğiniz şey aslında bu kadar kötü bir şey olmayabilir, ancak testlerinizin keşfettiği sorunları daha derinleştiren bir işaretçi olabilir.
Sistem değiştikçe, kırılan testleri düzeltmek için daha fazla zaman harcıyoruz. Birim, entegrasyon ve fonksiyonel testlerimiz var.
Kodunuzu değiştirebilir ve Testlerinizi istiyorsanız değil kırmak, bu benim için şüpheli olurdu. Meşru bir değişim ile bir hata arasındaki fark, sadece talep edilmesi, talep edilmesi (TDD'nin varsayılması) testleriniz tarafından tanımlanmış olmasıdır.
veri kodlanmış.
Testlerde sabit kodlanmış veriler iyi bir şeydir. Testler ispat olarak değil, sahte olarak çalışır. Çok fazla hesaplama varsa, testleriniz totolojiler olabilir. Örneğin:
assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])
Soyutlama ne kadar yüksek olursa, algoritmaya o kadar yaklaşırsınız ve bu sayede akutal uygulamayı kendisiyle karşılaştırmaya daha yakın olursunuz.
kodun çok az yeniden kullanılması
Testlerde kodun en iyi şekilde yeniden kullanımı assertThat
, testler basit olduğu için jUnits'te olduğu gibi 'Çekler' şeklindedir . Bunun yanı sıra, eğer kodları paylaşmak için testler yeniden düzenlenebilirse, test edilen muhtemel gerçek kod da olabilir , böylece testler yeniden düzenlenmiş tabanı test edenlere indirgenir.