Creare Suite intelligenti con Selenium IDE

67 %
33 %
Information about Creare Suite intelligenti con Selenium IDE
Technology

Published on April 3, 2014

Author: StefanoTrojani

Source: slideshare.net

Description

come creare delle suite (test plan) intelligenti con Selenium ide? Una completa guida che parte dal concettuale per andare nel dettaglio tecnico (non troppo) che spiega un approccio testing strutturato, partendo dagli use case, ai test case.

Stefano Trojani

A volte i Test Plan che crei con Selenium IDE ti sembrano delle strade tortuose e pericolose come queste?

Segui questi consigli e camminerai in verdi praterie

 Le suite (o Test Plan) di Selenium Ide servono a testare differenti flussi di applicativi.  Ogni Suite è composta da tanti files.html (chiamati test case) che formano lo scheletro del test.  E qui ognuno ha la massima libertà di organizzare i Test Case come vuole.

Foto: La strade di Bombay E' possibile testare una funzionalità in un solo test case utilizzando il test plan per tanti flussi

Oppure è possibile spezzare una singola funzionalità in tanti test case Foto: deserto del Navada

Ma c'è un modo corretto per organizzare i test case in un test plan di Selnium IDE? Io vi propongo quello che ho adottato dopo aver fatto moltissime SUITE Foto: Una stradina in Francia

 Prima di tutto è necessario avere le idee chiare su che tipo di test vogliamo fare.  Prendo come esempio voler testare una WebMail (es: Gmail, Liberomail, Yahoomail...)

La butto la... ecco un po' di cose che potrebbero testare il servizio: mandate un po' di mail, create un po' di contatti in rubrica (cancellandone anche alcuni) e cambiate password....

Per progettare un Test Plan efficiente con Selenium è sempre utile affondare le radici nel mondo del Testing creando un Use Case di alto livello come traccia. Analizziamo nel dettaglio cosa dovremmo di testare:

Intanto quante mail mandiamo? Io suggerisco almeno 5 plan text e 5 con allegato. ... come si traduce in un Use Case (di alto livello) questa funzionalità? Use Case - invia mail 1) Utente fa login alla webmail 2) Utente compila una mail inserendo destinatario, oggetto e corpo del messaggio Alternate Flow 1 - Utente carica un allegato 3) Utente invia la mail 4) Utente fa Logout

Quanti ne creiamo? Io suggerisco almeno 7 e ne cancelliamo 2 ... come si traduce anche questo in un Use Case (di alto livello)? Use Case - crea contatto 1) Utente fa login alla webmail 2) Utente compila i dati di un contatto della rubrica inserendo destinatario, nome, cognome ed email 3) Utente Salva contatto Exceptional Flow 1 - Utente cancella contatto 4) Utente fa Logout

E per finire... cambiamo password! Io suggerisco anche di testare che la password sia stata cambiata con successo. Come si può fare una verifica del genere? Semplice, basterà fare login con la nuova password. Quindi lo Use Case sarà Use Case - cambia password 1) Utente fa login alla webmail 2) Utente va in preferenze a cambia Password 3) Sistema fa logout 4) Utente fa login alla webmail con la nuova password 5) Utente fa Logout

Parallelizziamo adesso i vari Use Case e vediamo cosa ne viene fuori: invio mail creazione contatti cambio password 1) Utente fa login alla webmail 2) Utente compila una mail A1 - Utente carica un allegato 3) Utente invia la mail 4) Utente fa Logout 1) Utente fa login alla webmail 2) Utente compila i dati di un contatto 3) Utente Salva contatto X1 - Utente cancella contatto 4) Utente fa Logout 1) Utente fa login alla webmail 2) Utente va in preferenze a cambia Password 3) Sistema fa logout 4) Utente fa login alla webmail con la nuova password 5) Utente fa Logout

Possiamo vedere che tutto sommato ci sono delle funzionalità aggregabili (come la login e la logout). Cerchiamo ora di tradurre gli Use Case (come funzionalità a se stanti) in Test Case, che poi riprenderemo in Selenium. Ecco cosa viene fuori... invio mail creazione contatti cambio password 1) login 2) invio mail (plan) 3) invio mail (attach) 4) logout 1) login 2) crea contatto 3) cancella contatto 4) logout 1) login 2) cambia password 3) logout 4) login (nuova pass) 5) logout

In questo modo abbiamo già un abbozzo dei Test Case che comporranno il Test Plan di Selenium. Cerchiamo adesso di aggregare tutti questi Test Case insieme in un unico flusso a cascata: prima invieremo le mail, poi creeremo i contatti ed infine cambiamo password. Quello che avremo sarà Test Plan Invio Mail 1) login 2) invio mail (plan) 3) invio mail (attach) Crea contatto 4) crea contatto 5) cancella contatto Cambia Password 6) cambia password 7) logout 8) login (nuova pass) 9) logout

Adesso non rimane che scrivere i vari Test Case in Selnese.

Adesso basta creare i files Test Case di Selenium che compongono il Test Plan. Attenzione perché dovranno avere un nome parlante compatibile con la funzionalità che svolge altrimenti non ci si capisce più niente). login.html tc01w2.html

Per scrivere il nome del file è buona regola usare la forma terza persona singolare applicata al verbo di quello che la funzionalità effettivamente fa es: invia_mail.html, invia_mail_allegato.html, crea_contatto.html... Sconsiglio di dare un numero (id) di riferimento alla test case perchè questi oggetti devono essere liberi: come mattoncini di lego che noi aggregheremo a nostro piacimento in questo test Plan o in altri.

Vediamo come potrebbe essere il Test Case in Selense della Login Login (diventa) -> login.html NOTA: Questo è solo un esempio command target value open http://www.webmail.com type id=io-login-username pippo type id=io-login-password password click css=li[data-app-name="mail"]>a

Passiamo ora al prossimo Test Case della lista: invio mail (plan) diventa -> manda_mail.html invio mail (attach) diventa -> manda_mail_attach.html NOTA: Anche questo è solo un esempio command target value click http://www.webmail.com type css=i.icon-new-mail type id=writer_field_to mario.rossi@test.com type //input[@class='subject'] titolo della mail di test type css=div[class="container"]>textarea corpo della mail di test click css=div.sendmail e così via via con tutti i test case della lista....

Ok, adesso che abbiamo tutti i mattoncini assembliamoli in un Test Plan (Suite) di Selenium. Potete usare Selenium IDE importando ogni files oppure usando un editor di testo (o HTML) come Komodo Test Plan > Files > Codice HTML Suite Invio Mail > <table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody> <tr><td><b>Test Plan</b></td></tr> <tr><td><a href="login.html">Login</a></td></tr> <tr><td><a href="invia_mail.html">Invia Mail</a></td></tr> <tr><td><a href="invia_mail_attach.html .html">Invia Mail Attach</a></td></tr> <tr><td><a href="crea_contatto.html">Crea Contatto Rubrica</a></td></tr> <tr><td><a href="cancella_contatto.html">Cancella Contatto</a></td></tr> <tr><td><a href="cambia_password.html">Cambia Password</a></td></tr> <tr><td><a href="logout.html">Logout</a></td></tr> <tr><td><a href="login_newpass.html">Login Nuova Password</a></td></tr> <tr><td><a href="logout.html">Logout</a></td></tr> </table> 1) login 2) invio mail (plan) 3) invio mail (attach) > login.html invia_mail.html invia_mail_attach.html Crea contatto 4) crea contatto 5) cancella contatto > crea_contatto.html cancella_contatto.html Cambia Password 6) cambia password 7) logout 8) login (nuova pass) 9) logout > cambia_password.html logout.html login_newpass.html logout.html

Ok, adesso abbiamo il nostro test plan. E' pluito, scalabile, facilmente modificabile e mantenibile. Manca qualcosa? SI!!! Manca qualcosa! :-( Avevamo detto che 1) dovevamo inviare almeno 10 mail 2) creare 7 contatti!

Niente panico, la struttura è solida dobbiamo solo fare una piccola modifica ad alcuni Test Case, introducendo delle variabili. Dobbiamo infatti fare in modo che il test case che invia la mail: invia_mail.html (e successivamente quello che crea i contatti ) sia in un certo senso un "tutto fare": mandi cioè mail più complesse, preferibilmente con più dati e a più utenti. Senza esagerare (cosa auspicabile per il futuro) possiamo iniziare introdurre due semplici variabili (in javascritp) nel test case

Basterà introdurre queste due variabili dinamiche  RANDOMMAIL: basterà semplicemente fare un Array con un po' di indirizzi email a cui vogliamo inviare mail. Poi ne prendiamo uno randomico.  TIMESTAMP: ci segnamo un timestamp da mettere nel titolo della mail, così che si potrà verificare con esattezza l'invio e l'eventuale ricezione della mail. command target value store javascript{var arrName=new Array(10); arrName[0]='stefano@testmail.com'; arrName[1]='daniele@testmail.com'; arrName[2]='mario@testmail.com'; arrName[3]='franco@testmail.com' arrName[Math.round((Math.random()*2)+1)];} RANDOMAIL storeEval var d=new Date(); d.getDate()+'-'+((d.getMonth()+1)) +'-'+d.getFullYear()+' time: h'+d.getHours()+'m'+d.getMinutes()+'s'+d.getSeconds() ; TIMESTAMP

A questo punto basterà inserire queste due righe nel Test Case invia_mail.html e inserire le variabili così create al posto del testo statico che avevamo messo:potrà verificare con esattezza l'invio e l'eventuale ricezione della mail. command target value store javascript{var arrName=new Array(10); arrName[0]='stefano@testmail.com'; arrName[1]='daniele@testmail.com'; arrName[2]='mario@testmail.com'; arrName[3]='franco@testmail.com' arrName[Math.round((Math.random()*2)+1)];} RANDOMAIL storeEval var d=new Date(); d.getDate()+'-'+((d.getMonth()+1)) +'-'+d.getFullYear()+' time: h'+d.getHours()+'m'+d.getMinutes()+'s'+d.getSeconds() ; TIMESTAMP click http://www.webmail.com type css=i.icon-new-mail type id=writer_field_to ${RANDOMAIL} type //input[@class='subject'] mail di test inviata in data ${TIMESTAMP} type css=div[class="container"]>textarea corpo della mail di test click css=div.sendmail

Adesso abbiamo un Test Case che ogni volta che verrà eseguito sarà diverso dal precedente. Nota: Ho inserito un Array con poche mail ma è possibile rendere le cose molto più complesse e con più variabili. A questo punto per far mandare 10 mail basterà modificare il Test Plan semplicemente facendo eseguire più volte il Test Case (versione tutto fare) Di conseguenza avremo il seguente TEST PLAN Test Plan -> Files Invia 10 mail login.html invia_mail.html invia_mail.html invia_mail.html invia_mail.html invia_mail.html invia_mail.html invia_mail_attach.html invia_mail_attach.html invia_mail_attach.html invia_mail_attach.html invia_mail_attach.html Crea 7 contatti ne cancella 2 crea_contatto.html crea_contatto.html crea_contatto.html crea_contatto.html crea_contatto.html crea_contatto.html cancella_contatto.html crea_contatto.html cancella_contatto.html Cambia Password cambia_password.html logout.html login_newpass.html logout.html

 1) abbiamo pensato alle funzionalità da testare  2) abbiamo analizzato nel dettaglio cosa queste funzionalità devono fare (es: invia 10 mail)  3) abbiamo fatto tanti Use Case di alto livello quante sono le funzionalità che testeremo  4) abbiamo identificato i Test Case (di Selenium) di ogni Funzionalità  5) abbiamo assemblato tutti i Test Case nel Test Plan di Selenium  6) abbiamo reso "tutto fare" i Test Case che devono essere cicalati  7) abbiamo creato un Test Plan che esegue più volte gli stessi Test Case

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

⭐MODULI SW E SERVIZI BASE - docplayer.it

... possibilità di creare facilmente build su jenkins dall'ide di sviluppo ... Test Suite sia automatizzabile ... automation con Selenium ed ...
Read more

IProgrammatori.it - Offerte di lavoro

Siamo alla ricerca di un Analista tecnico/sviluppatore con 2 anni di esperienza sulla suite SAS ed in ... di IDE di sviluppo ... per creare processi ...
Read more

Showing results for signup webmail.es register - umuwa.us

www.register.com Domain name registration, website design and business web hosting from Register.com. We offer ... To access your Register.com Web Mail ...
Read more

Prodotti - Emerasoft

E’ integrato totalmente con Microsoft Office e Adobe Creative Suite; ... migliora le prestazioni con proxy e cache intelligenti. ... (Selenium IDE). ...
Read more

FE_223 - scribd.com

Collaborare con Fare ... L’obbiettivo principale è creare una vera e propria libreria di idee alla ... "On Methods of Preparing Selenium and other ...
Read more

FE_223 - pt.scribd.com

... con il vostro apprezzamento per ... Il cartoncino ha lo scopo di creare i tre vani che vediamo nella ... "On Methods of Preparing Selenium and other ...
Read more

FE_223 - es.scribd.com

Collaborare con Fare Elettronica La ... L’obbiettivo principale è creare una vera e propria ... "On Methods of Preparing Selenium and other Substances ...
Read more