Коллеги, привет!
Мы давно уже планировали генерировать тесты на основе метаданных, и вот - зацените первые результаты (осторожно, звук)!
На текущий момент фича в ранней бета-версии, активно разрабатывается и обрастает новыми возможностями. Уже реализовано следующее:
Описание компонентов страниц
Для каждой формы, панели, филдсета и реестра генерируется объектная модель, позволяющая писать код теста быстро и удобно. Пример сгенерированного описания закладки Сведения, расположенной в панели вкладок
формы Федеральный проект.Создание.Версия
Разверните для просмотра кода
public class BarsUpPageCmp_Сведения : ExtJsTab
{
/// <summary>
/// Форма редактирования поля []
/// Идентификатор [f3085fe7-23d2-4616-bd84-47d2212b00c9]
public FederalProjectCreationEditorPageObject Форма_редактирования_поля { get; internal set; }
/// <summary>
/// Многострочный редактор текста [Наименование:]
/// Идентификатор [f457b9d0-dc2f-4300-9900-15d9f02691f7]
/// Поле сущности: Версия проекта.Наименование
/// </summary>
public ExtJsFormField<string> Наименование_ { get; internal set; }
/// <summary>
/// Однострочный редактор текста [Код проекта]
/// Идентификатор [2c94e9a2-bccd-4d5e-86f6-d94d2cdf9e02]
/// Поле сущности: Версия проекта.Код проекта
/// </summary>
public ExtJsFormField<string> Код_проекта { get; internal set; }
/// <summary>
/// Скрытое поле [Идентификатор]
/// Идентификатор [6454b5d3-3ee1-424b-801f-5c05e35239a3]
/// Поле сущности: Версия проекта.Идентификатор
/// </summary>
public ExtJsFormField<long?> Идентификатор { get; internal set; }
/// <summary>
/// Однострочный редактор текста [Краткое наименование:]
/// Идентификатор [6306d4d3-a395-42db-ac58-ad3e5d9c78ca]
/// Поле сущности: Версия проекта.Краткое наименование проекта
/// </summary>
public ExtJsFormField<string> Краткое_наименование_ { get; internal set; }
/// <summary>
/// Выбор из справочника [Код проекта (по БК)]
/// Идентификатор [2165e661-a278-4bb7-88ce-c3f0359cc956]
/// Поле сущности: Версия проекта.Код по БК
/// </summary>
public BarsUpSelectorField<NationalProjectModel> Код_проекта__по_БК_ { get; internal set; }
/// <summary>
/// Поле ввода даты [Дата начала]
/// Идентификатор [99a0045b-ae3d-4a6c-8ed6-dd3ae837d929]
/// Поле сущности: Версия проекта.Дата начала
/// </summary>
public ExtJsFormField<DateTime?> Дата_начала { get; internal set; }
/// <summary>
/// Поле ввода даты [Дата окончания]
/// Идентификатор [cffdfd99-a787-4305-84b2-343f7f48db6c]
/// Поле сущности: Версия проекта.Дата окончания
/// </summary>
public ExtJsFormField<DateTime?> Дата_окончания { get; internal set; }
/// <summary>
/// Выпадающий список (перечисление) [Вид проекта]
/// Идентификатор [8f7abfa6-3a31-4196-a3f6-99ad1ffca114]
/// Поле сущности: Версия проекта.Вид проекта
/// </summary>
public BarsUpEnumField<ProjectKindEnum> Вид_проекта { get; internal set; }
/// <summary>
/// Флажок [Отображать в реестре проектов]
/// Идентификатор [65883673-483c-4d3c-962b-0c7d0559bcbb]
/// Поле сущности: Версия проекта.Отображать в реестре проектов
/// </summary>
public ExtJsFormField<bool?> Отображать_в_реестре_проектов { get; internal set; }
}
Кликер, обходящий реестры, включенные меню
Для каждого пункта меню генерируется тест, проверяющий возможность перехода на соответствующий адрес, и прокликивающий открывшийся реестр
- клик на кнопку Обновить если она есть
- получение списка записей
- обход списка записей и открытие каждой записи в настроенном в реестре редакторе
- если редакторов несколько (как на реестра ФП, например), то будет протестировано открытие всех редакторов
В будущем планируется добавить и прокликивание редакторов
- открытие всех табов
- открытие всех узлов панели навигации
- прокликивание вложенных реестров
Таким образом уже в этом году все проекты получат инструмент дополнительной проверки работоспособности приложения перед обновлением.
В конце хочется сказать спасибо БЦ УНП - очень тяжело педалить фичу, если не знаешь куда ее применить, но коллеги из УНП первыми проявили заинтересованность и подали несколько хороших идей.