FitNesse
FitNesse è un server web su interfaccia wiki per facilitare la fase di test e verifica nello sviluppo del sotware in vari linguaggi di programmazione.
Esso è basato suk Framework for Integrated Test, strumento a sorgente aperto per eseguire in proprio e automatizzare test del codice, sviluppato da Ward Cunningham, ed è progettato sia per eseguire acceptance test (in cui il buon fine del collaudo e l'accettazione del prodotto da parte del cliente finale, è condizione di un pagamento contrattuale e di un passaggio di proprietà), così come per l' unit testing di singole unità software, in cui facilita una descrizione dettagliata e leggibile del funzionamento del sistema.
FitNesse permette agli utenti anche non esperti di un sistema di inserire un input in un formato speciale, accessibile anche ai non-programmatori. Questo input vine e interpretato da FitNesse e i test sono creati automaticamente, eseguiti e il risultato viene mostrato all'utente, in tempi estremamente rapidi. Lo sviluppatore del sistema da testare necessita di un certo supporto, per le cosidette fixtures.
FitNesse è scritto in Java (da Robert Cecil Martin e altri). Il programma inizilmente supportava solamente Java, ma nel twmpo sono state aggiunte diverse altre versioni per altri linguaggi di programmazione (C++, Ruby, Delphi, C#, etc.).
Principi di FitNesse
FitNesse come metodo di test
FitNesse wra stato inizialmente progettato come un interfaccia altamente usabile nell'ambito della famiglia di FitNesse. La sua intenzione era quella di supportare una metodologia agile di black-box testing, vale a dire un collaudo finale del software, senza conoscere ed entrare nel dettaglio della sua composizione, che si conclude con una accettazione o un rifiuto. In questo tipo di approccio, i collaudatori funzionali collaborano con i programmatori software per sviluppare uno strumento di testing dedicato.
Il collaudatore funzionale è responsabile di progettare i test dal punto di vista funzionale (output che si ottiene in risposta a un certo input) e di implementarli in FitNesse, mentre lo sviluppatore software ha il compito di connettere lo strumento di testing di FitNesse col sistema sotto esame, in modo tale che FitNesse possa eseguire il teste e comparare il risultato ottenuto con quello atteso.
L'idea sottostante descritta nel libro Fit for Developing Software[1] è la seguente: una collaborazione forzata fra sviluppatori e tester migliorerà la comprensione reciproca del funzionamento del sistema e la definzione dei requisiti, costringendo due gruppi a organizzarsi in un linguaggio comune, mentre imparano a comunicare insieme.
FitNesse come uno strumento di testing
I test funzionali in FitNesse sono descritti come una sorta di coppia di input e output. Queste coppie sono espresse graficamente mediante una tabella di decisione (n campi con i valori per ogni variabile di input, e una colonna per l'azione decisa risultante). FitNesse supporta numerose di queste tabelle, spaziando da tabelle in cui la decisione è un campo testuale, a tabelle che eseguono query verso altre tabelle che eseguono degli script di verifica. La forma più generale è una tabella completamente vuota che può essere interpretata a piacere dal progettista. Tutti i test comunque sono espressi in un qualche tipo di tabella.
FitNesse focalizza tester e sviluppatori nella creazione di test di qualità, senza perdersi nel meccanismo di questi test, perché: creazione agevole di tabelle, traduziine delle tabelle in chiamate al sistema sotto test, documentazione facile e flessibile dei test. A tale scopo, FitNesse si avvale di wiki che notoriamente consente una rapida creazione di pagine HTML e l'espressione di tabelle di qualsiasi genere, evitando che il loro contenuto resti meramente testuale, e nello stesso tempo viene limitato a contwnuto di tipo alfanumerico che facilmente puo essere mappato all'interno della chiamata a un blocco di software. La tabella di testing viene scritta in una pagina wiki, permettedo al tester funzionale di includere facilmente testo descrittivo (non codice di programmazione).
FitNesse come uno strumento software
FitNesse è scritto in java e viene scaricato come un singolo file eseguibile in formato .jar. L'eseguibile comprende un motore wiki, un server web non visibile all'utente, lo strumento di testing e tutte le risorse (immagini, linguaggio di mark-up come HTML o XHTML che contiene la semqtica della pagina web, separato dal linguaggio -non presente - che definisce come si visualizza il report finale, quale CSS o XLST; ecc.) richiesti per creare un sito web nello stile proprio di FitNesse.
- ^ Rick Mugridge, Ward Cunningham, Fit for Developing Software: Framework for Integrated Tests, ed. pranctice Hall, Giugno 2005