La potenza del prodotto, a mio avviso, sta proprio nel fatto che è estremamente dinamico in quanto da la possibilità, tramite la sezione Script Editor, di scrivere del codice, molto vicino al vbscript, che permette di interagire con gli oggetti e le azioni dei diversi moduli.
____________________________________________________________________
Come accedere allo Script Editor
Per accedere al codice dello script editor bisogna andare sotto la parte di "Customize..." del progetto, selezionare il link Workflow. Sulla parte destra selezionare poi il link Script Editor.
Come si evince dalla figura esistono altri link prima che creano in automatico delle funzioni all'interno del codice dello script editor. Attenzione però, non sempre il comportamento del codice inserito in automatico dal "Wizard" interagisce in maniera corretta. Io personalmente lo sconsiglio in quanto preferisco avere il governo del codice che inserisco.
______________________________________________________________________
Struttura Script Editor
La sezione dedicata allo script editor è questa:
Si tratta di un editor evoluto, una sorta di ambiente di sviluppo, quasi un IDE. Ha un suo menù principale, una toolbar e si notino, cosa molto importante, i 2 tab principali. Il primo è dedicato al codice, il secondo contiene le icone dei pulsanti personalizzati che possono essere inseriti.
Il Workflow Script
Sotto il primo tab è presente una struttura ad albero che riporta i moduli del prodotto. Infatti in esso è possibile trovare il modulo relativo ai Requisiti, ai Test in TestPlan, alle Strategie di Esecuzione e alle loro Istanze, ai Run, alle Anomalie, ecc... E' presente anche un modulo cross che è il Common. All'interno di esso è possibile definire variabili e costanti comuni visti da tutti i moduli ad eccezione del Manual Runner. Per esso esiste una gestione particolare che riporterò nella sezione "How To - Tips&Tricks".
Si noti che esiste un livello superiore che è Project Scripts. Perché? Come ancora non ho specificato prima esistono 2 tipi di progetti: quelli Standard e i Template. Questi ultimi vengono utilizzati per essere da punto di riferimento per altri Progetti Standard. In pratica vengono connessi i progetti standard ad un Template ed il codice viene ereditato da quest'ultimo. L'alberatura dello Script Editor per i Template prevede 2 livelli: Template Scripts e Project Scripts. Verrà dettagliato meglio nella sezione successiva.
________________________________________________________________________
Vediamo ora come sono strutturati all'interno i moduli.
Common script
Questo modulo contiene le funzioni e le sub che non sono specifiche per moduli ma sono cross progetto. E' possibile qui inserire oggetti, variabili, costanti, eccetera visibili a tutti i moduli ad eccezione, come già detto, del modulo Manual Runner.
All'interno del Common troviamo queste Funzioni/Sub:
Tutti gli altri moduli
Raggruppo tutti i moduli in quanto le funzioni e gli eventi al loro interno sono generici nel funzionamento ma peculiari per i diversi moduli.
Provo a spiegarmi meglio con un esempio: quando viene selezionata l'azione di Creazione Nuovo Requisito o Test viene sempre innescato l'evento xxxx_New (dove xxxx rappresenta l'oggetto del contesto). Questo evento è presente nel modulo di riferimento. Quindi nel modulo dei Requisiti avremo l'evento Req_New e nel modulo Test Plan l'evento Test_New.
Vediamo dall'immagine riportata qui sotto quali sono e cosa servono. L'immagine si riferisce al modulo Management che gestisce molti oggetti:
Il modulo gestisce questi oggetti:
Ora vediamo quali eventi sono associati a questi oggetti e cosa rappresentano:
Esistono inoltre altre 2 Sub molto utili una sotto il modulo Test Plan e una sotto il modulo Test Lab che sono rispettivamente la MoveToSubject e la MoveToFolder. Entrambe hanno come argomento un oggetto (Subject e Folder) che rappresenta l'oggetto cartella in Test Plan e in Test Lab.
Struttura Sub e Funzioni
Le sub e le funzioni sono strutturate in modo che non possano andare in errore. Per far questo all'interno sono presenti all'inizio e alla fine rispettivamente lo statement "On Error Resume Next" e "On Error GoTo 0". Le Funzioni booleane hanno quasi sempre un ritorno a True di default.
Come esempio indicherò qui la struttura di qualche sub e funzione
Sub DialogBox(DialogBoxName, IsOpen)
On Error Resume Next
msgbox "Name: " & DialogBoxName & " - IsOpen: " & IsOpen
On Error Goto 0
End Sub
Function ActionCanExecute(ActionName)
On Error Resume Next
msgbox "Nome Azione: " & ActionName
ActionCanExecute = DefaultRes
On Error Goto 0
End Function
Function DefaultRes
On Error Resume Next
DefaultRes = True
On Error GoTo 0
End Function
______________________________________________________________________________
Toolbar Button Editor
Sotto il secondo tab dello script editor è possibile creare nuovi tasti ed associargli un'icona:
La creazione di un nuovo pulsante prevede di indicare in quale modulo è necessario aggiungerlo, associare una Caption, un Hint (col puntatore del mouse posizionato sull'icona compare la dicitura) ed un nome di Action personalizzata. In più è possibile scegliere una delle icone presenti nella parte destra.
Vediamo un esempio: creaiamo un pulsante "prova" nel modulo TestLab a cui associamo l'icona numero 53. Azioni da effettuare:
Una volta creato il pulsante nella sezione TestLab bisogna fare in modo che nel momento in cui l'utente seleziona il bottone succeda qualcosa. Per far questo è necessario inserire del codice all'interno della funzione ActionCanExecute in quanto la selezione del pulsante scatena un'azione. Inserirò in ActionCanExecute una msgbox "Prova pulsante personalizzato". Questo il risultato: