Поделиться через


Тестирование крупного приложения с несколькими картами пользовательского интерфейса

В этом разделе рассматривается использование закодированных тестов пользовательского интерфейса при тестировании большого приложения с помощью нескольких карт пользовательского интерфейса.

Требования

  • Visual Studio Ultimate, Visual Studio Premium

При создании нового закодированного теста пользовательского интерфейса среда тестирования Visual Studio создает код для теста по умолчанию в классе UIMap.Дополнительные сведения о записи закодированных тестов пользовательского интерфейса см. в разделах Создание закодированных тестов пользовательского интерфейса и Составляющие закодированного теста пользовательского интерфейса.

Сформированный код карты пользовательского интерфейса содержит класс для каждого объекта, с которым взаимодействует тест.Для параметров каждого сформированного метода специально создается отдельный вспомогательный класс.Если в приложении содержится большое число объектов, страниц, форм и элементов управления, размер карты пользовательского интерфейса может значительно возрасти.Кроме того, если с тестом работает несколько пользователей, то приложение с одним большим файлом карты пользовательского интерфейса становится слишком громоздким.

Использование нескольких файлов карты пользовательского интерфейса может обеспечить следующие преимущества.

  • Каждая карта может быть связана с логическим подмножеством приложения.Благодаря этому упрощается управление изменениями.

  • Каждый тест-инженер может работать с одним разделом приложения и возвращать свой код, не мешая остальным тест-инженерам, которые работают с другими разделами приложения.

  • Добавления пользовательского интерфейса приложения можно реализовывать последовательно с минимальным влиянием на тесты других частей пользовательского интерфейса.

Необходимость использования нескольких карт пользовательского интерфейса

Несколько карт пользовательского интерфейса следует создавать в каждом из следующих типов ситуаций.

  • Несколько сложных наборов составных элементов управления пользовательского интерфейса, которые совместно выполняют одну логическую операцию, например страницу регистрации на веб-сайте или страницу покупки для покупательской корзины.

  • Независимый набор элементов управления, доступ к которым осуществляется из различных точек приложения, как, например, в мастере с несколькими страницами операций.Если все страницы мастера характеризуются особенной сложностью, можно создать отдельную карту пользовательского интерфейса для каждой страницы.

Добавление нескольких карт пользовательского интерфейса

Добавление сопоставления пользовательского интерфейса в проект закодированных тестов пользовательского интерфейса

  1. В поле Обозреватель решений, чтобы создать папку в проекте закодированных тестов пользовательского интерфейса для хранения любых сопоставления пользовательского интерфейса, щелкните правой кнопкой мыши файл проекта закодированных тестов пользовательского интерфейса, укажите пункт Добавить и выберите Новая папка.Эту папку можно назвать, например, UIMaps.

    Новая папка отображается в проекте закодированных тестов пользовательского интерфейса.

  2. Щелкните правой кнопкой мыши папку UIMaps, выберите команду Добавить, а затем выберите Создать элемент.

    Откроется диалоговое окно Добавление нового элемента.

    ПримечаниеПримечание

    Необходимо перейти в проекте закодированных тестов пользовательского интерфейса добавить новое сопоставление закодированных тестов пользовательского интерфейса.

  3. Выберите в списке значение Карта кодированного теста ИП.

    В поле Имя введите имя новой карты пользовательского интерфейса.Используйте имя компонента или страницы, которую представляет данная карта, например HomePageMap.

  4. Выберите Добавить.

    Окно Visual Studio сворачивается, и открывается диалоговое окно Построитель кодированных тестов ИП.

  5. Запишите действия для первого метода и выберите Сформировать код.

  6. Завершив запись всех действий и утверждений для первого компонента или страницы и сгруппировав их в методы, закройте диалоговое окно Построитель кодированных тестов ИП.

  7. Продолжите создание карт пользовательского интерфейса.Запишите действия и утверждения для каждого компонента, сгруппируйте их в методы, а затем сформируйте код.

Во многих случаях окно приложения верхнего уровня остается неизменным для всех мастеров, форм и страниц.Хотя каждая карта пользовательского интерфейса содержит класс для окна верхнего уровня, все карты, скорее всего, ссылаются на одно окно верхнего уровня, в котором выполняются все компоненты приложения.Закодированные тесты пользовательского интерфейса выполняют поиск элементов управления в иерархическом порядке, начиная с окна верхнего уровня, поэтому в сложных приложениях реальное окно верхнего уровня может дублироваться в каждой карте пользовательского интерфейса.В случае дублирования реального окна верхнего уровня изменение этого окна приведет к нескольким изменениям.Это может вызывать проблемы производительности при переключении между картами пользовательского интерфейса.

Чтобы свести последствия дублирования к минимуму, можно использовать метод CopyFrom(), который обеспечивает совпадение окна верхнего уровня в отдельной карте пользовательского интерфейса с главным окном верхнего уровня.

Пример

Следующий пример является фрагментом служебного класса, предоставляющего доступ к каждому компоненту и его дочерним элементам управления, которые представлены классами, сформированными в различных картах пользовательского интерфейса.

В этом примере веб-приложение Contoso содержит домашнюю страницу, страницу продуктов и страницу покупательской корзины.Для каждой из этих страниц предусмотрено общее окно верхнего уровня, которое является окном браузера.Для каждой страницы имеется карта пользовательского интерфейса, и служебный класс состоит из кода, аналогичного следующему:

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

См. также

Ссылки

UIMap

CopyFrom

Основные понятия

Проверка кода с помощью закодированных тестов пользовательского интерфейса

Составляющие закодированного теста пользовательского интерфейса

Другие ресурсы

Создание закодированных тестов пользовательского интерфейса