[Plone-IT] "funnyTest"

Massimo Azzolini massimo.azzolini a gmail.com
Lun 31 Mar 2008 12:51:10 UTC


Ciao a tutti,

visto che tutti raccontano quello che hanno fatto, anch'io vi narro la mia
allegra esperienza di 3 giornate con Sylvain Viollon su funittest.

Funittest è un framework per realizzare test funzionali. La home del
progetto è:
http://www.openplans.org/projects/funittest/project-home
ed è portato avanti da Maik Röder e dallo stesso Sylvain.

Personalmento lo trovo molto efficace come alternativa "programmatica"
all'utilizzo di SeleniumIDE. Mentre selenium prevede per ogni test la
ripetizione di tutta una serie di passi, funittest ti permette di
strutturare logicamente il test.

Il framework è organizzato concettualmente in varie parti:
- il test (suddiviso in step riraggruppabili in vari modi)
- gli scenari (che possono essere utilizzati per comporre i passi nei test,
es. changeLabelContent)
- il livello logico (es. clickOnLabel, editLabel, saveLabel)
- il livello fisico (es. interpreter.clickAt('//span[text()="label"]'), ecc.
)
- gli stati (fondamentalmente è dove si fanno le assert)
- i contenuti (vedi sotto)

la cosa interessante è che si basa anch'esso su selenium, ma, potendo creare
strati logici astratti (a più livelli: test, scenari, logiche) ben separati
da quello fisico, è possibile:
- creare una sorta di "libreria" di possibili test/scenari/logiche
- ricomporre e riusare quanto già "testato" in precedenza
- lanciare test mirati su contesti specifici

Altro punto molto arguto è la presenza di un'area di contenuti. Sempre
confrontando 'Selenium' non abbiamo più la necessità di ripetere più e più
volte la stessa stringa in più punti del test, ma addirittura utilizzare,
udite udite, variabili :)
per farla breve, è possibile creare dizionari di contenuti, registrarli nel
sistema e riusarli in seguito. Puoi fare cose del tipo:
for c in contents.keys()
   self._c = contents.get(c)
   self.expect_ok('1','2')

ovvero:
per ogni contenuto possibili, ottienilo e fai girare il test (composto di
due passi) su ognuno di essi.

Concludo segnalando:
http://www.openplans.org/projects/funittest/making-an-egg-with-your-own-tests
(fa sempre parte della documentazione)
Si tratta della possibilità di creare un funittest direttamente via paster
(va aggiornato ovviamente ZopeSkel:
http://svn.plone.org/svn/collective/ZopeSkel/branches/funittest-templates/)
all'interno del quale scrivere i propri test riusando le "librerie" scritte
per Plone ( o in generale da altri)

C'è ovviamente una certa curva iniziale di apprendimento: non è tutto così
semplice da capire al volo.
Sto vedendo però che Sylvain scrive documentazione proprio in questi giorni:
i funittest template li ha iniziati mercoledi fissati sabato sera e ora sono
disponibili con tanto di documentazione.

Personalmente ho riscontrato che, una volta entrati nel meccanismo, e molti
di voi saranno più bravi di me, è tutto molto naturale e si procede felici.

Saluti a tutti

Max
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20080331/c92ddfb7/attachment-0001.html>


Maggiori informazioni sulla lista Plone-IT