|
E' cosa risaputa che "a causa" di CPAN programmare in Perl diventa rapidamente poco interessante: uno ha un'idea, gli pare buona, non vede l'ora di trafficare un po' per avere un oggettino da mostrare e provare, poi in un modo o nell'altro scopre che quell'idea la ha già avuto qualcun altro, e che questo qualcuno l'ha messa su CPAN.
La storia che segue è quindi isomorfa a tante altre, ma per un po' di motivi, mi pare particolarmente interessante.
Uno dei miei chiodi fissi, ultimamente, è il test delle applicazioni: sono assolutamente convinto che i test siano uno strumento utile e che tendano a far guadagnare tempo durante lo sviluppo, purtroppo però non sono abbastanza bravo da scriverli e mantenerli in maniera sufficientemente veloce. Inoltre, finché si tratta di scrivere i test per i moduli di backend di un'applicazione, non c'è problema, ma non mi è molto chiaro come testarne l'interfaccia utente.
Questa sera, dunque, mi è venuto in mente di provare a vedere WWW::Mechanize, che pare promettere bene. In effetti l'interfaccia del modulo è piuttosto intuitiva, e pare semplice mettere a punto degli script che girino per l'applicazione e verifichino i risultati ottenuti. Semplice, ma lungo e tedioso.
Enters WWW::Mechanize::Shell.
Questo modulo implementa una sorta di shell che mima un browser web. Ecco un esempio di interazione:
# Search for a term on Google
get http://www.google.com
value q "Corions Homepage"
click btnG
La cosa bella è il comando script di WWW::Mechanize::Shell, che trasforma la sessione appena intercorsa in uno script Perl basato su WWW::Mechanize. Comincia a frullarvi qualche rotella? Proseguo.
Per preparare i test per la propria applicazione, basta passare un po' di tempo davanti a WWW::M::S e salvare, volta per volta, le sessioni che andranno a costituire l'insieme di test dell'applicazione (ad esempio: login con password sbagliata, login con password corretta, inserimento dati, inserimento dati incompleti...). E tutto questo lavoro si dovrà fare una volta sola.
Bello, ma scomodo. Usare una shell al posto di browser e mouse, almeno per quanto riguarda le applicazioni web, è scomodo. E qui salta fuori la mia idea (e come vi ho già anticipato, su CPAN c'è già).
Perchè non fare in modo che sia l'applicazione stessa, mentre viene usata, a produrre lo script per WWW::Mechanize? La cosa avrebbe il considerevole vantaggio di permettere ai tester (che in un mondo ideale non coincidono con gli sviluppatori) di includere nel ticket di segnalazione di un errore i passi esatti per riprodurlo (modulo lo stato particolare di altri pezzi del sistema, ovviamente). In altri termini, si scriverebbe una parte importante del codice di test direttamente usando l'applicazione.
Stavo pensando a come implementare questa cosa, quando mi sono imbattuto in HTTP::Recorder, di Linda Julien. E' implementato in una maniera diversa da quella che cominciava a farsi strada nella mia mente, però pare molto efficace, e facile da usare. Enjoy.
La gloria, per me, arriverà un'altra volta :)
Inviato da larsen il 01.04.04 00:07
Ti è piaciuto questo articolo? Iscriviti al feed!
|