FitNesse: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m corretti errori di battitura
m corretti errori di battitura
Riga 6:
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 cosiddette ''fixtures''.
 
FitNesse è scritto in [[Java (linguaggio di programmazione)|Java]] (da [[Robert Cecil Martin]] e altri). Il programma inizialmente supportava solamente Java, ma nel twmpotempo sono state aggiunte diverse altre versioni per altri linguaggi di programmazione (C++, Ruby, Delphi, C#, etc.).
 
== Principi di FitNesse ==
Riga 19:
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, traduziinetraduzione 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 contwnutocontenuto di tipo alfanumerico che facilmente può essere mappato all'interno della chiamata a un blocco di software. La tabella di testing viene scritta in una pagina wiki, permettedopermettendo 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 [[estensione (file)|formato]] [[JAR (formato di file)|.jar]]. L'eseguibile comprende un [[Sotware wiki|motore wiki]], un server web [[sistema embedded|non visibile]] all'utente, lo strumento di testing e tutte le risorse (immagini, [[linguaggio di markup]] come [[HTML]] o [[XHTML]] che contiene la semqticasemantica della pagina web, separato dal linguaggio -non presente - che definisce come si visualizza il report finale, quale [[CSS]] o [[Extensible Stylesheet Language|XLST]]; ecc.) richiesti per creare un sito web nello stile proprio di FitNesse.
 
Durante l'esecuzione, FitNesse lancia un server web interno, che mostra le pagine testate sia in locale sul computer, che su Internet, e può girare ugualmente su un ''laptop'' oppure su una macchina server vera e propria.
Riga 38:
* il sistema che deve essere testato.
 
Il team di sviluppatori realizza due dicquestidi questi componenti: la pagina wiki e il ''fixture'' (più precisamente, produce anche il sistema sotto test, ma dal punto di vista del ''black-box testing'' produce solo due componenti). La pagina Wiki comprende alcuni tipi di tabelle di decisione che permettono di esprimere il test. Per esempio, la pagimapagina Wiki può descrivere il test per un componente (software o elettronico) che esegue delle divisioni:
 
{| classe="wikitable"
Riga 52:
|}
 
Il collegamento fra il motore di testing generico e il sistema oggetto di test, è realizzato da un bloxxobloco di codice Java, chiamato ''fixture''. In questo esempio, lo pseudo-codice relativo alla tabella di decisione soprastante, è il seguente:
 
L'associazione fra la pagina Wiki e il codice detto ''fixture'' avviene tramite una mappatura con semplice [[notazione a cammello]]. Questa mappatura si applica per tutte le intestazioni di tabella (e colonna), e serve a identificare il nome della [[Classe (informatica)|classe]] di ''fixture'' (es. ''Division component test'') e dei suoi [[metodo (programmazione)|metodi]] (''num'' e ''denom'').
Riga 64:
* il codice ''fixture'' lo assegna (copia) alla variabile "result".
 
Una intestazione di colonna chwche termina con un punto interrogativo (es. ''Result?'' ) viwnwviene intwepretatointerpretato come un valore che deve essere letto (restituito) dalla fixture, mentre le altre intestazioni sono interpretate come input per il codice ''fixture''. Le intestazioni di colonna della tabella di deciaionedecisione sono altrettanti metodi della fixture, letti in ordine da sinistra a destra.
 
=== Motori di testing ===
Riga 70:
 
==== FIT ====
FIT è il motore di testing intorno al quale FitNesse si è sviluppato inizialmente. Col tempo è divenuto molto di più di un motore di testing, è un ''framework'' metodologico per il testing, completo di funzionalità per l'invocazione dei test, interpretare le pagine wiki, e genwraregenerare le pagine di output.
 
==== SLIM ====
SLIM (Simply List Invocatiin Method) è un'alternativa a FIT, cui negli ultimi anni è migrato lo stesso team di sviluppatori di FitNesse. Il motore SLIM è una implementazione del protocollo Slim. Invece di combinare tutti gli elementi di una pagina wiki per il testing, il motore SLIM si concentra invece sulla chiamata del codice ''fixture''; esso si comporta come un server separato che viene chiamato da femotoremoto dal motore Wiki di FitNesse. L'interpretazione della pagina wiki e la generazione della pagina di risultato ora sono attività demandate al motore Wiki.
 
In questo modo, il codice Java della ''fixture'' viene semplicatosemplificato al livello di un ''[[Plain Old Java Object]]''. Questo tipo di ''fixture'' non richiedono nessun tipo di utilizzo o di estensioni delle classi, cosa semplifica e permette di focalizzare la progettazione del codice sulle chiamate del sistema sotto test nel modo più appropriato e semplice possibile. Esso inoltre consente l'[[ereditarietà multipla|ereditarietà]], permettendo agli sviluppatori la creazione di [[sottoclasse (informatica)|gerarchie]] di ''fixture'', dove necessario.
 
== Note ==