Udgifter til unit test

Test af enheder er et tilbagevendende tema for mig de sidste uger; mellem at tale om StackOverflow og andre fora og de forsøg, som jeg skriver for to igangværende projekter, Jeg spurgte et par spørgsmål om de faktiske omkostninger ved unit test.

Dette er især en artikel af Thomas Brandt (Tysk: “TDD in der (min) Praksis - ønske og virkelighed”) der fik mig til at tænke alvorligt. Brandt beskriver i sin artikel ganske godt faktisk denne kløft mellem teori og praksis af Test Driven Development. Blankt, Snarere er det overholder principperne om TDD;

Jeg må først sige, at Test Driven Development, især princippet om "første test", er en temmelig “sexet” udvikle. Det kan helt sikkert forbedre software-arkitektur og forhindrer os i at gøre visse (små) fejl.
— Relativt fri oversættelse af om T. Brandt

Han mener derfor, TDD som et stærkt værktøj – i hvert fald fra en rent akademisk. Men det umiddelbare resultat er en tvivl;

Spørgsmålet er ganske enkelt: til hvilken pris?

Som nævnt, undtagen T. Brandt og jeg, mange andre mennesker synes at spørge, og på de oftest stillede spørgsmål er som følger: Er, at anvendelse af unit test er hun virkelig bedre software, og er, at indsatsen for at investere er de realistiske?

Kondenseret, Spørgsmålet kan koges ned til en simpel:

Det kostede mig, hvor meget de unit test?

Ofte spørgsmålet involverer, at han, der rejser synes unit test er for dyrt at anvende konsekvent. Jeg husker en diskussion jeg havde om værdien af ​​et samlet test dækning ud over det teoretiske ideal. Indberettet bestræbelser på at give sagde jeg “ikke” på det tidspunkt.

Som i dag jeg tror, ​​at alle disse spørgsmål bliver spurgt simpelthen ondt, fordi det ikke er kender omkostningerne ved test af enheder er vigtig, mere:

Hvordan betaler jeg Udeladelsen af ​​unit test?

Og her er mit svar, illustreret ved hjælp af et konkret eksempel;

En af mine igangværende projekter omfatter en lang række af distribuerede komponenter. Jeg opdagede en fejl i forslaget, som tvang mig til at refactor begge klasser. Alle tog mig om 1 time. Lancering unit test? Om 30 sekund. 30 sekund, jeg opdagede, at nogle former for adfærd var ikke som oprindelig planlagt. Det tog mig omkring 20 minutter for korrektioner. Skrivning test koster mig omkring 45min.
Balancen er omkring to timer.

Uden unit test, Jeg ville sikkert ikke mærke nogle af de fejl omgående. Jeg ville have haft 1 tid refactoring, over en mere eller mindre kan opgøres, sikkert spredt over flere dage, at løse de problemer gå ubemærket hen, når du skifter. Sandsynligheden for, at denne gang går langt ud over en time er forholdsvis høj (debug “hånd”, genskabe betingelserne i multi-threaded applikationer mv…).

For mit vedkommende, Jeg synes, at for at beregne et bestemt tidspunkt (der prøver, der dækker en realistisk del af softwaren – ikke 100%) mere interessant er, at sejlads i mørke, som det praktiseres.

Eksperiment! ;)

Et par NoSQL for MariaDB

Logo de MariaDB

MariaDB en gaffel af MySQL

En meddelelse nåede mig meget glade for at MariaDB, gaflen meget lovende MySQL. Med en nylig begår i deres repository, MariaDB lader sig slappe en klassisk relationel model kan. Med indførelsen af ​​dynamiske kolonner (Fri oversættelse “Dynamisk kolonne”) den næste version (5.3) Så tilsyneladende MariaDB at indeholde et strejf af NoSQL!

Et primært mål i udvikling blev brugt til at gøre disse kolonner via SQL-syntaks Classic. Internt dynamiske kolonner er gemt som BLOB (BLOB'et).

For at illustrere anvendelsen kan denne nye type, et lille eksempel:

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

Som du kan se, alt ligner en forespørgsel helt konventionel, detail kolonne “attributs” tæt. I eksemplet, har hver indgang derfor konventionelle data, over et felt “attributs” soattributterder et variabelt antal af data (NB: i modsætning til de klassiske områder, input dynamisk array har kun ét nummer løse, men tilsyneladende udviklerne har endnu ikke ændre det).

Hvis du vil oprette en post for den kolonne benyttes derforCOLUMN_CREATE(), At opdatere eller slette en post skal bruge COLUMN_ADD() i et normalt opkald UPDATE:

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

Eksemplet illustrerer også ganske godt brug af COLUMN_GET() der giver adgang til en attribut i kolonnen. Der er også COLUMN_LIST() der returnerer en liste over de dynamiske kolonner til stede.

Hvis du nogensinde ønsker at prøve denne nye funktion, der allerede, jettez på din compiler og repository de MariaDB; binære filer vil være tilgængelige med version 5.3 Den MariaDB.

Tredjepart komponenter og unit test

Softwaretest - Være en videnskab

Jeg har lige læst undersøgelsenSoftware Integrity risikorapport som blev gennemført på anmodning afCoverity. Stort set undersøgelsen stort set opsummerer en følelse, jeg for længe siden; den gennemsnitlige udvikleren er langt mindre bekymret over kvaliteten af ​​tredjeparts software, der integrerer ind i et projekt, at kvaliteten af ​​sin egen kode.

På tallene, Undersøgelsen siger 90% af (330) Udviklere bruger tredjeparts kilder (de er fri af ophavsrettigheder eller) i deres software. Ulemper kun med omkring 40% Udviklere siger, at disse gør automatiserede test på disse kilder (mere ulemper 75% for kilder “hjem”). Det er det samme (et par procent) til manuel test og integritet (stress-testing/functional-testing).

En vis enighed om forsinkelser på grund af dårlig kvalitet tredjeparts kode; mere 140 Udviklere har svaret, at en stor del af lanceringen forsinkelser eller minder skyldtes problemer med tredjeparts kilder.

Det sidste ord: TESTEZ! TESTEZ! TEST!

Linux i en browser

I lang tid vi alle vidste, at JavaScript ikke var der til at validere formularer (X)HTML og gøre nogle effekt på hjemmesider. Men nu M. Fabrice Bellard har ramt igen med en demonstration af’skala!

Dette geni har faktisk opnået en x86 emulator i ren javascript! Jeg vil spare dig de tekniske detaljer her (De kan læses på Site Fabrice Bellard). Engros, JSLinux er en emulator 486, uden FPU og MMX, men med en hukommelse ledelse enhed (MMU)komplet!

Et design feature (som gjorde det muligt at udnytte denne) er den udstrakte brug af indtastede arrays (specifikation ved) der for nylig er blevet tilgængelige i de seneste browsere (Chrome 11 og i øjeblikket Firefox4, Opera er livlig at indhente, hvis mine oplysninger er korrekte).

Om “distro” Linux installeret i demo, Det er temmelig komplet; kerne 2.6.20, BusyBox, vi, qemacs og en C compiler (TinyCC, Jeg havde den glæde at forsøge for første gang =)

På denne, Jeg vil lade dig opdage for dig selv spekulerer: JSLinux (den side tager et par sekunder at indlæse)

Installer Mono 2.10 CentOS med YUM

Og jeg er tilbage med en lidt lappeløsninger Linux: Installer Mono 2.10 på CentOS (5.6 for en gangs skyld).

Få timer efter at søge på nettet, jeg har altid bragt til det samme resultat; bygge fra kildekode… og med pæn liste af afhængigheder, Intet meget sjovt… løsningen: bryde en lille lille hoved!

Læs mere

Gendanne SSL private nøgler tabt!

Eksperimentet’ Jeg beskriver i dag, er ganske skarp, især i betragtning af emnet!

Første historie: j’ai malencontreusement effacé, eller rettere, erstattet af den private nøgle, der bruges til SSL-kryptering på en af mine servere. Vel vidende, at uden denne nøgle serveren ikke gå igen, når genstartes!

Hvad reddede mig? Den omstændighed, at Apache indlæser hele filen ind i hukommelsen! Jeg kunne have gjort en dump af heap / stakken proces Apache2 søgning…. eller kigge efter 2 timer på Google for at finde følgende lille værktøj

Læs mere

HP Color LaserJet 2600n af W7

Hej alle; det er de store nyheder; Jeg er nu blandt Windows-brugere 7 (3uger nu) og nogenlunde tilfreds. Bortset fra to små pilot udfald (nu løst) noget galt, bortset fra, at HP Laser printer (CLJ2600n) det er min mor spurgte mig en lille kanin i morges, da jeg ønskede at bruge:

Infact Jeg troede alt skulle fungere godt første gang – det virkede på Vista – men tilsyneladende driverne til dette netværk printer er ikke længere på Windows Update til W7, og HP tilbyder kun en version “Plug and Play” på deres hjemmeside (derved: Støtte side til HP 2600n) som er bestemt til at fungere via USB – i hvert fald officielt.

Læs mere

7 Google tricks, der kan redde dit liv!

Alle bruger Google (med nogle få undtagelser…) som en søgemaskine, men hvem vidste, at man kan bruge Google til at finde definitionen på et ord, omregne euro i bulgarsk levs, eller begrænse søgningen til oplysninger mellem visse datoer?

Nogle “Bedrager” Google, som meget vel kan vise sig nyttige for!

Læs mere

jQuery: CSS Transformations animerede Opera 10.50

Jeg opdagede for nogen tid siden omdannelser CSS første tilgængelige på WebKit (Den rendering engine bag Safari og Google Chrome), blev derefter lagt Firefox, og senest med Opera version 10.50.

Som altid, de implementeringer er forskellige (endsige Internet Explorer, der ikke understøtter dem alle…) men scriptet Zachstronaut (en “hotpatch” jQuery infact, tilføje ejendomme omdanne funktionen $.css() og rotere og skala til $.Animerede()) fungeret godt i Firefox og WebKit…

Desværre gennemførelsen af CSS Transformations Opera ikke returnerer en værdi “læsbar” men et data matrix, som jeg ikke har fundet dokumentation. Så jeg tog et par omveje, og gennem funktionen getComputedStyle() Jeg var i stand til at hente det nødvendige for at køre animation på Operaen.

Den ændrede version af scriptet er derved (Du vil også finde et eksempel for dem, der ikke kender CSS transformationer).

LMGTFY.com, eller “hvordan man kan søge hjælp?”

Hvis du er så uheldige at tilbringe så “Geek” (eller ekspert “Ny Teknologi” – at være politisk korrekt)vi ofte befinder os at spille hotline for venner og andre bekendte. Det meste af den tid, vi har tilbage har lanceret en søgemaskine.

La science "Google"

Videnskab Google"

For at hjælpe os, Personerne bag LMGTFY, for Lad mig google det for dig, har skabt deres hjemmeside; du indtaster en søgning, og siden vil generere en “animation” som viser, hvordan han skal se med Google. Du sender linket til din ven og du lader det lærer…

Jeg har fundet en god idé – Have det sjovt ;)

PS: For fans af Google logoer: les Google Doodles (er den officielle samling af alle tematiske logoer :P )