Condividi tramite


Test di un'applicazione di grandi dimensioni con più mappe dell'interfaccia utente

In questo argomento viene illustrato l'utilizzo dei test codificati dell'interfaccia utente quando si esegue il test di un'applicazione di grandi dimensioni utilizzando più mappe dell'interfaccia utente.

Quando si crea un nuovo test codificato dell'interfaccia utente, per impostazione predefinita il framework di test di Visual Studio genera codice per il test in una classe UIMap. Per ulteriori informazioni sulla registrazione di test codificati dell'interfaccia utente, vedere Procedura: creare un test codificato dell'interfaccia utente e Composizione di un test codificato dell'interfaccia utente.

Il codice generato per la mappa dell'interfaccia utente contiene una classe per ciascun oggetto con cui il test interagisce. Per ciascun metodo generato, viene generata una classe complementare per i parametri del metodo, specifica per quel metodo. In presenza di un elevato numero di oggetti, pagine, form e controlli nell'applicazione, le dimensioni della mappa dell'interfaccia utente possono aumentare notevolmente. Inoltre, se diverse persone stanno operando sui test, l'applicazione può diventare difficile da gestire con un unico file di mappa dell'interfaccia utente di grandi dimensioni.

L'utilizzo di più file di mappa dell'interfaccia utente può presentare i vantaggi seguenti:

  • Ciascuna mappa può essere associata a un sottoinsieme logico dell'applicazione. Ciò semplifica la gestione delle modifiche.

  • Ciascun tester può operare su una sezione dell'applicazione e archiviare il proprio codice senza interferire con altri tester che lavorano con altre sezioni dell'applicazione.

  • Le aggiunte all'interfaccia utente dell'applicazione possono essere adattate in modo incrementale con impatto minimo sui test per altre parti dell'interfaccia utente.

Sono necessarie più mappe dell'interfaccia utente?

Creare più mappe dell'interfaccia utente nei seguenti tipi di situazioni:

  • Diversi set complessi di controlli dell'interfaccia utente composti, che insieme eseguono un'operazione logica, ad esempio una pagina di registrazione in un sito Web o la pagina di acquisto per un carrello acquisti.

  • Un set indipendente di controlli cui si accede da vari punti dell'applicazione, ad esempio una procedura guidata con diverse pagine di operazioni. Se ciascuna delle pagine di una procedura guidata è particolarmente complessa, è possibile creare mappe dell'interfaccia utente separate per ogni pagina.

Aggiunta di più mappe dell'interfaccia utente

Per aggiungere una mappa dell'interfaccia utente al progetto

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file del progetto di test, selezionare Aggiungi quindi fare clic su Nuova cartella per creare una cartella nel progetto di test in cui archiviare tutte le mappe dell'interfaccia utente. La cartella potrebbe, ad esempio, essere denominata UIMaps.

    La nuova cartella viene visualizzata sotto il progetto di test.

  2. Fare clic con il pulsante destro del mouse sulla cartella UIMaps, selezionare Aggiungi e fare clic su Nuovo elemento.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

    Nota

    È necessario essere in un progetto di test per aggiungere una nuova mappa di test codificato dell'interfaccia utente.

  3. Selezionare Mappa di test codificati dell'interfaccia utente dall'elenco.

    Digitare un nome per la nuova mappa dell'interfaccia utente nella casella Nome. Utilizzare il nome del componente o della pagina che la mappa rappresenterà, ad esempio, HomePageMap.

  4. Fare clic su Aggiungi.

    Verrà visualizzata la finestra di dialogo di Visual Studio Generatore di test codificati dell'interfaccia utente.

  5. Registrare le azioni per il primo metodo e fare clic su Genera codice.

  6. Una volta registrate tutte le azioni e le asserzioni per il primo componente o pagina e dopo averle raggruppate in metodi, chiudere la finestra di dialogo Generatore di test codificati dell'interfaccia utente.

  7. Continuare a creare mappe dell'interfaccia utente. Registrare le azioni e le asserzioni, raggrupparle in metodi per ogni componente, quindi generare il codice.

In molti casi, la finestra di primo livello dell'applicazione rimane costante per tutte le procedure guidate, le pagine e i form. Sebbene ciascuna mappa dell'interfaccia utente disponga di una classe per la finestra di primo livello, tutte le mappe fanno probabilmente riferimento alla stessa finestra di primo livello, all'interno della quale vengono eseguiti tutti i componenti dell'applicazione. I test codificati dell'interfaccia utente effettuano ricerche di controlli in modo gerarchico, dall'alto verso il basso, a partire dalla finestra di primo livello. Pertanto, in un'applicazione complessa, la vera finestra di primo livello potrebbe essere duplicata in ogni mappa dell'interfaccia utente. Se la vera finestra di primo livello è duplicata, qualsiasi cambiamento in tale finestra darà luogo a modifiche multiple. Ciò potrebbe causare problemi di prestazioni quando si passa da una mappa dell'interfaccia utente a un'altra.

Per mitigare questo fenomeno, è possibile utilizzare il metodo CopyFrom() per assicurarsi che la nuova finestra di primo livello in una determinata mappa dell'interfaccia utente corrisponda alla finestra principale di primo livello.

Esempio

L'esempio seguente fa parte di una classe di utilità che fornisce accesso a ciascun componente e ai relativi controlli figlio, rappresentati dalle classi generate nelle varie mappe dell'interfaccia utente.

In questo esempio un'applicazione Web denominata Contoso dispone di una home page, di una pagina prodotto e di una pagina carrello acquisti. Ognuna di queste pagine condivide una finestra di primo livello comune, che corrisponde alla finestra del browser. È presente una mappa dell'interfaccia utente per ciascuna pagina e la classe di utilità presenta del codice simile al seguente:

using ContosoProject.UIMaps;
using ContosoProject.UIMaps.HomePageClasses;
using ContosoProject.UIMaps.ProductPageClasses;
using ContosoProject.UIMaps.ShoppingCartClasses;

namespace ContosoProject
{
    public class TestRunUtility
    {
        // Private fields for the properties
        private HomePage homePage = null;
        private ProductPage productPage = null;
        private ShoppingCart shoppingCart = null;

        public TestRunUtility()
        {
            homePage = new HomePage();
        }

        // Properties that get each UI Map
        public HomePage HomePage
        {
            get { return homePage; }
            set { homePage = value; }
        }

        // Gets the ProductPage from the ProductPageMap.
        public ProductPage ProductPageObject
        {
            get
            {
                if (productPage == null)
                {
                    // Instantiate a new page from the UI Map classes
                    productPage = new ProductPage();

                    // Since the Product Page and Home Page both use
                    // the same browser page as the top level window,
                    // get the top level window properties from the
                    // Home Page.
                    productPage.UIContosoFinalizeWindow.CopyFrom(
                        HomePage.UIContosoWindowsIWindow);
                }
                return productPage;
            }
        }

    // Continue to create properties for each page, getting the 
    // page object from the corresponding UI Map and copying the 
    // top level window properties from the Home Page.
}

Vedere anche

Attività

Procedura: creare un test codificato dell'interfaccia utente

Riferimenti

UIMap

CopyFrom

Altre risorse

Composizione di un test codificato dell'interfaccia utente