birim testlerinin maliyeti

Birim test bu son hafta benim için bir yinelenen tema; StackOverflow ve diğer forumları ve test bahsediyorum arasında ben iki devam eden projeler için yazmak, Ben birim testleri gerçek maliyeti hakkında birkaç soru sordu.

Bu özellikle Thomas Brandt bir makale (Alman: “der TDD (benim) Pratik - dilek ve gerçeklik”) o beni ciddiye düşündürdü. Brandt yazısında teori ve pratiğini Test Driven Development arasında oldukça iyi gerçekten bu körfez açıklanır. Noktası boş, Aksine, TDD ve ilkelerine uyar;

Ben ilk o Test Driven Development söylemek gerekir, Özellikle "ilk test" ilkesine, Bir daha ziyade “seksi” geliştirmek. Kesinlikle yazılım mimarisi artırabilir ve bazı yaparak bizi engeller (küçük) hataları.
— T hakkında görece özgür çeviri. Brandt

O yüzden güçlü bir araç olarak görmektedir TDD – en azından salt akademik. Ama hemen sonuç bir şüphe;

Soru basitçe: ne de fiyat?

belirtildiği gibi, T hariç. Brandt ve ben, Birçok kişi daha sormak gibi görünüyor, ve en sık sorulan soru aşağıdaki gibidir: birim testlerinin kullanımı o gerçekten iyi bir yazılım yok bu mu, ve yatırım çabaları gerçekçi olmasıdır?

Kondense, soru basit bir özetlenebilecek:

Bu bana ne kadara mal birim testleri?

Sık sık soru içerir, o kim birim testleri de sürekli uygulamak için pahalı olduğunu düşünüyorum yükseltir. Ben teorik ideal ötesinde toplam test kapsamı değeri hakkında bir tartışma vardı hatırlıyorum. Bildirilen çabaları dedim sağlamak “değil” zaman.

Bence bugün itibariyle bütün bu soruların sadece kötü sorulur, bunu bilmiyor, çünkü birim test maliyeti önemlidir, daha fazla:

Nasıl birim testlerin ihmal ödeme yapmak?

Ve burada benim cevap, somut bir örnek kullanılarak hazırlanmıştır;

benim şimdiki projelerinden biri dağıtılmış bileşenler çok sayıda yer. Ben taslak bir hata keşfetti, hangi Refactor iki sınıf için beni zorladı. Tüm beni aldı 1 saat. birim testleri Launch? Hakkında 30 ikinci. 30 saniye, bazı davranışları olarak planlanan olmadığını keşfetti. Bu düzeltmeler için beni yaklaşık 20 dakika sürdü. testleri 45dakika hakkında bana maliyeti Yazma.
Bilanço yaklaşık iki saattir.

birim testleri olmadan, Herhalde hemen hataların bazıları fark olmaz. Ben olurdu 1 zaman refactoring, üzerinde bir veya daha az belirlenebilir, kesinlikle birkaç gün yayılmış, sorunları değiştirirken fark edilmeden gidip düzeltmek için. bu kez bir saat ötesine gider olasılığı oldukça yüksektir (debug “el”, çoklu iş parçacıklı uygulamalar vb koşullarını yeniden…).

Benim bölüm için, Ben belirli bir zaman hesaplamak için bulmak (yazılım gerçekçi bir kısmını kapsayan sahip testleri – değil 100%) daha ilginç karanlıkta o navigasyon uygulandığı gibi.

Deneme! ;)

MariaDB için birkaç NoSQL

Logo de MariaDB

MySQL MariaDB bir çatal

Bir mesaj beni çok mutlu ulaştı MariaDB, çok umut verici MySQL çatal. Bir çok yeni onların deposundaki taahhüt ile, MariaDB bir kova klasik ilişkisel model yumuşatmaya yardımcı olur. dinamik sütun tanıtımıyla (Ücretsiz çeviri “Dinamik Sütun”) sonraki sürümü (5.3) MariaDB görünüşte NoSQL bir dokunuş içerir!

kalkınmada öncelikli bir hedef SQL sözdizimi Klasik üzerinden bu sütunlar yapmak için kullanılan. Dahili dinamik sütun BLOB olarak depolanır (Ikili büyük nesne).

operasyon göstermek için bu yeni yazabilirsiniz, küçük bir örnek:

Select All Code:
1
2
3
4
INSERT INTO exemple (nom, classe, prix, attributs) VALUES
("HTC Desire Z", "telephone", 420, COLUMN_CREATE(1.5, "Gris")),
("Nokia E7", "telephone", 509, COLUMN_CREATE(32, "noir", 2, "Clavier")),
("Lenovo Thinkpad E420", "ordinateur", 1019, COLUMN_CREATE(1, "noir", 3, "Win7 Pro", "500Go"));

Gördüğünüz gibi, her şey tamamen geleneksel bir sorgu gibi görünüyor, perakende sütun “öznitelikleri” yakın. Örneğin, her giriş nedenle geleneksel veri var, bir alan üzerinde “öznitelikleri” hangi verilerin değişken sayıda içerir (NB: klasik alanların aksine, giriş dinamik dizi adresleme tek sayı bulunmakta, ama görünüşe göre geliştiriciler bunu değiştirmek için henüz).

Sütun için bir giriş oluşturmak için çok kullanmak COLUMN_CREATE(), güncelleştirme veya bir giriş kullanmanız gerekir silmek için COLUMN_ADD() Normal bir arama UPDATE:

Select All Code:
1
2
UPDATE exemple SET attributs=COLUMN_ADD(attributs, 1, "jaune")
  WHERE COLUMN_GET(attributs, 1 AS CHAR(10)) = "noir";

Örneğin, aynı zamanda oldukça iyi kullanımı göstermektedir COLUMN_GET() sütunun bir öznitelik erişim sağlar. da vardır Column_list() döndüren dinamik sütunların listesini sunuyoruz.

Hiç zaten bu yeni özelliği denemek istiyorsanız, derleyici ve jettez depo de MariaDB; ikili versiyonu ile sunulacak 5.3 MariaDB.

Üçüncü parti bileşenler ve birim testleri

Yazılım Test - bir bilim olun

Ben sadece çalışma okumak Yazılım Dürüstlük Risk Raporu isteği üzerine yapılan edildiğini Coverity. bir duygu ben uzun zaman önce kadar Genel olarak çalışmanın oldukça fazla miktarda; ortalama geliştirici bir projeye entegre üçüncü parti yazılım kalitesi hakkında çok daha az ilgili olduğunu kodunu kalitesi.

rakamlar On, çalışma diyor 90% ve (330) Geliştiriciler üçüncü parti kaynaklarını kullanabilirsiniz (onlar ya da telif hakkı sahiplerinin ücretsiz) kendi yazılım. Sadece yaklaşık karşı olarak 40% Geliştiriciler bu hale demek bu kaynaklar üzerinde otomatik testler (Daha eksilerini 75% kaynakları için “ev”). Bu aynı (birkaç yüzde içinde) manuel test ve bütünlüğü için (stress-testing/functional-testing).

Belirli bir uzlaşma gecikmeler kalitesiz üçüncü taraf kod nedeniyle ilgili mevcut; daha fazla 140 développeurs ont répondu qu’une grande partie des retards de lancements ou des rappels étaient dû à des soucis avec des sources tierces.

Son söz: TEST! TEST! TEST!

tarayıcıda Linux

Cela faisait longtemps qu’on savais tous que le Javascript n’était pas que là pour valider des formulaires (X)HTML ve web sitelerinde bazı etki yapmak. Ama şimdi M. Fabrice Bellard bir gösteri ile yine vurdu’ölçek!

Ce génie a bel et bien réalisé un émulateur x86 en pure javascript! Ben burada teknik detayları yedek olacak (onlar da okunabilir Site Fabrice Bellard). Toptan, JSLinux bir emülatörüdür 486, FPU ve MMX olmadan, ama bir bellek yönetimi birimi ile (MMU) tam!

Bir tasarım özelliği (bu da mümkün bu yararlanmak için yapılan) Yazılan dizilerin geniş kullanımı olan (şartname tarafından) Geçtiğimiz günlerde son tarayıcılarda kullanılabilir hale gelmiştir (Krom 11 ve şu anda Firefox4, Opera étant entrain de rattraper le retard si mes informations sont bonnes).

Ilgili “distro” Linux demo yüklü, tamamlamak güzeldir; çekirdek 2.6.20, BusyBox, biz, qemacs ve bir C derleyicisi (TinyCC, Ben ilk defa çalışmakla sevinç = vardı)

Bu On, Kendini keşfetmek için izin vereceğim merak ediyorum: JSLinux (sayfa birkaç saniye yük alır)

Yüklemek Mono 2.10 YUM ile CentOS

Ve ben geriye biraz müdahalesi Linux ile kulüpler: Yüklemek Mono 2.10 CentOS (5.6 için bir kez).

Ben her zaman aynı sonucu getirdim net arama Birkaç saat; kaynaktan kurmak… ve bağımlılık güzel liste, hiçbir şey çok komik… çözüm: çok küçük bir kafa kırmak!

Daha fazla bilgi

SSL özel anahtarlar kayıp geri!

Deneme’ Ben bugün açıklayan am oldukça keskindir, Özellikle konu verildi!

Ilk hikaye: Ben yanlışlıkla silinen, ya da daha doğrusu, benim sunucuları birinde SSL şifreleme için kullanılan özel anahtar yerine. Bu anahtar olmadan sunucusu bir kez daha yeniden yürümek yok bilmek!

Ne beni kurtardı? Aslında belleğe Apache yüklenen tüm dosya! I / yığın işlem apache2 arama yığın bir dökümünü yapmış olabilir…. veya aşağıdaki küçük aracı bulmak için Google'da 2 saat bakmak

Daha fazla bilgi

W7 HP Color LaserJet 2600n

Merhaba; Bu büyük haber; Windows kullanıcıları arasında şimdi ÖS 7 (3hafta şimdi) ve oldukça memnun. Yanı sıra iki küçük pilot hatasından (şimdi çözüldü) hiçbir sorunu, yalnızca HP Lazer Yazıcı (CLJ2600n) Bunu kullanmak istedi zaman benim annem bana biraz tavşan bu sabah sorulur:

Infact Her şeyi de ilk defa çalışmaya gittiğini sanıyordum – Bu Vista üzerinde çalıştı – ancak ağ yazıcısı için görünüşe göre sürücüleri W7 için Windows Update artık, ve HP, yalnızca bir sürümü “Tak ve Çalıştır” kendi sitelerinde (böylece: HP 2600n için destek sayfası) USB üzerinden çalışması için tasarlandığı – en azından resmi olarak.

Daha fazla bilgi

7 Hayatınızı kaydedebilirsiniz Google hileler!

Herkes Google kullanıyor (bazı istisnalar dışında…) bir arama motoru olarak, fakat kim bir sözcüğün tanımını bulmak için Google kullanabilirsiniz biliyordu, Bulgar leva avroluk dönüştürmek, veya belirli tarihler arasında bilgilere arama sınırı?

İşte bazıları “İpuçları” Google, birçok yararlı için olabilir ki!

Daha fazla bilgi

jQuery: Opera için CSS animasyonlu dönüşümleri 10.50

Ben WebKit üzerinde dönüştürmeleri CSS ilk uygun bir süre önce keşfedilen (Safari ve Google Chrome arkasındaki render motoru), sonra Firefox eklendi, Sürüm ile Opera ve en son 10.50.

Her zaman olduğu gibi, uygulamaların farklı (Internet Explorer tüm bunları desteklemiyor söz değil…) ancak komut Zachstronaut (bir “hotpatch.Bu” jQuery infact, özellik ekleme dönüştürmek fonksiyonu $.css() ve döndürmek gibi ölçek için $.Canlandırılmış()) Firefox ve WebKit iyi çalıştı…

Ne yazık ki CSS Dönüşümler Opera uygulama bir değer döndürmez “okunabilir” ancak bir veri matrisi, bunun için ben belgelerine bulamadım. Bu yüzden birkaç detours aldı, ve fonksiyonu sayesinde getComputedStyle() Ben Opera animasyon çalıştırmak için gerekli almak başardı.

Komut dosyası değiştirilmiş versiyonu böylece (Ayrıca CSS değişiklikleri bilmiyorum isteyenler için bir örnek bulacaksınız).

LMGTFY.com, veya “yardım isteyin nasıl?”

Olarak harcamak talihsizlik varsa “geek” (veya uzman “Yeni Teknolojiler” – siyaseten doğru olmak) sık sık kendimizi arkadaşları ve diğer tanıdıkları için hattı oynarken bulabilirsiniz. Çoğunlukla sadece bir arama motoru başlatmak zorunda.

La science "Google"

Bilim "Google"

Bize yardımcı olmak için, arkasındaki insanlar LMGTFY, için Beni For You Bu, Google, kendi sitesi oluşturduk; Bir arama girin, Bu site oluşturur “animasyon” Bu Google arama nasıl gösterir. Size bilgi için bağlantılar göndermek ve bunu öğrenmek izin…

Ben güzel bir fikir bulundu – Eğlenmek ;)

PS: Google logoları hayranları için: Les Google Doodles (Tüm tematik logoları resmi koleksiyonu :P )