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