De kosten van unit tests

Unit testing is een terugkerend thema voor mij de laatste weken; tussen praten over StackOverflow en andere fora en de tests die ik schrijf voor twee lopende projecten, Ik vroeg een paar vragen over de werkelijke kosten van de unit tests.

Dit is vooral een artikel van Thomas Brandt (Duitse: “TDD in der (mijn) Praktijk - wens en werkelijkheid”) dat maakte me aan het denken serieus. Brandt beschrijft in zijn artikel heel goed inderdaad deze kloof tussen theorie en praktijk van Test Driven Development. Point Blank, Integendeel, het voldoet aan de beginselen van TDD;

Ik moet eerst zeggen dat Test Driven Development, met name het beginsel van de "eerste test", is een vrij “sexy” te ontwikkelen. Het kan zeker de software architectuur en verhindert ons het doen van bepaalde (kleine) fouten.
— Relatief vrije vertaling van over T. Brandt

Hij is daarom van mening TDD als een krachtig instrument – althans vanuit een louter academische. Maar het onmiddellijke resultaat is een twijfel;

De vraag is gewoon: tegen welke prijs?

Zoals vermeld, met uitzondering van T. Brandt en ik, vele andere mensen lijken te vragen, en de meest gestelde vraag is als volgt: Is dat het gebruik van unit tests doet ze echt betere software, en is dat de inspanningen om te investeren zijn ze realistisch?

Gecondenseerde, de vraag komt neer op een eenvoudige:

Het kostte me hoeveel de unit tests?

Vaak is de vraag gaat, dat hij die doet denken unit tests zijn te duur om consistent toepassen. Ik herinner me een discussie die ik over de waarde van een totaal testdekking had dan de theoretisch ideale. Gerapporteerde inspanningen om te zorgen zei ik “niet” op het moment.

Vanaf vandaag vind ik al deze vragen gesteld worden gewoon kwaad, want het is niet weten de kosten van de unit testen is het van belang, meer:

Hoe betaal ik het weglaten van unit tests?

En hier is mijn antwoord, geïllustreerd aan de hand van een concreet voorbeeld;

Een van mijn huidige projecten omvatten een groot aantal van gedistribueerde componenten. Ik ontdekte een fout in het ontwerp, waarin ik me genoodzaakt om refactoren beide klassen. Alle kostte me ongeveer 1 uur. Start unit tests? Over 30 tweede. 30 seconden, ontdekte ik dat sommige gedragingen waren niet zoals oorspronkelijk gepland. Het kostte me ongeveer 20 minuten voor correcties. Het schrijven van tests mij kost ongeveer 45min.
De balans is ongeveer twee uur.

Zonder unit tests, Ik zou waarschijnlijk niet direct opvallen dat sommige van de fouten. Ik had 1 tijd refactoring, over een meer of minder bepaalbare, zeker verdeeld over meerdere dagen, om de problemen verhelpen onopgemerkt bij het wisselen van. De kans dat deze keer veel verder gaat dan een uur is relatief hoog (debug “de hand”, recreëren voorwaarden in multi-threaded applicaties, enz.…).

Voor mijn part, Ik vind dat op een bepaalde tijd te berekenen (met proeven met betrekking tot een realistisch deel van de software – niet 100%) Interessanter is dat de navigatie in het donker zoals beoefend.

Experiment! ;)

Een paar NoSQL voor MariaDB

Logo de MariaDB

MariaDB een vork van MySQL

Een bericht bereikte mij erg blij om MariaDB, de vork veelbelovend MySQL. Met een zeer recente plegen in hun repository, MariaDB laat zich te ontspannen een klassieke relationele model kan. Met de introductie van dynamische kolommen (Vrije vertaling “Dynamische Column”) de volgende versie (5.3) Dus blijkbaar MariaDB een hint van NoSQL bevatten!

Een belangrijk doel bij de ontwikkeling werd gebruikt om deze kolommen te maken via SQL syntax Classic. Intern dynamische kolommen worden opgeslagen als BLOB (Binary Large Object).

Ter illustratie van de operatie kan dit nieuwe type, een klein voorbeeld:

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

Zoals je kunt zien, alles ziet eruit als een query geheel conventioneel, detailhandel kolom “attributs” dicht. In het voorbeeld, elk item heeft daarom conventionele data, over een veld “attributs”attributenen variabel aantal van de gegevens (NB: In tegenstelling tot de klassieke velden, input dynamische array heeft maar een nummer te pakken, maar blijkbaar hebben de ontwikkelaars nog niet om dat te veranderen).

Voor het maken van een item voor de kolom wordt daarom gebruiktCOLUMN_CREATE(), Te werken of te verwijderen van een item moet gebruik maken van de COLUMN_ADD() in een normaal gesprek UPDATE:

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

Het voorbeeld illustreert ook heel goed het gebruik van COLUMN_GET() die toegang biedt tot een kenmerk van de kolom. Er zijn ook Column_list() dat geeft de lijst van de dynamische kolommen aanwezig.

Als je ooit wilt deze nieuwe functie al proberen, jettez op uw compiler en repository de MariaDB; binaries beschikbaar zal zijn met versie 5.3 de MariaDB.

Derde partij componenten en unit tests

Software Testing - Een wetenschap

Ik lees net de studieSoftware Integrity Risk Report die werd uitgevoerd op verzoek van deCoverity. In grote lijnen de studie vrij veel vat het gevoel dat ik lang geleden; de gemiddelde ontwikkelaar is veel minder bezorgd over de kwaliteit van software van derden die integreert in een project dat de kwaliteit van zijn eigen code.

Op de cijfers, de studie zegt 90% van (330) Ontwikkelaars gebruik maken van derden bronnen (zij zijn vrij van copyright eigenaars of) in hun software. Tegens alleen door de buurt 40% Ontwikkelaars zeggen dat deze te maken geautomatiseerde tests op deze bronnen (meer nadelen 75% voor bronnen “home”). Het is hetzelfde (een paar procent) voor handmatig testen en integriteit (stress-testing/functional-testing).

Een zekere consensus bestaat omtrent de vertragingen te wijten aan slechte kwaliteit van derden-code; meer 140 Ontwikkelaars hebben gereageerd dat veel van de lancering vertragingen of herinnert waren te wijten aan problemen met de bronnen van derden.

Het laatste woord: TESTEZ! TESTEZ! TEST!

Linux in een browser

Voor een lange tijd dat we allemaal wisten dat JavaScript niet was daar om te vormen valideren (X)HTML en maak enig effect op de websites. Maar nu M. Fabrice Klok heeft weer toegeslagen met een demonstratie van’schaal!

Dit genie heeft inderdaad bereikt een x86 emulator in pure javascript! Ik bespaar u de technische details hier (ze zijn leesbaar op Site Fabrice Klok). Wholesale, JSLinux is een emulator 486, zonder FPU en MMX, maar met een memory management unit (MMU)complète!

Een ontwerp-functie (die het mogelijk maakte om deze te benutten) is het grootschalige gebruik van getypte arrays (specificatie door) die onlangs beschikbaar gekomen in de recente browsers (Chrome 11 en momenteel Firefox4, Opera wordt geanimeerd in te halen als mijn informatie correct is).

Betreffende de “distro” Linux geïnstalleerd in de demo, Het is behoorlijk compleet; kernel 2.6.20, Busybox, we, qemacs en een compiler C (TinyCC, Ik had de vreugde van het proberen voor de eerste keer =)

Op deze, Ik laat je zelf ontdekken het wonder: JSLinux (de pagina duurt een paar seconden te laden)

Installeer Mono 2.10 CentOS met Yum

En ik ben weer terug met een beetje knutselen Linux: Installeer Mono 2.10 op CentOS (5.6 voor een keer).

Paar uur zoeken op het net heb ik altijd hebben gebracht tot hetzelfde resultaat; bouwen vanaf de bron… en met de mooie lijst van afhankelijkheden, niets erg grappig… de oplossing: breken een klein hoofdje!

Lezen

Te herstellen SSL prive-sleutels verloren!

Het experiment’ Ik beschrijf vandaag heel scherp, vooral gezien het onderwerp!

Eerste verhaal: j’ai malencontreusement effacé, of liever, vervangen de private sleutel wordt gebruikt voor SSL-codering op een van mijn servers. Wetende dat zonder deze sleutel de server heeft lopen nogmaals opgestart!

Wat me gered? Het feit dat Apache laadt het gehele bestand in het geheugen! Ik had kunnen doen een dump van de heap / stack proces apache2 zoekopdracht…. of kijk voor 2 uur op Google naar de volgende kleine tool te vinden

Lezen

HP Color LaserJet 2600n door W7

Hallo iedereen; dat is het grote nieuws; Ik ben nu bij Windows-gebruikers 7 (3weken nu) en tamelijk tevreden. Afgezien van twee kleine pilot-uitval (nu opgelost) niets mis, met dien verstande dat de HP Laser printer (CLJ2600n) dat is mijn moeder vroeg me een klein konijn vanmorgen toen ik wilde gebruiken:

Infact Ik dacht dat alles ging goed te werken voor het eerst – het werkte op Vista – maar blijkbaar de stuurprogramma's voor dit netwerk printer is niet langer op Windows Update voor W7, en HP biedt slechts een versie “Plug and Play” op hun site (aldus: Support pagina voor de HP 2600n) die bedoeld is om de functie via USB – althans officieel.

Lezen

7 Google trucs die je leven kan redden!

Iedereen maakt gebruik van Google (met enkele uitzonderingen…) als een zoekmachine, maar wie wist dat men kan Google gebruiken om de definitie van een woord te vinden, Bekeerling Euro in het Bulgaars Levs, of het zoeken beperken tot informatie tussen bepaalde data?

Aantal “Cheats” Google, die goed kan nuttig zijn voor de!

Lezen

jQuery: CSS Transformaties geanimeerde Opera 10.50

Ik ontdekte enige tijd geleden transformaties CSS eerste beschikbaar op WebKit (de rendering engine achter Safari en Google Chrome), werd vervolgens toegevoegd Firefox, en meest recentelijk met Opera versie 10.50.

Zoals altijd zijn de implementaties zijn verschillende (laat staan ​​Internet Explorer die niet hen te ondersteunen op alle…) maar het script Zachstronaut (een “HotPatch” jQuery infact, het toevoegen van onroerend goed transformeren de functie $.css() en draaien en schaal aan $.Bezield()) goed gewerkt in Firefox en WebKit…

Helaas is de uitvoering van CSS transformaties Opera retourneert geen waarde “leesbaar” maar een datamatrix, waarvoor ik nog niet gevonden documentatie. Dus ik nam een ​​paar omwegen, en via de functie getComputedStyle() Ik was in staat om de nodige halen om de animatie op Opera draaien.

De gewijzigde versie van het script is aldus (Je zal een voorbeeld ook voor degenen die niet weten CSS transformaties).

LMGTFY.com, of “hoe om hulp te zoeken?”

Als je de pech te besteden “geek” (of deskundige “Nieuwe technologieën” – te politiek correct)vinden we vaak ons het spelen van de hotline voor vrienden en andere kennissen. De meeste van de tijd die we nog hebben is gestart met een zoekmachine.

La science "Google"

Wetenschap Google"

Om ons te helpen, mensen achter LMGTFY, voor Laat me google dat voor U, hebben hun site; u een zoekopdracht, en de site zal een “animatie” die laat zien hoe hij moet kijken met Google. U stuurt de link naar je vriend en je laat hem te leren…

Ik vond een leuk idee – Veel plezier ;)

PS: Voor fans van de logo's van Google: Les Google Doodles (is de officiële verzameling van alle thematische logos :P )