Il costo del test di unità

test di unità è un tema ricorrente per me in queste ultime settimane; tra parlando StackOverflow e altri forum e le prove che scrivo per due progetti in corso, Ho chiesto alcune domande circa il costo effettivo del test di unità.

Questo è particolarmente un articolo di Thomas Brandt (Tedesco: “TDD in der (il mio) Pratica - desiderio e realtà”) che mi ha fatto pensare seriamente. Brandt descrive nel suo articolo abbastanza bene infatti questo divario tra teoria e pratica del Test Driven Development. Di punto in bianco, Piuttosto, essa aderisce ai principi del TDD;

Devo dire innanzi tutto che Test Driven Development, in particolare il principio della "prima prova", è piuttosto “sexy” sviluppare. Si può certamente migliorare l'architettura del software e ci impedisce di portare a termine determinate (piccoli) errori.
— traduzione relativamente libera di circa T. Brandt

Si ritiene, pertanto, TDD come un potente strumento – almeno da un sistema puramente accademico. Ma il risultato immediato è un dubbio;

La questione è semplicemente: a che prezzo?

Come già detto, ad eccezione di T. Brandt e io, molte altre persone sembrano chiedere, e la domanda più frequente è la seguente: È che l'uso di test di unità che fa software davvero meglio, ed è che gli sforzi per investire siano realistiche?

Condensato, la questione si riduce ad un semplice:

Mi è costato quanto l'unità di test?

Spesso la questione coinvolge, che chi rileva che i test unitari sono troppo costosi, di applicare uniformemente. Mi ricordo di una discussione che ho avuto circa il valore di una copertura totale di prova, oltre l'ideale teorico. Segnalato sforzi per fornire ho detto “non” al momento.

Ad oggi penso che tutte queste domande vengono poste semplicemente male, perché non si conosce il costo del test di unità è importante, di più:

Come faccio a pagare l'omissione di test di unità?

Ed ecco la mia risposta, illustrato con un esempio concreto;

Uno dei miei progetti attuali comprendono un gran numero di componenti distribuiti. Ho scoperto un errore nel progetto, che mi ha costretto a effettuare il refactoring di entrambe le classi. Tutti mi ci sono voluti circa 1 ora. Lancio di unit test? Informazioni su 30 secondo. 30 secondo, ho scoperto che alcuni comportamenti non erano, come inizialmente previsto. Mi ci sono voluti circa 20 minuti per le correzioni. Scrivere i test mi è costato circa 45 min.
Il bilancio è di circa due ore.

Senza unit test, Io probabilmente non si sarebbe accorto alcuni degli errori immediatamente. Avrei avuto 1 tempo di refactoring, su un più o meno determinabile, certamente su più giorni, per correggere i problemi di passare inosservati quando si cambia. La probabilità che questa volta va ben oltre un'ora è relativamente elevato (debug “mano”, ricreare le condizioni in applicazioni multi-threaded, ecc…).

Per parte mia, Trovo che per calcolare un tempo definito (prove hanno che coprono una parte realistica del software – non 100%) più interessante è che la navigazione nel buio come praticato.

Esperimento! ;)

A pochi NoSQL per MariaDB

Logo de MariaDB

MariaDB un fork di MySQL

Un messaggio ha raggiunto me molto felice di MariaDB, la forcella molto promettente MySQL. Con una recentissima commettere nei loro repository, MariaDB si permette di rilassarsi un classico modello relazionale può. Con l'introduzione di colonne dinamiche (Libera traduzione “Dynamic Colonna”) la prossima versione (5.3) Quindi, apparentemente MariaDB a contenere un pizzico di NoSQL!

Un obiettivo primario di sviluppo è stato usato per fare queste colonne attraverso una sintassi SQL Classic. Internamente le colonne dinamiche vengono memorizzati come BLOB (Binary Large Object).

Per illustrare l'operazione può questo nuovo tipo, un piccolo esempio:

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

Come si può vedere, tutto ciò che appare come una query interamente convenzionale, colonna di vendita al dettaglio “attributs” chiudere. In questo esempio, ogni voce ha dati quindi convenzionale, su un campo “attributs”attributitiene un numero variabile di dati (NB: a differenza dei campi classici, matrice di input dinamico ha un solo numero di indirizzamento, ma a quanto pare gli sviluppatori hanno ancora cambiare questa).

Per creare una voce per la colonna viene quindi utilizzatoCOLUMN_CREATE(), Per aggiornare o cancellare una voce deve utilizzare il COLUMN_ADD() in una normale chiamata UPDATE:

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

L'esempio illustra anche abbastanza bene l'uso di COLUMN_GET() che fornisce l'accesso a un attributo della colonna. Ci sono anche Column_list() che restituisce l'elenco delle colonne dinamico present.

Se mai voglia di provare questa nuova caratteristica già, jettez sul compilatore e repository de MariaDB; i binari saranno disponibili con la versione 5.3 The MariaDB.

componenti di terze parti e unit test

Software Testing - Essere una scienza

Ho appena letto lo studioSoftware Integrity Risk Report che è stata condotta su richiesta delCoverity. In linea di massima lo studio di un buon riassunto una sensazione che tempo fa; lo sviluppatore medio è molto meno preoccupato per la qualità del software di terze parti che si integra in un progetto che la qualità del proprio codice.

Sulle cifre, lo studio dice 90% di (330) Gli sviluppatori utilizzano fonti di terze parti (sono liberi di proprietari di copyright o) nei loro software. Cons solo di circa il 40% Gli sviluppatori dicono che questi fanno i test automatici su queste fonti (più cons 75% per le fonti “home”). E 'lo stesso (una piccola percentuale) per il test manuale e l'integrità (stress-testing/functional-testing).

Un certo consenso esiste per quanto riguarda i ritardi dovuti alla scarsa qualità del codice di terze parti; di più 140 Gli sviluppatori hanno risposto che gran parte dei ritardi di lancio o richiami sono stati dovuti a problemi con le fonti di terze parti.

L'ultima parola: TESTEZ! TESTEZ! TEST!

Linux in un browser

Per molto tempo sapevamo tutti che JavaScript non era lì per convalidare le forme (X)HTML e fare qualche effetto sui siti web. Ma ora M. Fabrice Bellard ha colpito ancora con una dimostrazione di’scala!

Questo genio ha infatti raggiunto un emulatore x86 in javascript puro! Vi risparmierò i dettagli tecnici qui (esse sono leggibili su Sito Fabrice Bellard). Vendita all'ingrosso, JSLinux è un emulatore 486, senza FPU e MMX, ma con una unità di gestione della memoria (MMU)complète!

Un disegno caratteristica (che ha permesso di sfruttare questa) è l'ampio uso di matrici tipizzate (disciplinare di produzione) che hanno recentemente resi disponibili nei browser recenti (Chrome 11 e attualmente Firefox4, Opera essere vivace raggiungere se le mie informazioni sono corrette).

Per quanto riguarda “distro” Linux installato nella demo, essa piuttosto è completo; kernel 2.6.20, BusyBox, noi, qemacs e un compilatore C (TinyCC, Ho avuto la gioia di provare per la prima volta =)

Su questo, Vi lascio scoprire da soli la meraviglia: JSLinux (la pagina richiede alcuni secondi per caricare)

Installazione di Mono 2.10 CentOS con YUM

E io sono tornato con un po 'di bricolage Linux: Installazione di Mono 2.10 su CentOS (5.6 per una volta).

Poche ore di ricerca in rete ho sempre portato allo stesso risultato; la compilazione da sorgenti… e con la bella lista delle dipendenze, niente di molto divertente… la soluzione: rompere una testa piccola piccola!

Leggere

Ripristino configurazione di chiavi SSL private perso!

L'esperimento’ Io sto descrivendo oggi è abbastanza forte, soprattutto in considerazione del tema!

Prima storia: Per sbaglio ho cancellato, o meglio, ha sostituito la chiave privata utilizzata per la cifratura SSL su uno dei miei server. Sapendo che senza questa chiave il server non camminare di nuovo una volta riavviato!

Ciò che mi ha salvato? Il fatto che Apache carica l'intero file in memoria! Avrei potuto fare un dump della memoria heap / stack processo apache2 ricerca…. o per cercare per 2 ore su Google per trovare il seguente strumento poco

Leggere

HP Color LaserJet 2600n da W7

Ciao a tutti; questa è la grande novità; Ora sono tra gli utenti Windows 7 (3settimane) e abbastanza soddisfatto. Ad eccezione di due piccole interruzioni pilota (ora risolto) nulla di male, salvo che la stampante laser HP (CLJ2600n) Questa è la mia madre mi ha chiesto un piccolo coniglio questa mattina quando ho voluto usare:

Infatti ho pensato che tutto stava andando a lavorare bene la prima volta – ha funzionato su Vista – ma a quanto pare i driver per questa stampante di rete non è più in Windows Update per W7, e HP offre solo una versione “Plug and Play” sul loro sito (in tal modo: pagina di supporto per la HP 2600n) che è concepito per funzionare via USB – almeno ufficialmente.

Leggere

7 trucchi di Google che può salvare la vita!

Ognuno utilizza Google (con alcune eccezioni…) come un motore di ricerca, ma che sapeva che si può usare Google per trovare la definizione di una parola, convertire in euro Levs bulgaro, o limitare la ricerca alle informazioni tra alcune date?

Alcuni “Trucchi” Google, che potrebbe risultare utile per!

Leggere

jQuery: Trasformazioni CSS animato Opera 10.50

Ho scoperto qualche tempo fa trasformazioni CSS primo disponibile su WebKit (il motore di rendering alla base di Safari e Google Chrome), è stato poi aggiunto Firefox, e più recentemente con Opera versione 10.50.

Come sempre, le implementazioni sono diversi (per non parlare di Internet Explorer che non li supporta a tutti…) ma lo script Zachstronaut (un “hotpatch” infatti jQuery, l'aggiunta di proprietà trasformare la funzione di $.css() e ruotare come scala a $.Animato()) ha funzionato bene in Firefox e WebKit…

Purtroppo la realizzazione di trasformazioni CSS Opera non restituisce un valore “leggibile” ma una matrice di dati, per cui non ho trovato documentazione. Allora ho preso un paio di deviazioni, e tramite la funzione getComputedStyle() Sono stato in grado di recuperare il necessario per eseguire l'animazione su Opera.

La versione modificata dello script è in tal modo (Troverete anche un esempio per coloro che non conoscono le trasformazioni CSS).

LMGTFY.com, o “Come chiedere aiuto?”

Se sei sfortunato abbastanza da passare come “geek” (o esperto “tecnologia” – di essere politicamente corretto)spesso ci ritroviamo a giocare la hotline per gli amici e conoscenti di altre. La maggior parte del tempo che abbiamo ha lanciato un motore di ricerca.

La science "Google"

Scienza "di Google"

Per aiutare, persone dietro LMGTFY, per Let Me Google che per voi, hanno creato il loro sito web; si inserisce una ricerca, e il sito genera un “animazione” mostra come la ricerca con Google. Si invia il link per la vostra conoscenza e consentono di imparare…

Una bella idea credo – Divertire ;)

PS: Per i fan dei loghi di Google: Scarabocchi les Google (è la raccolta ufficiale di tutti i loghi tematici :P )