Freigeben über


Testing a Large Application with Multiple UI Maps

In diesem Thema wird beschrieben, wie Tests der codierten UI beim Testen einer großen Anwendung mit mehreren UI-Zuordnungen verwendet werden.

Wenn Sie einen neuen Test der codierten UI erstellen, generiert das Visual Studio-Testframework standardmäßig in einer UIMap-Klasse Code für den Test. Weitere Informationen zum Aufzeichnen von Tests der codierten UI finden Sie unter Gewusst wie: Erstellen eines Tests für codierte UI und Anatomy of a Coded UI Test.

Der generierte Code für die UI-Zuordnung enthält eine Klasse für jedes Objekt, mit dem der Test interagiert. Für jede generierte Methode wird eine eigene Assistentenklasse für Methodenparameter generiert. Wenn die Anwendung viele Objekte, Seiten, Formulare und Steuerelemente enthält, kann die UI-Zuordnung sehr groß werden. Zudem wird die Handhabung der Anwendung erschwert, wenn mehrere Personen an Tests arbeiten und nur eine große UI-Zuordnungsdatei verwendet wird.

Die Verwendung mehrerer UI-Zuordnungsdateien kann die folgenden Vorteile bieten:

  • Jede Zuordnung kann einer logischen Teilmenge der Anwendung zugeordnet werden. Dies vereinfacht die Verwaltung.

  • Jeder Tester kann an einem Abschnitt der Anwendung arbeiten und seinen Code einchecken, ohne an anderen Abschnitten der Anwendung arbeitende Tester zu stören.

  • Hinzufügungen zur Benutzeroberfläche der Anwendung können inkrementell mit minimaler Auswirkung auf Tests für andere Teile der Benutzeroberfläche skaliert werden.

Benötigen Sie mehrere UI-Zuordnungen?

In den folgenden Situationen sollten mehrere UI-Zuordnungen erstellt werden:

  • Es sind mehrere komplexe Sätze von zusammengesetzten UI-Steuerelementen vorhanden, die zusammen eine logische Operation ausführen (z. B. eine Registrierungsseite auf einer Website oder die Einkaufsseite eines Einkaufswagens).

  • Es ist ein unabhängiger Satz von Steuerelementen vorhanden, auf den von verschiedenen Punkten der Anwendung zugegriffen wird (z. B. ein Assistent mit mehreren Seiten von Vorgängen). Wenn die einzelnen Seiten eines Assistenten besonders komplex sind, können Sie separate UI-Zuordnungen für jede Seite erstellen.

Hinzufügen mehrerer UI-Zuordnungen

So fügen Sie dem Projekt eine UI-Zuordnung hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Testprojektdatei, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neuer Ordner, um einen Ordner im Testprojekt zu erstellen, in dem alle UI-Zuordnungen gespeichert werden. Verwenden Sie für diesen Ordner z. B. den Namen UIMaps.

    Der neue Ordner wird unter dem Testprojekt angezeigt.

  2. Klicken Sie mit der rechten Maustaste auf den Ordner UIMaps, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

    Das Dialogfeld Neues Element hinzufügen wird angezeigt.

    Tipp

    Eine neue Testzuordnung für codierte UI kann nur in einem Testprojekt hinzugefügt werden.

  3. Wählen Sie in der Liste Testzuordnung für codierte UI aus.

    Geben Sie im Feld Name einen Namen für die neue UI-Zuordnung ein. Verwenden Sie den Namen der Komponente oder Seite, die von der Zuordnung dargestellt wird, z. B. HomePageMap.

  4. Klicken Sie auf Hinzufügen.

    Das Visual Studio-Fenster wird minimiert, und das Dialogfeld Test-Generator für codierte UI wird angezeigt.

  5. Zeichnen Sie die Aktionen für die erste Methode auf, und klicken Sie auf Code generieren.

  6. Nachdem Sie alle Aktionen und Assertionen für die erste Komponente oder Seite aufgezeichnet und in Methoden gruppiert haben, schließen Sie das Dialogfeld Test-Generator für codierte UI.

  7. Erstellen Sie weitere UI-Zuordnungen. Zeichnen Sie die Aktionen und Assertionen auf, gruppieren Sie sie in Methoden für jede Komponente, und generieren Sie dann den Code.

In vielen Fällen bleibt das Fenster der obersten Ebene der Anwendung für alle Assistenten, Formulare und Seiten unverändert. Obwohl jede UI-Zuordnung über eine Klasse für das Fenster der obersten Ebene verfügt, verweisen alle Zuordnungen wahrscheinlich auf das gleiche Fenster der obersten Ebene, in dem alle Komponenten der Anwendung ausgeführt werden. Bei Tests der codierten UI wird hierarchisch von oben nach unten nach Steuerelementen gesucht, beginnend mit dem Fenster der obersten Ebene. In einer komplexen Anwendung kann das tatsächliche Fenster der obersten Ebene daher in jeder UI-Zuordnung dupliziert werden. Wenn das tatsächliche Fenster der obersten Ebene dupliziert wird, sind bei Änderungen dieses Fensters mehrere Änderungen erforderlich. Dies kann zu Leistungsproblemen führen, wenn Sie zwischen UI-Zuordnungen wechseln.

Sie können diesen Effekt minimieren, indem Sie mit der CopyFrom()-Methode sicherstellen, dass das neue Fenster der obersten Ebene in dieser UI-Zuordnung mit dem Hauptfenster der obersten Ebene identisch ist.

Beispiel

Das folgende Beispiel ist Teil einer Hilfsprogrammklasse, die Zugriff auf jede Komponente und die zugehörigen untergeordneten Steuerelemente bietet, die durch die in den verschiedenen UI-Zuordnungen generierten Klassen dargestellt werden.

In diesem Beispiel enthält eine Webanwendung mit dem Namen Contoso eine Homepage, eine Produktseite und eine Einkaufswagenseite. Für diese Seiten wird ein gemeinsames Fenster der obersten Ebene verwendet, das Browserfenster. Für jede Seite ist eine UI-Zuordnung vorhanden, und der Code der Hilfsprogrammklasse ähnelt dem folgenden Codebeispiel:

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.
}

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines Tests für codierte UI

Referenz

UIMap

CopyFrom

Weitere Ressourcen

Anatomy of a Coded UI Test