GUIRT recorder

Note prima dell'utilizzo

Oplon Global Distributed Gateway GUI Reliability Tools Recorder (GUIRT-R d'ora in avanti) è lo strumento di registrazione delle attività desktop per una successiva riproduzione automatica ripetitiva.

Attraverso Oplon GUIRT-R è possibile registrare nuove tracce di sequenze di operazioni, modifcare tracce di sequenze di operazioni, provare le tracce sia complessivamente sia step per step o con partenza da uno step specifico. È inoltre possibile eseguire test su immagini di porzioni di schermo o di frasi su campi di input e verificare i tempi di attesa calcolando le effettive velocità end-to-end delle applicazioni.

Start del Recorder

Dopo aver eseguito l'installazione della portable-app (vedere manuale di installazione), per eseguire lo start del recoder si devono effettuare le seguenti operazioni:

1) Da file manager posizionarsi nella directory C:TCOProjectbinLBLLBLLoadBalancer image1

2) Eseguire il comando lblguirecorder.bat

3) image2 Dopo lo splash screen si aprirà la finestra del recorder e si potranno cominciare le attività di registrazione

Il Recorder

Il recorder è lo strumento che permette la registrazione delle operazioni utente e contestualmente permette di aggiungere le caratteristiche di controllo su ogni singola operazione. L'interfaccia è composta da alcuni pannelli con pulsanti di controllo e una sezione dove sono visualizzate, con possibilità di modifica, tutte le singole operazioni che compongono la traccia delle sequenze operatore (da ora in poi semplicemente Traccia).

image2

Con la pressione del bottone "Insert after selected step" o "Insert before selected step" si potrà aggiungere uno step che conterrà le caretteritiche dello step.

image3

Must read prima del tuo primo recording

L'attività di recording è la fase in cui si eseguono passo passo tutte le operazioni che poi, una volta definite, potranno essere ripetute all'infinito. È da specificare immediatamente che l'interazione umana con gli eventi del desktop o con le macchine in generale, è molto complessa e la scomposizione delle operazioni in singole unità può a volte meravigliare per complessità e operazioni automatiche ed inconsce che effettuiamo, come ad esempio i tempi di attesa tra un'operazione e l'altra.

È inoltre importante evidenziare che per creare una traccia di sequenze in grado di "decidere" o quantomeno accorgersi che qualche cosa non sta funzionando, dobbiamo istruirla di tutti i controlli involontari che normalmente eseguiamo inconsciamente, aspettare che la finestra si apra, verificare che sia arrivato il momento di digitare, verificare che il risultato sia coerente...

Per questi motivi l'interfaccia di recording è stata pensata per essere il più possibile interattiva durante la registrazione per poter aggiungere durante la registrazione stessa i controlli e le attese che solitamente un essere umano esegue in automatico inconsciamente.

In ogni momento la registrazione può essere sospesa, si possono modificare/cancellare/aggiungere step e descrizioni che ci permetteranno di capire, anche in un secondo momento, il significato della singola azione.

Un'altra considerazione nell'esecuzione automatica riguarda l'ingegnerizzazione delle tracce. Come per l'essere umano alcune operazioni ripetitive, una volte imparate, vengono eseguite in automatico senza pensare. In questo caso è possibile scomporre in più tracce le nostre automazioni e quindi eseguiee le tracce in sequenza. Un esempio pratico lo si può spiegare con questo semplice flusso di test:

1) Start del browser

2) Richiesta dell'URL

3) Attesa della richiesta di login

4) Digitazione del login

5) Digitazione della password

6) Conferma dell'operazione

7) Attesa del menu delle funzionalità applicative

8) Scelta della funzionalità (A)

9) Test della funzionalità (A.1)

10) Test della funzionalità (A.2)

11) Logout

12) Chiusura del browser

È chiaro fin da subito che le operazioni dall'1 al 7 e le operazioni dall'11 al 12 possono andare bene sia per eseguire i test della funzionalità (A) sia di altre funzionalità applicative all'interno di quel contesto e che sarebbe non conveniente avere tracce differenti per le differenti funzionalità con all'interno le stesse operazioni ripetute. In questo caso è possibile creare una traccia che contiene gli step di login e una traccia che contiene gli step di logout e quindi generare tante tracce per eseguire i test delle funzionalità inserire in quel contesto. Le tracce possono essere messe assieme in fase di "Playing" riportando inoltre ulteriori tags che le identificano durante il running.

Altra considerazione è lo stato iniziale del desktop all'avvio di una traccia. Quando viene eseguita una traccia in realtà non sappiamo com'è lo stato del desktop perché potrebbe essere diverso da come ce lo aspettiamo in base al test eseguito in precedenza (browser aperto, finestre aperte etc...). È quindi importante utilizzare una traccia di azzeramento in grado di riportare il desktop ad uno stato "zero" in cui è possibile iniziare una nuova traccia di test come se fosse la prima volta. A questo scopo in questo manuale verrà descritta una traccia con alcuni step sempre utili per questa attività. Ovviamente dovrà essere modificata per adeguarsi alle necessità del momento.

La lingua del desktop è influente per effettuare alcune operazioni come short-cut o comandi di sistema. È opportuno scegliere il linguaggio, il formato della data e dell'ora e la keyboard di riferimento da utilizzarsi sia durante la registrazione sia durante la riproduzione.

Una volta letto le raccomandazioni è possibile procedere con la prima registrazione.

First Recording

Alla partenza Oplon GUIRT Recorder si imposta in automatico con modalità "Sempre in primo piano" per permettere un puntamento del mouse sul desktop o le applicazioni mantenendo il controllo degli step di registrazione.

Il funzionamento di base prevede di eseguire più posizionamenti del mouse alternando puntamenti sul desktop, confermando l'operazione cliccando sull'interfaccia Oplon GUIRT Recorder e quindi riposizionando il mouse sul successivo punto.

image5 Dopo lo start premere il tasto "Start recording" la descrizione cambierà con "Mouse position capture enable" e spostando il mouse ed effettuando un click verrà registrata la prima posizione.

image6

Una volta registrato il primo step andare con il mouse sull'interfaccia per determinare l'azione, in questo caso scegliere "double click".

image7

Quindi per eseguire il test di questo step è già possibile eseguire lo start attraverso "Run step"

image8

L'interfaccia della GUI si minimizzerà e dopo circa 3 secondi verrà eseguito lo step. Il tempo di attesa tra la minimizzazione dell'interfaccia e l'esecuzione dello step serve a lasciare il tempo per spostare la mano dal mouse per non interferire con la riproduzione. Al termine dell'esecuzione l'interfaccia del recorder ritornerà visibile e mostrerà il risultato dell'operazione.

image9

Per eseguire lo stop della cattura della registrazione delle posizioni del mouse premere il pulsante "Pause". La descrizione "Mouse position capture" passerà da rosso a nero riportando la descrizione "disable".

image10

First Recording with text comparison

Oplon GUIRT è in grado di comparare valori testuali e immagini con porzioni di desktop. Come esempio di test di comparazione per valori testuali effettueremo lo start del programma notepad, digiteremo al suo interno la frase "Hello world!" e quindi verificheremo che all'interno vi sia esattamente questo testo per poi chiudere la finestra notepad senza salvare.

Per prima cosa dovremo eseguire lo start di notepad. Per eseguire lo start di notepad, ma più in generale di qualsiasi eseguibile, si possono utilizzare diverse tecniche: Eseguendo un doppio click su un'icona, eseguendo un click sulla barra delle applicazioni o più semplicemente eseguendo lo start del programma se ne conosciamo il nome.

In questo caso eseguiremo due test di start, il primo attraverso il run di windows ed il secondo attraverso lo start del programma contestualmente allo step (OScommand).

Con il mouse premere il bottone insert step down

image11

Nel nuovo step inserito scrivere nella cella KeyboardEvent Windows+R e nel KeyboardInput notepad.exe

image12

image13

Se eseguiamo lo step con Run step dovremmo ottenere il seguente risultato...

La finestra di run di windows rimane aperta perché non è stata confermata e la traccia è terminata con successo.

image14

Aggiungiamo quindi un altro step che va a confermare con "Enter" l'operazione...

image15

Riposizioniamo la selezione sul primo step ed eseguiamo il Run dell'intera traccia dall'inizio...

image16

Run dell'intera traccia dallo step selezionato, in questo caso il primo step...

image16

Il risultato ottenuto è l'apertura della finestra di notepad...

image17

Aggiungiamo ora uno step che digita la frase "Hello world!"... selezioniamo lo step da cui inserire il nuovo elemento e quindi sulla cella KeyboardInput digitiamo la frase "Hello world!" (Attenzione che le minuscole e le maiuscole sono considerate differenti)

image18

image19

Cancelliamo la selezione degli step...

image20

Eseguiamo il run della traccia che partirà dal primo step non essendoci step selezionati....

image20

Il risultato ottenuto è l'apertura della finestra del programma notepad.exe e la digitazione del testo "Hello world!" all'interno dell'editor...

Finestra di notepad con testo "Hello world!"

image21

Attenzione: Se non abbiamo chiuso la finestra del notepad precedente ci troveremo con due finestre notepad sovrapposte... non abbiamo ancora istruito la traccia a chiudere la finestra al termine delle operazioni...

Chiudiamo quindi manualmente tutte le finestre notepad esistenti sul desktop...

image21

Giunti a questo punto è meglio salvare l'attuale stato per non correre il rischio di perdere la nostra registrazione.

image20

Si aprirà la finestra per il salvataggio e andremo ad indicare il nome del file con Test.xml

image22

Nella barra della finestra in alto si vedrà il nome del file attualmente in uso.

image23

Andiamo ora ad effettuare la comparazione del valore all'interno dell'editor...

Con il mouse andiamo ad aggingere uno step, selezioniamo la cella compare text e quindi inseriamo sul KeyboardInput il valore che vogliamo confrontare...

image24

Cancelliamo la selezione degli step ed eseguiamo il run della traccia dall'inizio...

image25

È da notare che come ultima operazione Oplon GUIRT esegue la selezione del valore per poter eseguire il confronto che in questo caso dà come risultato "Normal end"...

image26

Proviamo a modificare il valore di confronto da "Hello world!" a "Hellooo world!", deselezioniamo gli step ed eseguiamo il run dall'inizio della traccia....

image27

Questa volta il risultato della comparazione segnala una differenza e termina con la finestra di errore...

image28

Procediamo ora a ripristinare il testo di comparazione con il valore "Hello world!" ed aggiungiamo i comandi per chiudere notepad senza il salvataggio... di seguito i comandi in sequenza...

Alt+F4 - per eseguire il comando di chiusura

Right - per spostare il focus a destra di un bottone (don't save)

Enter - per confermare l'uscita senza salvataggio

image29

Salviamo la nostra registrazione...

image29

Suggerimento: Allo start non conosciamo lo stato del desktop e se ci sono altre finestre notepad da test precedenti. Per eseguire una "pulizia" iniziale del desktop sarebbe opportuno chiudere eventuali notepad lasciati in sospeso. Per effettuare questa operazione andremo ad inserire come primo step uno comando di chiusura di tutti i notepad presenti sul desktop.

Per ottenere la chiusura di tutti i notepad del desktop eseguiremo il comando di sistema operativo Taskkill /F /IM notepad.exe direttamente nel primo step della nostra traccia

Selezioniamo il primo step

image30

Utilizziamo il bottone insert before e sulla cella OSCommand scriviamo il comando di cancellazione di tutti i notepad in esecuzione Taskkill /F /IM notepad.exe image31

Apriamo un notepad a verifica dell'esecuzione del comando... ed eseguiamo dall'inizio la traccia...

image32

Un altro accorgimento di pulizia del desktop è portare ad icona tutte le applicazioni presenti. Questo si può ottenere con il comando Windows+M

image33

Eseguiamo dall'inizio...

Eventuali altre finestre presenti sul desktop si minimizzeranno prima dell'esecuzione...

image34

Per ultimo andremo ad eseguire notepad.exe senza passare per il run di windows ma semplicemente utilizzando uno step ed eseguendo notepad direttamente da OSCommand...

Dobbiamo avere cura di cancellare le celle KeybordEvent che contiene il comando Windows+R e KeyboardInput che contiene la digitazione del comando notepad.exe...

image35

E cancellando lo step con Enter....

Selezioniamo lo step che vogliamo cancellare

image36

Il risultato deve essere uguale alla seguente immagine

image37

Run dall'inizio

image38

Salviamo la nostra prima registrazione.

image39

First Recording with image comparison

Con Oplon GUIRT è possibile eseguire dei test di comparazione visuale su porzioni del desktop.

Sostituiremo ora la comparazione testuale con la comparazione visuale. Per ottenere questo risultato andremo ad eseguire manualmente lo start di notepad e quindi a prendere una porzione del desktop per verificare l'avvenuta digitazione di "Hello World!"

Apriamo manualmente notepad e scriviamo al suo interno "Hello world!"

image40

Per delimitare una porzione di desktop andremo a puntare gli angoli superiore sinistro e inferiore destro creando due step temporanei che ci permetteranno poi di scattare una istantanea del rettangolo.

Attiviamo la registrazione

image41

Puntiamo il mouse in un punto in alto a sinistra della finestra notepad (senza causare l'apertura del menu della finestra)

image42

Selezioniamo nuovamente la finestra Oplon GUIRT

image43

E quindi puntiamo il mouse nello spigolo inferiore destro che delimiterà la nostra immagine da confrontare...

image44

Il risultato saranno due step con l'indicazione dei punti in coordinate X Y del nostro rettangolo

image45

Eseguiamo lo stop del mouse position capture per evitare di inserire step indesiderati

image46

Selezioniamo i due step con il mouse

image47

Eseguiamo l'istantanea della porzione del desktop delimitata dagli angoli che avremo descritto image47

Il risultato sarà un solo step con la cella di confronto immagine selezionata, la cella CF impostata a 15% ed il wait after a 1000 millisecondi (1 secondo)

image48

Se premiamo il pulsante con il simbolo della pellicola della riga di confronto verrà visualizzata una finestra con l'istantanea memorizzata.

image49

È possibile inoltre verificare se l'istantanea viene riconosciuta attraverso il tasto run single step dello step stesso.

image50

Se il risultato è corrispondente verrà visualizzata la finestra con normal end

image51

Spostiamo ora lo step del confronto immagini sotto allo step del confronto testuale con il pulsante move row up

image52

Fino alla posizione voluta al di sotto della comparazione testuale

image53

Cancelliamo la comparazione testuale... image54

...ed eseguiamo un salvataggio cambiando il nome della traccia con il bottone "Save as" con nome TestImageCompare.xml

image55

image56

Il nome del nuovo file è visualizzato nella barra in alto della finestra

image57

Eseguiamo dall'inizio della traccia

image58

Start

image58

Anche la traccia con comparazione visuale è terminato correttamente. image59

Alcune considerazioni sulle comparazioni

Abbiamo volutamente sorvolato nelle registrazioni delle trace precedenti sull'approfondire i significati dei parametri CF, Retry Wait Before e Wait After. Questi parametri ci permettono di eseguire dei test sul risultato atteso e contemporaneamente di valutarne la velocità di risposta.

Dove esiste un confronto, tipicamente si attende che una finestra appaia con dei valori o immagini corrispondenti, il sistema è in grado di verificate a intervalli di tempo regolari descritti nelle celle Wait After e per un numero massimo di tentativi descritto nella cella Retry l'avvenuta comparazione. In pratica se il risultato della comparazione fallisce, il sistema ritenta per n volte fino al raggiungimento della comparazione o al raggiungimento del numero massimo di tentativi prima di segnalare un errore con lo stop contemporaneo della traccia.

Questo permette di calcolare i tempi effettivi di risposta delle applicazioni con una granularità pari al tempo di attesa tra un controllo e l'altro della comparazione.

La cella CF (Compare Factor) viene utilizzata per eseguire dei test di uguaglianza o similitudine. Esprime la % di scostamento per decretare una immagine simile ad un'altra. Se CF è 0 (zero) le immagini devono essere perfettamente uguali. Se è > 0 (tipicamente dal 10% al 15%) le immagini possono discostarsi dall'uguaglianza. Questo è importante perché permette delle lievi modifiche cromatiche o di immagine molto presenti nelle nuove interfacce.

image60

Comparazioni, salti condizionali e utilizzo delle label riservate

La traccia può contenere delle comparazioni testuali o per immagine che, in caso non diano esito positivo, possano contenere dei controlli di flusso con salti condizionali ad altri step. È possibile infatti, assegnare ad uno step un nome simbolico che può essere utilizzato sia durante le comparazioni sia durante il flusso normale ottenendo una esecuzione degli step non sequenziale.

In questo caso andremo volutamente a modificare il testo di comparazione da "Hello World!" a "Hello World" senza il punto esclamativo.

image61

Sono state aggiunte le label ENDERR, @STOP_RUN e ENDTRACE nella colonna StepLabel.

La label @STOP_RUN è una keyword riservata che termina l'esecuzione della traccia, mentre le altre due label, ENDERR e ENDTRACE sono i riferimenti allo step utilizzabili nelle colonne di controllo di flusso.

L'esecuzione di questa traccia, non trovando corrispondenza con il testo, effettuerà un salto condizionale allo step con label ENDERR che poi terminerà allo step con la label @STOP_RUN e non proseguirà oltre.

Se invece modifichiamo nuovamente la comparazione in "Hello World!", l'esecuzione proseguirà dopo la comparazione e una volta arrivata allo step 8 eseguirà un salto allo step ENDTRACE saltando gli altri step.

Label riservate:

@STOP_RUN Termina l'esecuzione della traccia senza errore


@STOP_ERR Termina l'esecuzione della traccia con errore

Replacement list

Con Oplon GUIRT è possibile eseguire delle trace che riportano negli step dei valori variabili in base ad una lista prestabilita. Attraverso un file in formato csv separato da punti e virgola (;) è possibile infatti predisporre delle liste di valori su più righe il cui riferimento da utilizzarsi nella traccia è posto nella prima riga.

Ad esempio se prendiamo in considerazione il seguente tracciato possiamo notare che la prima riga contiene gli identificatori, le righe seguenti contengono i valori corrispondenti per colonna:

COD;DESCRIPTION;PRICE;

0012;White Toothpaste;2,30;

0015;Toothbrush;3,5;

0072;Electric toothbrush;18,10;

Per poter utilizzare nelle tracce i valori durante l'esecuzione è sufficiente indicare sui campi "Keyboard Input" l'identificatore della prima riga del valore che si vuole utilizzare compreso da simboli %. Esempio %DESCRIPTION%.

image62

image63

Se la traccia venisse eseguita senza altre azioni il risultato sarebbe una digitazione automatica letterale che nel notepad risulterebbe esattamente uguale a quanto digitato nei campi Keyboard Input: %DESCRIPTION%

Se invece associamo alla traccia un file con la lista sopra esposta otterremo come risultato una prima esecuzione con i valore "White Toothpaste", una seconda esecuzione con valore "Toothbrush" ed una terza esecuzione con valore "Electric toothbrush".

Per associare l'esecuzione ad una lista di replacement cliccare su "Open CSV replacement list" e selezionare il file contenente la lista di replacement.

image64

image65

L'esecuzione della traccia sarà effettuata per tante volte quante sono le righe contenute all'interno del file, in questo caso 3, prendendo come riferimento la prima riga.

Pulizia iniziale del desktop

Abbiamo accennato al fatto di eseguire delle tracce di test con un ambiente iniziale predefinito e noto. È importante che ogni traccia si accerti di cominciare in uno stato che ne permetta l'esecuzione come fosse la prima volta.

Descrizione sintetica celle step

CellaDescrizione
N#È il numero di riga originale della riga, non è modificabile
Step labelSe esistente è possibile utilizzare l’identificatore nei salti gondizionali GoOK e GoKO
XSe diverso da -1 indica la posizione X del mouse. Con -1 lo step non prevede lo spostamento del mouse
YSe diverso da -1 indica la posizione Y del mouse. Con -1 lo step non prevede lo spostamento del mouse
MouseEventIndica l’azione del mouse. Le azioni possibili sono:
- click
- doubleclick
- clickcenter
- doubleclickcenter
- clickright
- doubleclickright
KeyboardEvent

Valore di un evento di tastiera. Per evento di tastiera si intendono azioni abbreviate o tasti speciali. Degli esempi possono essere la pressione del tasto Windows, Canc, Tab, Escape o azioni con tasti multipli: Control+C, Windows+M. Il valore + identifica la pressione contemporanea delle keyword riservate. La lista delle keyword possibili è direttamente disponibile dall’interfaccia sul tab KEYS

FindTextValueSe il valore è spuntato il player ricerca il valore testuale della selezione se è uguale al valore presente su KeyboardInput. Nel caso non sia corrispondente lo riverifica per il numero descritto nella cella Retry con un tempo di attesa tra un tentativo e l’atro descritto su Wait after.
CompareTextValueSe il valore è spuntato il player verifica se il valore testuale corrispondente al contesto è uguale al valore presente su KeyboardInput. Nel caso non sia corrispondente lo riverifica per il numero descritto nella cella Retry con un tempo di attesa tra un tentativo e l’atro descritto su Wait after.
KeyboardInputÈ il valore testuale che viene digitato nel corrispondente contesto dello step. Se la cella CompareTextValue è spuntata è invece il valore di confronto testuale
OSCommandÈ un qualsiasi commando di sistema come ad esempio l’avvio di notepad, firefox, chrome o qualsiasi procedura batch presente
DescriptionDescrizione libera. Questa descrizione è importantissimo compilarla durante la registrazione per capire, a distanza di tempo, il significato dello step
Wait beforeÈ il tempo di attesa prima che venga effettuata qualsiasi azione dello step specifico
Wait afterÈ il tempo di attesa dopo aver effettuato tutte le azioni dello step e prima di passare allo step successivo. In caso di comparazioni testuali o di immagini rappresenta anche il tempo di attesa tra uno tentativo e l’altro nel caso la comparazione fallisca.
RetrayNumero di tentativi da effettuare se la comparazione, testuale o imagine, ritorna con errore
GoOKSe valorizzato, lo step successivo non sarà più lo step immediatamente conseguente ma sarà lo step con la label indicata. Se lo step che contiene il GoOK è una comparazione, testuale o immagine, se il risultato della comparazione è positivo viene preso in considerazione il valore di questo campo altrimenti se il risultato della comparazione è negativo, viene preso in considerzione il valore contenuto in GoKO
GoKOIn caso di step di comparazione e se valorizzato, questo valore indica lo step sul quale proseguire la traccia in caso di confronto con esito negativo. Se non valorizzato e l’esito del confronto è negativo la traccia termina l’esecuzione con errore
FindImageSe il valore è spuntato il player ricerca nel desktop da coordinata x0 y 0 il valore dell’immagine corrispondente al contesto se è uguale al valore presente sull’istantanea memorizzata nello step e visibile attraverso il tasto View image. Nel caso non sia corrispondente la riverifica per il numero descritto nella cella Retry con un tempo di attesa tra un tentativo e l’altro descritto su Wait after.
CompareImageSe il valore è spuntato il player verifica se il valore dell’immagine corrispondente al contesto è uguale al valore presente sull’istantanea memorizzata nello step e visibile attraverso il tasto View image. Nel caso non sia corrispondente la riverifica per il numero descritto nella cella Retry con un tempo di attesa tra un tentativo e l’altro descritto su Wait after.
CFPercentuale di somiglianza per la comparazione dell’immagine. Questo parametro è molto importante per stabilire se una pagina attesa è classificata come corrispondente. È una percentuale in quanto le pagine possono presentare piccole differenze cromatiche che non determinano in assoluto la non corrispondenza. Un valore tar il 10% ed il 15% solitamente corrisponde a similitudine. Se impostato a 0% (zero) il player verifica la completa corrispondenza pixel a pixel senza nessuna tolleranza.
View imageÈ il bottone che nel caso di comparazione di immagine di porzioni del Desktop permette di visualizzare in una finestra di popup l’immagine da comparare
Run stepBottone che permette di eseguire il singolo step corrispondente