Procedure ottimali di sviluppo proxy

Se ci si attiene alle procedure ottimali quando si sviluppano proxy può risultare utile nell'ottimizzare il proprio lavoro. Prendere in considerazione questi metodi per migliorare il lavoro di sviluppo.
Utilizzo della gerarchia appropriata per gli oggetti GUI

Gli oggetti GUI sono disposti in due gerarchie correlate: principale-secondaria e proprietario-proprietà. Un esempio di relazione principale-secondaria è una finestra di dialogo e un pulsante in essa contenuto. Un esempio di relazione proprietario-proprietà è una finestra di livello superiore e una finestra di dialogo. Utilizzare un dei tipi di gerarchia per un oggetto.

Nell'implementazione del proxy, è comune per il modello di oggetto sottostante (ad esempio, Java e HWND) confondere queste due relazioni e trattare la relazione proprietario-proprietà come una relazione principale-secondaria asimmetrica. In questo caso, il proxy deve negare di avare un elemento principale quando il modello di relazione preferibile è proprietario-proprietà. I metodi che è possibile utilizzare per passare attraverso la gerarchia sono getParent(), getChildren(), getOwner() e getOwned().

Evitare la restituzione di tipi diversi per la stessa proprietà

Le proprietà sono denominate valori. La proprietà stessa non ha un tipo; il valore ha un tipo. Evitare che i proxy restituiscano tipi diversi per la stessa proprietà. Talvolta un valore di proprietà può essere un riferimento ad un oggetto piuttosto che un valore. Se tale valore viene restituito ad uno script, viene restituito come TestObject. I metodi per accedere alle proprietà includono getProperty(), setProperty(), getProperties() e getNonValueProperties().

Utilizzo della libreria oggetti per assegnare pesi e proprietà di riconoscimento agli oggetti

Per impostazione predefinita, i nuovi oggetti proxy potrebbero non disporre dei pesi e delle proprietà di riconoscimento degli oggetti. Utilizzare la libreria oggetti per assegnare i pesi e le proprietà di riconoscimento. I metodi per l'accesso ai pesi e alle proprietà di riconoscimento dell'oggetto sono getRecognitionProperties() e getRecognitionPropertyWeight(). Se all'interno dell'oggetto principale esiste più di un oggetto della stessa classe, aggiungere la proprietà .classIndex (un valore numerico positivo che inizia con 0), come una proprietà di riconoscimento per l'oggetto secondario.

Gestione di gerarchie mappabili

Generalmente, l'intera gerarchia degli oggetti risulta mappata. Tuttavia, alcuni oggetti sono suscettibili di frequenti cambiamenti tra build dell'applicazione di test. Ad esempio, in Java, è comune aggiungere insieme pannelli a oggetti cluster. Con Functional Tester l'utente può specificare di non mappare l'oggetto proxy. Anche se gli oggetti non mappabili non sono nella mappa di oggetti di test, la gerarchia di oggetti ne effettua un elenco mentre si passa attraverso la gerarchia principale-secondaria. I metodi per la gestione della gerarchia mappabile includono shouldBeMapped(), getMappableParent() e getMappableChildren().

Uso delle proprietà canoniche

In alcuni casi, il modello di oggetti sottostante supporta una nozione delle proprietà, ad esempio, Java, HTML e .NET. Functional Tester consente ai proxy di implementare ulteriori proprietà. Se un proxy implementa direttamente una proprietà, il nome della proprietà deve avere un diverso modello per evitare confusione con qualsiasi proprietà dell'oggetto. Iniziare il nome delle proprietà regolari che potrebbero essere utilizzate per il riconoscimento con un punto (.). Alcune proprietà di gestione vengono utilizzate dal framework e non possono essere utilizzate per il riconoscimento; tali nomi di proprietà iniziano con un simbolo di numero (#).

Richiamo di metodi di oggetti

In molti casi, l'oggetto sottostante dispone di metodi che possono essere rilevati e richiamati. Questi di solito vengono gestiti direttamente dall'implementazione di dominio e framework, ma getMethod() viene implementato comunemente su un proxy base in un dominio.

Uso di metodi guidati da script ben definiti

Quando possibile, eseguire la riproduzione di azioni del mouse dalla lente. Se un nome di metodo include "click" o "drag", far eseguire l'azione agli eventi mouse. Non utilizzare i nomi di metodo come "click" o "drag" se gli eventi mouse non vengono utilizzati per implementare l'azione. Non utilizzare i nomi di metodo che fanno riferimento a tasti o la tastiera se gli eventi tastiera non implementano l'azione. Fare in modo che i metodi riflettano l'azione che sta per essere eseguita e affidabile durante la riproduzione. Evitare euristiche.

Gestione di elementi secondari

Gli oggetti possono contenere altri oggetti e potrebbero avere una struttura interna non esposta come uno o più oggetti nidificati. Ad esempio, un elenco potrebbe contenere degli elementi, ma questi non sono esposti dall'oggetto della lista come oggetti stessi. Questo tipo di comportamento è comune negli oggetti basati su HWND. I metodi più comuni di gestione degli elementi secondari sono getSubitem() e i metodi di azione del mouse come click(), drag(), e doubleClick(). Il metodo getSubitem() restituisce un valore null o una stringa.

Utilizzare una delle seguenti strategie se non si desidera che gli oggetti negli elementi secondari siano esposti come oggetti completamente sviluppati:

Eccezioni ed errori

Attenersi a queste regole quando si implementano eccezioni ed errori:


Feedback