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


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

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

Требования

  • Visual Studio Ultimate, Visual Studio Premium

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

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

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

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

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

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

Требуется ли вам несколько карт ИП?

Создайте несколько карт ИП в следующих ситуациях:

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

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

Добавление нескольких карт ИП

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

  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

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

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

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

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

Creating Coded UI Tests