SORU
29 Aralık 2010, ÇARŞAMBA


Bozulmuş ağ test ünitesi yığın işleme, dosya bozulması ve diğer kusurları

Öncelikle C kodlayıcı değilim, ve bugüne kadar, gerçekten benim kod tüm testleri yazmadan başardı. Karar verdim, bu Kötü bir Fikir(tm), sonra yeni özellikler ekliyor Bu kurnazca kırdı eski özellikleri, ya da nasıl bağlı keşke ona bakmak için, sunulan yeni "özellikleri" kendi.

Ancak, birim test son derece kırılgan bir mekanizma gibi görünüyor. "Mükemmel ama kodunuzu şeyler kırıldığında nasıl bir performans görmek için alamadım" koşulları,. bir şey için test edebilirsiniz Örneğin bir tarayıcı, bu yüzden birkaç özel siteler sürünüyor ki, veri için izin X. sadece örnek sayfaları kurtarmak mı, o karşı test ve siteleri hiç değişmez umarım? Bu regresyon testleri iyi olarak çalışmak istiyorum, ama ne tür testler yazar mısın sürekli bu siteleri kontrol etmek içincanlıve şimdi uygulamanızın çökmesine neden olan uygulama sitesinden bir şeyler değişti çünkü işi olmadığı zaman haber ver sen? Test paketi izlemek istemezniyetbu kodu?

Yukarıdaki örneği biraz yapmacık ve bir şey içine (durumda etmedin) koşmak değil. Ben öyle bir şey seçmeme izin ver bana. Nasıl bir uygulama yapacak test bozulmuş bir ağ karşısında işini yığını mı? Yani, demek bu başka bir şey için paket kaybı ılımlı bir miktar var, ve olan 0* *bir işlevi vargerekiyoraşağılamak için incelikle yığını olması gerektiği gibi performans değil; ama değil mi? ne zaman Geliştirici o ilk yazdığında şahsen bunu bilerek paketleri kötü bir ağ simülasyonu damla bir ağ geçidi kurarak testleri. Bir kaç ay sonra, birisi kontrollerinde bazı kod değiştirir bir şey kurnazca, bu kadar bozulma olmadığını tespit zaman, ya da, uygulama yok bile tanımak bozulması, bu asla yakalanmaz, çünkü kaçamazsın gerçek dünya testleri gibi bu kullanarak birim testleri, değil mi?

Ayrıca, ne kadar yolsuzluk dosyası hakkında? Hadi bir dosya sağlama toplamı sunucuların listesini saklamak olduğunu söylegörünüyortamam, ama bu veriler gerçekten değil. Kod bu mu sence bazı kod yazmak işlemek istiyorum. Uygulama nasıl hayat tam olarak bu mu bu test? Misin?

Bu nedenle, kırılganlık. Birim testleri vahşi yüzü olacak mükemmel koşullar sadece kod(ve bu, mock nesneler ile terfi gibi), test gibi görünüyor. Beni yanlış anlama, bence birim testleri büyük, ama bir test paketi oluşur sadece onlar gibi olmak için akıllı bir şekilde tanıtmak ince hataların kodunuzu ederken duygu güvenen alakalı güvenilirlik.

Yukarıdaki durumlara hitap edeyim? Eğer birim testleri cevap değilse, nedir?

Edit: ki cevaplar görüyorum "özür dilerim". Eh, bunu yapamazsın "özür dilerim", işte bu yüzden: Aşağılayıcı ağ yığını benim örnek üzerinden gidelim fonksiyon alay edeceğiz iyi tanımlanmış bir Networkınterface, varsayalım. Bu uygulama hem TCP ve UDP paketleri gönderir. Şimdi, hadi, hadi arabirimi üzerinden  kaybı alay bir nesne kullanarak taklit edelim ki, bakalım ne olacak. TCP bağlantılarını yeniden deneme girişimleri gibi-geri çekil, tüm iyi uygulamaları giderek artması. Karar değiştirmek için X% sizin UDP paketleri için aslında bir TCP bağlantısı, kayıplı arayüzü, olmak istediğimiz mümkün edebilmek için garanti teslimat bazı paketler ve diğerleri gerekmez mi kaybetmek çok fazla. Harika çalışıyor. Bu arada, gerçek dünyada.. ne zaman artırmak sayıda TCP bağlantısı (veri bağlantısı üzerinden TCP) bağlantı bu kayıplı yeterli, sonun yükseltilmesi UDP paket kaybı olarak TCP bağlantısı olacak sonunda yeniden gönderme verilerini daha fazla ve daha fazla ve/veya azaltılması, pencere, neden senin 'luk paket kaybı için aslında daha fazla 90% UDP paket kaybı şimdi. Pot günümdeyim.

Önemli değil, hadi o UDPİnterface bölmek ve TCPİnterface. Bu birbirine bağlı.. bir dakika bekle, 10 % test TCP UDP kaybı yukarıda farklı değil.

Sorun sadece birim kodu test değilsin artık, işletim sistemi TCP yığını çalışır şekilde içine varsayımlar takdim edeceksin. Ve, o kadar da Kötü bir Fikir(tm). Sadece tüm bu fiyasko kaçınarak çok daha kötü bir fikir.

Bir noktada, tam olarak test edilebilir olması dışında gerçek bir işletim sistemi gibi davranan Sahte bir işletim sistemi oluşturmak zorunda olacak. Güzel bir yol gibi ileri gelmiyor.

Bu yaşadığımız şeyler, başkalarının deneyimlerini de ekleyebilirsiniz eminim.

Biri bana yanıldığımı söyle, neden işaret umuyoruz!

Teşekkürler!

CEVAP
29 Aralık 2010, ÇARŞAMBA


Birim testleri hakkında konuşmaya başlayın, tüm uygulamalar hakkında konuşmak; ne olduğu konusunda kafan biraz karışmış gibi görünüyor. Birim testi en ince taneli düzeyinde ilgili test, her "birim" yazılım test ediliyor. "Birim" tek bir işlevi, tüm bir uygulama değil. genel kullanımı, Çağdaş programlama stili, her birim test için bu nedenle kolay olan iyi tanımlanmış bir şey, kısa işlevleri vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008