Действия в QTP/UFT с примером
⚡ Умное резюме
Действия в UFT/QTP Разделите тестовый сценарий на логические, многократно используемые блоки, чтобы тестировщики могли быстрее создавать, поддерживать и обмениваться автоматизацией. На этой странице объясняются три типа действий, как их разделить и вызвать, а также как передавать данные между действиями.
Что такое действие в UFT/QTP?
Действия in UFT/QTP Разделите тест на «логические единицы» или «бизнес-процессы». Каждое действие объединяет шаги, выполняющие одну узнаваемую задачу, например, вход в систему, поиск рейса или бронирование билета. Действия помогают создать более модульный и эффективный сценарий.
При создании нового скрипта он состоит всего из одного действия. Вы можете добавить в свой Micro Focus и другие действия. UFT Скрипт создается в соответствии с требованиями, и каждое добавленное действие сохраняет свою собственную логику и локальные данные, отделенные от остальной части теста.
Разбиение длинного скрипта на действия окупается в тот момент, когда тесту необходимо внести изменения. Тестировщик может обновить одно действие, например, последовательность входа в систему, не затрагивая логику поиска или оформления заказа, которая находится в других действиях. Такая изоляция также превращает действия в многократно используемые строительные блоки, которые могут вызывать другие скрипты вместо повторной записи тех же шагов.
Типичный скрипт бронирования авиабилетов, например, четко разделяется на действие «Вход в систему», действие «Поиск рейса» и действие «Забронировать билет». Каждое из них имеет свои собственные шаги и локальные данные, поэтому тестировщику, которому нужно только проверить вход в систему, вообще не нужно записывать или поддерживать процесс бронирования.
Типы действий в UFT/QTPМногоразовые, одноразовые и наружные
UFT/QTP Поддерживаются три типа действий, и выбранный вами тип определяет, можно ли использовать действие совместно в разных скриптах или оно остается приватным для того теста, в котором оно было создано.
| Тип действия | Где это может работать | Редактируется в тестовом вызове |
|---|---|---|
| Многоразовый | Один и тот же тест, несколько раз, или любой другой тест. | Да, судя по тесту, который его тестировал. |
| Одноразовый | Только в том тесте, где он был создан, и только один раз. | Да |
| Внешний многоразовый | Вызывается из другого теста как общее, сохраненное действие. | Нет, только для чтения; редактировать можно только локальную копию таблицы данных. |
Многократно используемое действие становится внешние действия В тот момент, когда его вызывает другой тест, а не тот, которому он принадлежит, внешние действия остаются доступными только для чтения в вызывающем тесте, поскольку общее действие может использоваться десятками скриптов одновременно, и разрешение каждому вызывающему скрипту редактировать шаги нарушит работу остальных. Вы по-прежнему можете параметризовать вызов и работать локально с копией его таблицы данных.
Как правило, новое действие следует делать непереиспользуемым, пока его логика остается специфичной для одного теста. PromoСделайте его многоразовым, как только второму скрипту понадобятся те же шаги, и ожидайте, что он будет вести себя как внешнее действие только для чтения в тот момент, когда этот второй скрипт фактически его вызовет.
Как разделить, скопировать и вызвать действия в UFT
По мере развития событий, продолжайтеping Выполнение каждого шага в одном месте затрудняет отладку и повторное использование скрипта. UFT позволяет разделить существующее действие на два этапа, когда оно становится неудобным в использовании.
- Независимое (родственное) разделение: Выбранное действие разделяется на два отдельных действия, которые выполняются одно за другим, каждое из которых...ping собственная локальная таблица данных.
- Вложенное (родитель-потомок) разделение: Выбранное действие разделяется на родительское действие, последний шаг которого вызывает второе, дочернее действие, сохраняя логическую зависимость между ними.
После того, как действия уже совершены, UFT Предлагаются три способа добавить действие в тест из Вставить меню:
- Вставить призыв к новому действию: Создает новое, пустое действие внутри текущего теста.
- Вставить ссылку на текст действия: Копирует существующее действие целиком, включая контрольные точки, параметризацию и вкладку «Таблица данных», в вызывающий тест. Копия полностью независима, поэтому изменения никогда не влияют на оригинал и не затрагиваются им. Можно копировать как многократно используемые, так и не многократно используемые действия.
- Вставить призыв к существующему действию: Вставляет вызов функции, доступной только для чтения, к многократно используемому действию, хранящемуся в другом тесте. Изменить её можно только в том тесте, где она была создана, что обеспечивает синхронизацию всех вызывающих функций и упрощает поддержку больших наборов тестов.
Каждый вызов компилируется в... RunAction Заявление в разделе «Мнение эксперта»:
' Calls Action2, which is stored in Test2, running it for one iteration RunAction "Action2[Test2]", oneIteration
Действие выполняется столько раз, сколько указано в его свойствах вызова действия. Например, если действие Action2 настроено на выполнение при каждой итерации таблицы данных Test2, но вызывающее действие Action1 в Test1 выполняется только один раз, действие Action2 все равно будет выполнено только один раз, поскольку сам вызов запускается только один раз.
💡 Совет: Если тест содержит несколько действий, откройте его. Тест Поток Используйте панель из меню «Вид», чтобы перетаскивать и изменять порядок элементов. Это изменяет последовательность, в которой... UFT Выполняет действия без редактирования шагов внутри какого-либо отдельного действия.
Видео ниже основано на пятиэтапном сценарии входа в систему, созданном в предыдущих уроках. Бронирование авиабилетов В видео подробно рассматривается процесс создания, разделения и вызова действий от начала до конца. Это самое длинное видео в этой серии. UFT/QTP серия обучающих материаловПоэтому полезно делать заметки во время просмотра.
Нажмите здесь если видео недоступно
Как передавать параметры и сохранять выходные значения между действиями
Помимо вызова действия, большинству реальных скриптов необходимо передавать в него данные и считывать результат обратно. UFT Каждое действие получает собственные входные и выходные параметры, а также несколько способов сохранения возвращаемых данных.
Передача параметров в действие и из него
Так же, как функции или методы В языках программирования действие может определять входные и выходные данные. параметрыЭтот параметр не имеет отношения к Параметризация тестовых данных Как уже говорилось ранее, параметры здесь относятся к самому действию, а не к столбцу таблицы данных. Настройте их из... Редактировать > Действие > Свойства действияили щелкнув правой кнопкой мыши по действию в окне «Ключевые слова». Передавайте значения при вызове, используя следующий синтаксис:
' Passes an input value and captures the action's output into myResult RunAction "Action1", oneIteration, "testuser", myResult
Сохранение выходного значения действия
В зависимости от потребностей остальной части скрипта, возвращаемое значение действия можно хранить в одном из трех мест:
- Переменная:
RunAction "Action1", oneIteration, "testuser", myResultсохраняет результат непосредственно вmyResult. - An переменная среды: создайте пользовательскую переменную в Файл > Настройки > Окружениезатем напишите
RunAction "Action1", oneIteration, "testuser", Environment("env_var"). - Столбец таблицы данных:
RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet)Результат записывается непосредственно в глобальную таблицу.
Глобальные и локальные таблицы данных
Действия считывают и записывают тестовые данные через два типа листов. Глобальная таблица данных Эта переменная уникальна для всего теста; любое действие может считывать из неё данные или записывать в неё информацию, и она всегда называется «Глобальная». Локальный информационный лист Этот объект уникален для каждого действия, назван в честь этого действия, и только его собственное действие может его прочитать или записать.
Выход из действия и управление итерацией
Когда на каком-либо этапе необходимо остановить действие на ранней стадии, а не позволить ему завершиться, UFT содержит четыре утверждения:
ExitAction— останавливает только текущее действие.ExitActionIteration— останавливает текущую итерацию действия и переходит к следующей.ExitRun— Немедленно останавливает весь тестовый запуск.ExitGlobalIteration— останавливает текущую глобальную итерацию тестирования и переходит к следующей.
При выполнении UFT/QTP скрипт При использовании действий помните о глобальных и локальных итерациях, поскольку оба параметра влияют на количество фактически выполнений действия. Вы можете изменить частоту повторения вызываемого действия, открыв соответствующую программу. Свойства вызова действия > Выполнить вкладка и установка режима итерации там.
⚠ Распространенная ошибка: Вызываемое действие, настроенное на выполнение в каждой локальной итерации, но запускаемое из родительского элемента, который выполняется только один раз, все равно будет выполнено только один раз. Перед тем как предполагать, что вызываемое действие будет повторяться, подтвердите как глобальное количество итераций родительского элемента, так и свойства вызова действия дочернего элемента.

