Тестирование крупного приложения с несколькими картами пользовательского интерфейса
В этой статье описывается, как использовать закодированные тесты ИП при тестировании сложного приложения с помощью нескольких карт ИП.
Требования
- Visual Studio Ultimate, Visual Studio Premium
При создании закодированного теста ИП платформа тестирования Visual Studio по умолчанию формирует код для теста в классе UIMap.Дополнительные сведения о записи закодированных тестов ИП см. в разделах Creating Coded UI Tests и Составляющие закодированного теста пользовательского интерфейса.
Созданный для карты ИП код содержит класс для каждого объекта, с которым он взаимодействует.Для каждого созданного метода создается вспомогательный класс с параметрами метода.Если в приложении много объектов, страниц, форм и элементов управления, карта ИП может стать очень большой.Кроме того, если несколько пользователей работают над тестами, приложение становится громоздким из-за слишком большого файла карты ИП.
Использование нескольких файлов карты ИП предоставляет следующие преимущества.
Каждую карту можно связать с логическим подмножеством приложения.Это упрощает управление изменениями.
Каждый тестировщик может работать с разделом приложения и возвращать код, не мешая работе других тестировщиков с другими разделами приложения.
Дополнения ИП приложения можно масштабировать инкрементально с минимальными последствиями для тестов других частей ИП.
Требуется ли вам несколько карт ИП?
Создайте несколько карт ИП в следующих ситуациях:
Несколько комплексных наборов составных элементов управления ИП, которые вместе выполняют логическую операцию, например страница регистрации веб-сайта или страница покупки корзины для покупок.
Независимый набор элементов управления, доступ к которым обращается из различных точек приложения, например мастер с несколькими страницами операций.Если в мастере каждая страница сложная, можно создать отдельные карты ИП для каждой страницы.
Добавление нескольких карт ИП
Добавление сопоставления пользовательского интерфейса в проект кодированных тестов пользовательского интерфейса
Чтобы создать папку в проекте закодированного теста ИП для хранения всех карт ИП, в обозревателе решений щелкните правой кнопкой файл проекта теста, выберите пункт Добавить и выберите Создать папку.Например, можно указать имя UIMaps.
Новая папка появится в проекте закодированного теста ИП.
Щелкните правой кнопкой мыши папку UIMaps, выберите Добавить, а затем выберите Создать элемент.
Откроется диалоговое окно Добавление нового элемента.
Примечание Чтобы добавить новую карту закодированного теста ИП, необходимо быть в проекте закодированного теста ИП.
Выберите Карта кодированного теста ИП из списка.
В поле Имя введите имя новой карты ИП.Используйте имя компонента или страницы, которую представляет карта, например HomePageMap.
Выберите Добавить.
Окно Visual Studio свернется и появится диалоговое окно Построитель кодированных тестов ИП.
Запишите действия для первого метода и нажмите кнопку Создать код.
После записи всех действий и утверждений для первого компонента или страницы и их группировки в методы закройте диалоговое окно Построитель кодированных тестов ИП.
Продолжите создание карт ИП.Запишите действия и утверждения, сгруппируйте их в методы для каждого компонента, а затем создайте код.
Во многих случаях окно верхнего уровня для приложения остается постоянным для всех мастеров, форм и страниц.Хотя у каждой карты ИП есть класс для окна верхнего уровня, все карты, вероятно, ссылаются на одно и то же окно верхнего уровня, в котором работают все компоненты вашего приложения.Закодированные тесты ИП выполняют поиск элементов управления иерархически сверху вниз, начиная с окна верхнего уровня. Поэтому в сложном приложении реальное окно верхнего уровня может дублироваться в каждой карте ИП.Если реальное окно верхнего уровня дублируется, после его редактирования возникнет много изменений.Это может вызвать проблемы с производительностью при переключении между картами ИП.
Используйте метод 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.
}
См. также
Ссылки
Основные понятия
Проверка кода с помощью модели автоматизации пользовательского интерфейса
Составляющие закодированного теста пользовательского интерфейса