Die Kosten für Unit-Tests

Unit-Tests ist ein wiederkehrendes Thema für mich in den letzten Wochen; zwischen reden Stackoverflow und anderen Foren und Tests, die ich für zwei laufende Projekte schreiben, Ich fragte ein paar Fragen, die tatsächlichen Kosten der Unit-Tests.

Dies ist vor allem ein Artikel von Thomas Brandt (Deutsch: “TDD in der (meiner) Praxis – Wunsch und Wirklichkeit”) das machte mich denken ernsthaft. Brandt beschreibt in seinem Artikel in der Tat recht gut diese Kluft zwischen Theorie und Praxis des Test Driven Development. Point Blank, Vielmehr hält es die Grundsätze der TDD;

Zunächst muss ich sagen, dass Test Driven Development, insbesondere das Prinzip der "ersten Test", ist ein ziemlich “sexy” entwickeln. Es kann sicherlich zur Verbesserung der Software-Architektur und hindert uns daran, sich bestimmter (klein) Fehler.
— Relativ freie Übersetzung von ca. T. Brandt

Er ist daher der Auffassung, wie ein mächtiges Werkzeug TDD – zumindest aus einer rein akademischen. Aber die unmittelbare Folge ist ein Zweifel;

Die Frage ist nur: zu welchem ​​Preis?

Wie bereits erwähnt, außer T. Brandt und ich, viele andere Leute scheinen zu fragen, und die am häufigsten gestellte Frage lautet wie folgt: Ist das die Verwendung von Unit-Tests sie tut wirklich bessere Software, und dass die Bemühungen um investieren sie sind realistisch?

Kondensiert, Die Frage läuft darauf hinaus, eine einfache:

Es kostete mich, wie viel die Unit-Tests?

Oft ist die Frage betrifft, daß, wer wirft denken Unit-Tests sind zu teuer gelten konsequent. Ich erinnere mich an eine Diskussion, die ich über den Wert von insgesamt Testabdeckung hatte über dem theoretischen Ideal. Berichtet Anstrengungen zu unternehmen, sagte ich “nicht” zum Zeitpunkt.

Ab heute glaube ich, alle diese Fragen gestellt werden einfach böse, weil es nicht wissen, die Kosten für Unit-Tests ist wichtig, mehr:

Wie bezahle ich das Weglassen von Unit-Tests?

Und hier ist meine Antwort, dargestellt an einem konkreten Beispiel;

Eines meiner aktuellen Projekte umfassen eine große Anzahl von verteilten Komponenten. Ich entdeckte einen Fehler im Entwurf, der mich zwang, Refactoring beiden Klassen. Alle habe ich etwa 1 Stunde. Launch Unit-Tests? Über 30 zweite. 30 Sekunden, entdeckte ich, dass einige Verhaltensweisen nicht wie ursprünglich geplant waren. Ich brauchte etwa 20 Minuten für Korrekturen. Schreiben von Tests kostete mich ungefähr 45min.
Die Bilanzsumme beträgt etwa zwei Stunden.

Ohne Unit-Tests, Wahrscheinlich hätte ich nicht bemerkt, einige der Fehler sofort. Ich hätte, wenn 1 Zeit Refactoring, über einen mehr oder weniger bestimmbaren, sicherlich über mehrere Tage verteilt, um die Probleme beheben unbemerkt beim Wechsel. Die Wahrscheinlichkeit, dass dieses Mal weit über eine Stunde ist relativ hoch (Debug “Hand”, Wiederherstellung der Voraussetzungen in Multi-Threaded-Anwendungen usw.…).

Ich für meinen Teil, Ich finde, dass zu einem definierten Zeitpunkt berechnen (mit Tests für eine realistische Teil der Software – nicht 100%) Interessanter ist, dass die Navigation im Dunkeln geübt.

Experiment! ;)

Ein paar NoSQL für MariaDB

Logo de MariaDB

MariaDB ein Fork von MySQL

Eine Nachricht erreichte mich sehr glücklich, MariaDB, die Gabel sehr vielversprechend MySQL. Mit einem sehr aktuellen begehen in seinem Depot, MariaDB erlaubt sich zu einem klassischen relationalen Modell entspannen können. Mit der Einführung der dynamischen Spalten (Freie Übersetzung “Dynamische Spalte”) die nächste Version (5.3) Also scheinbar MariaDB zu einem Hauch von NoSQL enthalten!

Ein primäres Ziel in der Entwicklung wurde verwendet, um diese Spalten via SQL-Syntax Classic machen. Intern dynamische Spalten werden als BLOB gespeichert (Binary Large Object).

Zur Erläuterung der Anwendung kann diese neue Art, ein kleines Beispiel:

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"));

Wie Sie sehen können, alles sieht aus wie eine Abfrage ganz konventionell, Einzelhandel Spalte “attributs” schließen. In dem Beispiel hat jeder Eintrag daher konventionellen Daten, über ein Feld “attribInternet; enthält eine variable Anzahl von Daten (NB: im Gegensatz zu den klassischen Feldern, Eingang dynamischen Array hat nur eine Nummer Adressierung, aber anscheinend haben die Entwickler noch zu ändern,).

So erstellen Sie einen Eintrag für die Spalte ist daher verwendetCOLUMN_CREATE(), So aktualisieren oder löschen einen Eintrag muss die Verwendung COLUMN_ADD() in einem normalen Anruf UPDATE:

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

Das Beispiel zeigt auch ganz gut den Einsatz von COLUMN_GET() die einen Zugang zu einem Attribut der Spalte. Es gibt auch Column_list() dass die Rendite der Liste der dynamischen Spalten vorhanden.

Wenn Sie jemals wollen diese neue Funktion bereits versuchen, jettez auf Ihrem Compiler und Repository de MariaDB; Binärdateien werden mit Version verfügbar 5.3 Die MariaDB.

Komponenten Dritter und Unit-Tests

Software Testing - Seien Sie einer Wissenschaft

Ich habe gerade gelesen das StudiumSoftware Integrity Risikobericht die wurde auf Antrag der LeitungCoverity. Im Großen und Ganzen der Studie ziemlich viel bringt ein Gefühl, das ich vor langer Zeit; die durchschnittliche Entwickler ist weit weniger besorgt über die Qualität der Software von Drittanbietern, die in ein Projekt integriert, dass die Qualität ihrer eigenen Code.

Zu den Zahlen, Die Studie sagt 90% von (330) Entwickler verwenden Drittquellen (sie sind frei von Copyright-Inhabern oder) in ihrer Software. Cons nur um rund 40% Entwickler sagen, dass diese machen automatisierte Tests auf diese Quellen (mehr Nachteile 75% für Medien “home”). Es ist die gleiche (ein paar Prozent) für die manuelle Prüfung und Integrität (stress-testing/functional-testing).

Ein gewisser Konsens besteht hinsichtlich der Verzögerungen aufgrund schlechter Qualität Dritten Code; mehr 140 Die Entwickler haben geantwortet, dass viel von der Einführung Verzögerungen oder Rückrufe wegen Problemen mit Drittanbieter-Quellen wurden.

Das letzte Wort: TESTEZ! TESTEZ! TEST!

Linux im Browser

Für eine lange Zeit wussten wir alle, dass JavaScript nicht da war, um Formulare zu validieren (X)HTML und einige Auswirkungen auf die Webseiten. Aber jetzt M. Fabrice Bellard hat erneut mit einer Demonstration schlug’Maßstab!

Das Genie hat in der Tat ein x86-Emulator erreicht in reinem Javascript! Ich erspare Ihnen die technischen Details hier (sie sind lesbar auf Site Fabrice Bellard). Großhandel, JSLinux ist ein Emulator 486, ohne FPU und MMX, aber mit einer Memory Management Unit (MMU)complète!

Ein Design-Merkmal (die es möglich gemacht, diese zu nutzen) ist die weitgehende Verwendung von typisierten Arrays (Spezifikation von) die seit kurzem in neueren Browsern verfügbar (Chrome 11 und derzeit Firefox4, Opera wird temperamentvoll aufzuholen, wenn ich richtig informiert).

Was “Distribution” Linux in der Demo installiert, es ist ziemlich komplett; Kernel 2.6.20, BusyBox, wir, qemacs und einen C-Compiler (TinyCC, Ich hatte die Freude, zu versuchen zum ersten Mal =)

Auf dieser, Ich lasse Sie entdecken für sich das Wunder: JSLinux (der Seite dauert ein paar Sekunden geladen)

Installieren Sie Mono 2.10 CentOS mit YUM

Und ich bin wieder mit ein wenig Bastelei Linux: Installieren Sie Mono 2.10 auf CentOS (5.6 für einmal).

Wenige Stunden nach der Suche im Netz habe ich immer zu dem gleichen Ergebnis gebracht haben; aus dem Quellcode bauen… und mit den netten Liste der Abhängigkeiten, nichts sehr lustig… Die Lösung: Pause ein kleines Köpfchen!

Lesen Sie mehr

Wiederherstellen privaten SSL-Schlüssel verloren!

Das Experiment’ Ich beschreibe heute ist ziemlich scharf, zumal das Thema!

Erste Geschichte: Ich habe aus Versehen gelöscht, oder vielmehr, ersetzt der private Schlüssel für SSL-Verschlüsselung auf einem meiner Server verwendet. Wissend, dass ohne diesen Schlüssel der Server nicht laufen wieder einmal neu gestartet!

Was mich gerettet? Die Tatsache, dass Apache lädt die gesamte Datei in den Speicher! Ich konnte einen Dump des Haufens getan haben / Stack Prozess apache2 Suche…. oder für 2 Stunden in Google suchen, die folgende kleine Tool finden

Lesen Sie mehr

HP Color LaserJet 2600n von W7

Hallo an alle; das ist die große Neuigkeit; Ich bin jetzt unter Windows Anwender 7 (3Wochen) und ziemlich zufrieden. Abgesehen von zwei kleinen Pilot Ausfälle (nun behoben) nichts falsch, Ausnahme, dass die HP Laserdrucker (CLJ2600n) das ist meine Mutter fragte mich ein kleines Kaninchen an diesem Morgen, als ich verwenden wollte:

Infact Ich dachte, alles würde gut funktionieren das erste Mal – es funktionierte auf Vista – aber anscheinend die Treiber für dieses Netzwerk Drucker ist nicht mehr auf Windows-Update für W7, und HP bietet nur eine Version “Plug and Play” auf ihrer Website (dadurch: Support-Seite für das HP 2600n) dazu bestimmt ist, über USB-Funktion – zumindest offiziell.

Lesen Sie mehr

7 Google-Tipps, die Ihr Leben retten kann!

Jeder nutzt Google (wenigen Ausnahmen…) als Suchmaschine, aber sie wusste, wer kann Google verwenden, um die Definition eines Wortes finden, Konvertieren Euro in Bulgarien Levs, oder um die Suche einzuschränken, um Informationen zwischen bestimmten Terminen?

Einige “Tipps” Google, die sich als sehr nützlich, um!

Lesen Sie mehr

jQuery: CSS-Transformationen animierte Opera 10.50

Entdeckte ich vor einiger Zeit Transformationen ersten verfügbaren CSS auf WebKit (die Rendering-Engine hinter Safari und Google Chrome), Anschließend wurde Firefox hinzugefügt, und jüngst mit der Opera-Version 10.50.

Wie immer sind die Implementierungen verschiedener (nicht zu erwähnen, dass Internet Explorer nicht unterstützt sie in allen…) aber das Skript Zachstronaut (ein “hotpatch” jQuery infact, Hinzufügen von Eigentum transformieren die Funktion $.css() und drehen wie Maßstab zu $.Animierte()) funktionierte gut in Firefox und WebKit…

Leider ist die Umsetzung von CSS-Transformationen Opera nicht zurückgehen Werte “lesbar” sondern eine Matrix von Daten, für die ich keine Unterlagen gefunden. Also nahm ich ein paar Umwege, und durch die Funktion getComputedStyle() Ich war in der Lage, die notwendigen abzurufen, um die Animation auf Opera laufen.

Die überarbeiteten Skript dadurch (Dort finden Sie auch ein Beispiel für diejenigen, die nicht wissen, CSS Transformationen).

LMGTFY.com, oder “wie man um Hilfe bitten?”

Wenn Sie Pech haben, gehen als “geek” (oder Sachverständigen “Technologie” – um politisch korrekt sein)wir oft bei der Hotline für Freunde und andere Bekannte. Die meiste Zeit haben wir eine Suchmaschine gestartet haben.

La science "Google"

Science "Google"

Um zu helfen, Menschen hinter LMGTFY, für Let Me Google, die für Sie, erstellt haben ihre Website; Sie geben Sie einen Suchbegriff, und die Website wird Ihnen automatisch ein “Animation” zeigt, wie Sie mit Google-Suche. Sie senden den Link, um Ihr Wissen und erfahren Sie,…

Eine nette Idee, ich glaube, – Viel Spaß ;)

PS: Für Fans des Google-Logos: Google Doodles les (ist die offizielle Sammlung aller thematischen Logos :P )