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.

Anforderungen

  • Visual Studio Ultimate, Visual Studio Premium

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 Erstellen von Tests der codierten 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

Um eine UI-Zuordnung dem Test der codierten UI fügen Sie

  1. In Projektmappen-Explorer einen Ordner im Test der codierten UI-Projekt zu erstellen, alle UI-Zuordnungen gespeichert, klicken Sie auf die Tests der codierten UI-Projektdatei mit der rechten Maustaste, zeigen Sie auf Hinzufügen und wählen Sie dann Neuer Ordner aus.Verwenden Sie für diesen Ordner z. B. den Namen UIMaps.

    Der neue Ordner wird unter dem Test der codierten UI-Projekt angezeigt.

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

    Das Dialogfeld Neues Element hinzufügen wird angezeigt.

    HinweisHinweis

    Sie müssen in einem Test der codierten UI-Projekt sein, eine neue Zuordnung der codierten UI hinzuzufügen.

  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. Wählen Sie Hinzufügen aus.

    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 wählen Sie Code generieren aus.

  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

Referenz

UIMap

CopyFrom

Konzepte

Überprüfen von Code mithilfe von Test der codierten Benutzeroberfläche

Anatomy of a Coded UI Test

Weitere Ressourcen

Erstellen von Tests der codierten UI