Condividi tramite


Utilizzo di automazione interfaccia utente per il test automatico

Questa panoramica descrive come Microsoft Automazione interfaccia utente può essere utile come framework per l'accesso a livello di codice negli scenari di test automatizzati.

Automazione interfaccia utente fornisce un modello a oggetti unificato che consente a tutti i framework dell'interfaccia utente di esporre funzionalità complesse e avanzate in modo accessibile e facilmente automatizzato.

Automazione interfaccia utente è stato sviluppato come successore di Microsoft Active Accessibility, un framework progettato per offrire una soluzione per rendere accessibili i controlli e le applicazioni. Microsoft Active Accessibility non è stato progettato tenendo conto dell'automazione dei test, anche se si è evoluto in tale ruolo a causa dei requisiti simili di accessibilità e automazione. Automazione interfaccia utente è progettato in modo specifico per offrire funzionalità affidabili per i test automatizzati, oltre a fornire soluzioni più perfezionate per l'accessibilità. Ad esempio, Microsoft Active Accessibility si basa su una singola interfaccia per esporre informazioni sull'interfaccia utente e raccogliere le informazioni necessarie per i prodotti assistive technology; Automazione interfaccia utente separa i due modelli.

Sia un provider che un client devono implementare Automazione interfaccia utente affinché sia utile come strumento di test automatizzato. Automazione interfaccia utente provider sono applicazioni, ad esempio Microsoft Word, Microsoft Excel e altre applicazioni o controlli di terze parti basati sul sistema operativo Windows. I client di automazione interfaccia utente includono script di test automatizzati e applicazioni di assistive technology.

In questo argomento sono contenute le sezioni seguenti.

Automazione interfaccia utente nei provider

Per automatizzare un elemento dell'interfaccia utente, lo sviluppatore deve esaminare le azioni che un utente finale può eseguire sull'oggetto dell'interfaccia utente usando l'interazione standard tramite tastiera e mouse. Dopo aver identificato queste azioni chiave, i pattern di controllo Automazione interfaccia utente che rispecchiano la funzionalità e il comportamento dell'elemento dell'interfaccia utente devono essere implementati nel controllo. Ad esempio, l'interazione dell'utente con un controllo casella combinata comporta in genere l'espansione e la compressione della casella combinata per visualizzare o nascondere un elenco di elementi, la selezione di un elemento dall'elenco o l'aggiunta di un nuovo valore tramite input da tastiera.

Con altri modelli di accessibilità, è necessario che gli sviluppatori raccolgano le informazioni direttamente da singoli pulsanti, menu o altri controlli. Ogni tipo di controllo è disponibile in decine di varianti secondarie. In altre parole, anche se 10 varianti di un pulsante di push funzionano allo stesso modo ed eseguono la stessa funzione, devono essere tutti considerati come controlli univoci. Non è possibile sapere se tali controlli sono equivalenti a livello funzionale. Automazione interfaccia utente modelli di controllo sono stati sviluppati per rappresentare questi comportamenti di controllo comuni. Per altre informazioni, vedere UI Automation Control Patterns Overview.

Senza il modello unificato dei pattern di controllo forniti da Automazione interfaccia utente, gli strumenti di test e gli sviluppatori devono avere informazioni specifiche del framework per esporre proprietà e comportamenti di controllo in tale framework. Poiché diversi framework dell'interfaccia utente possono essere presenti contemporaneamente nei sistemi operativi Windows, tra cui Microsoft Win32, Windows Forms e Windows Presentation Foundation (WPF), può essere un'attività scoraggiante per testare più applicazioni con controlli simili. La tabella seguente, ad esempio, elenca i nomi di proprietà specifici del framework necessari per recuperare il nome o il testo associato a un controllo pulsante e mostra la proprietà Automazione interfaccia utente equivalente.

Tipo di controllo Framework dell'interfaccia utente Proprietà specifica del framework proprietà Automazione interfaccia utente
Pulsante WPF Content Name (proprietà)
Pulsante Win32 Didascalia Name (proprietà)
Immagine HTML alt Name (proprietà)

 

Automazione interfaccia utente provider sono responsabili del mapping delle proprietà specifiche del framework dei relativi controlli alle proprietà Automazione interfaccia utente equivalenti. Per informazioni sull'implementazione di Automazione interfaccia utente in un provider, vedere Automazione interfaccia utente Provider Programmer's Guide (Guida per programmatori di provider). Per informazioni sull'implementazione dei pattern di controllo, vedere Implementazione di modelli di controllo Automazione interfaccia utente.

Automazione interfaccia utente nei client

L'obiettivo di strumenti e scenari di test automatizzati è la manipolazione coerente e ripetibile dell'interfaccia utente. Ad esempio, ciò può comportare controlli specifici di unit test e la registrazione e l'esecuzione di script di test che eseguono un'iterazione di una serie di azioni generice in un gruppo di controlli.

Una complicazione nelle applicazioni automatizzate è la difficoltà di sincronizzare un test con una destinazione dinamica, ad esempio un controllo casella di riepilogo, ad esempio Gestione attività di Windows, che visualizza un elenco di applicazioni attualmente in esecuzione. Poiché gli elementi nella casella di riepilogo vengono aggiornati dinamicamente all'esterno del controllo dell'applicazione di test, è impossibile ripetere la selezione di un elemento specifico nella casella di riepilogo. Problemi simili possono verificarsi quando si tenta di ripetere semplici modifiche dello stato attivo in un'interfaccia utente esterna al controllo dell'applicazione di test.

Accesso a livello di codice

L'accesso a livello di codice consente di imitare, tramite codice, qualsiasi interazione ed esperienza esposta dall'input tradizionale di mouse e tastiera. Automazione interfaccia utente consente l'accesso a livello di codice tramite cinque componenti:

  • L'albero Automazione interfaccia utente facilita la navigazione nella struttura dell'interfaccia utente. L'albero viene creato dalla raccolta di oggetti HWND. Per altre informazioni, vedere Panoramica dell'albero di Automazione interfaccia utente.
  • Gli elementi di automazione sono singoli componenti nell'interfaccia utente. Spesso possono essere più granulari di un HWND.
  • Le proprietà di automazione forniscono informazioni specifiche sugli elementi dell'interfaccia utente. Per altre informazioni, vedere UI Automation Properties Overview.
  • I pattern di controllo definiscono un determinato aspetto della funzionalità di un controllo e possono essere costituiti da informazioni di proprietà, metodo, evento e struttura. Per altre informazioni, vedere UI Automation Control Patterns Overview.
  • Gli eventi di automazione forniscono notifiche e informazioni sugli eventi. Per altre informazioni, vedere UI Automation Events Overview.

Proprietà chiave per l'automazione di test

La possibilità di identificare e individuare in modo univoco qualsiasi controllo nell'interfaccia utente fornisce la base per il funzionamento delle applicazioni di test automatizzate su tale interfaccia utente. Automazione interfaccia utente proprietà usate da client e provider per identificare e individuare i controlli sono descritte nella tabella seguente.

Proprietà Descrizione
AutomationId Distingue in modo univoco un elemento di automazione dai relativi elementi di pari livello. Il supporto per la proprietà AutomationId non è obbligatorio. Quando è disponibile, la proprietà AutomationId di un elemento è la stessa in qualsiasi istanza dell'applicazione, indipendentemente dalla lingua locale. Anche se la proprietà AutomationId è univoca tra gli elementi di pari livello, potrebbe non essere univoca nell'intero desktop. Ad esempio, più istanze di un'applicazione o più visualizzazioni di cartelle in Microsoft Windows Explorer possono contenere elementi con la stessa AutomationIdProperty, ad esempio "SystemMenuBar". I client non devono fare ipotesi relative agli AutomationId esposti da altre applicazioni. AutomationId non è garantito che sia stabile in versioni o build diverse di un'applicazione.
ControlType Identifica il tipo di controllo rappresentato da un elemento di automazione. La conoscenza del tipo di controllo consente di acquisire informazioni significative. Per altre informazioni, vedere UI Automation Control Types Overview.
Nome Stringa di testo che identifica o spiega lo scopo di un elemento di automazione. Deve essere usato con cautela perché può essere localizzato. La proprietà Name non è un identificatore univoco tra i fratelli. Per l'automazione dei test, i client devono usare la proprietà AutomationId o la proprietà RuntimeId.
RuntimeId Matrice di interi che rappresentano un identificatore per un elemento di automazione. L'identificatore è univoco sul desktop, ma è garantito essere univoco solo per l'interfaccia utente del desktop in cui è stato generato. Gli identificatori possono essere riutilizzati nel tempo. Usare IUIAutomation::CompareElements per determinare se l'elemento che attualmente ha un ID di runtime specifico è lo stesso elemento che in precedenza aveva tale ID. Inoltre, il formato della proprietà RuntimeId può cambiare. Deve essere considerato come valore opaco e usato solo per il confronto; ad esempio, per determinare se un elemento di automazione si trova nella cache.

 

Controllo (Inspect.exe) è uno strumento basato su Windows che è possibile usare per raccogliere Automazione interfaccia utente informazioni per provider e sviluppo client e debug. L'ispezione è inclusa in Windows Software Development Kit (SDK).

considerazioni sulla sicurezza Automazione interfaccia utente