Интеллектуальная идентификация в QTP/UFT с примером
⚡ Умное резюме
Интеллектуальная идентификация — это резервный механизм в UFT Функция поиска объекта, когда его полученное описание больше не соответствует тестируемому приложению, использует базовые и необязательные свойства фильтра для сужения списка кандидатов до одного совпадения.

Что такое интеллектуальная идентификация в... QTP/UFT?
Интеллектуальная идентификация является резервным механизмом распознавания объектов в OpenText UFT Во-первых, инструмент, ранее известный как HP QuickTest Professional (QTPЕсли обычный процесс идентификации не может найти уникальное соответствие для изученного описания объекта, UFT Запускает интеллектуальную идентификацию при условии, что этот механизм включен в настройках идентификации объектов для класса данного объекта.
В отличие от обученного описания, интеллектуальная идентификация не требует точного совпадения по каждому сохраненному свойству. Она оценивает две категории свойств, чтобы сузить круг потенциальных объектов до одного:
- Свойства базового фильтра. Наиболее фундаментальные свойства класса тестового объекта; те, значения которых не могут изменяться без изменения сущности исходного объекта.
- Дополнительные свойства фильтра. Вспомогательные свойства, которые помогают идентифицировать объект, но с большей вероятностью изменяются со временем.
Когда работает система интеллектуальной идентификации, UFT «Забывает» изученное описание и создает новый список кандидатов, содержащий все объекты, соответствующие всем базовым свойствам фильтра. Затем он сужает этот список, проверяя необязательные свойства фильтра по одному, пока не останется один объект.
Если в ходе выполнения программы запускается функция Smart Identification, дерево результатов теста регистрирует предупреждающее сообщение, подтверждающее использование этого механизма, и в результаты добавляется шаг Smart Identification, чтобы отклонение от изученного описания оставалось видимым.
Система интеллектуальной идентификации занимает третье место в рейтинге. UFTИерархия идентификации объектов располагается после изученного описания и любого визуального идентификатора связи, и перед порядковым идентификатором, используемым в крайнем случае. Понимание его места объясняет, почему полное отключение, а не исправление базовых свойств, редко является лучшим долгосрочным решением для скрипта, который часто запускается.
Базовые свойства фильтра против дополнительных свойств фильтра
Оба фильтра работают вместе, но играют разные роли в описанном выше процессе удаления. Приведенное ниже сравнение поясняет, когда используется каждый из них и какой эффективностью обладает каждый из них.
| Аспект | Свойства базового фильтра | Дополнительные свойства фильтра |
|---|---|---|
| Роли | Составьте первоначальный список кандидатов. | Сократите список кандидатов до одного объекта. |
| Стабильность | Практически никогда не меняются без изменения идентичности объекта. | Может периодически меняться, не меняя при этом идентичность объекта. |
| Правило соответствия | Каждый кандидат должен соответствовать всем базовым характеристикам. | Проверяли по одному объекту недвижимости; объект пропускали, если это исключало всех остальных кандидатов. |
| Типичный пример | HTML-тег, класс объекта, индекс | Имя, HTML-идентификатор, альтернативный текст, источник изображения |
| Где настроено | Идентификация объекта > Настройка > Свойства базового фильтра | Идентификация объектов > Настройка > Дополнительные свойства фильтра |
Поскольку одно и то же свойство не может находиться в обоих списках, тщательно спланируйте разделение. Свойства, определяющие сущность объекта, должны быть в базовом списке; свойства, которые лишь помогают отличить его от похожих объектов, должны быть в дополнительном списке.
Как работает интеллектуальная идентификация: пошаговый процесс
Функция интеллектуальной идентификации активируется только после того, как полученное описание и любой визуальный идентификатор не позволяют точно определить конкретный объект. После активации... UFT работает посредством предсказуемого четырехэтапного процесса исключения:
- Пересоставьте список кандидатов. UFT игнорирует полученное описание и сканирует родительский объект на наличие всех объектов, соответствующих всем свойствам базового фильтра.
- Примените первое необязательное свойство. UFT Удаляет всех кандидатов, которые не соответствуют первому свойству в списке дополнительных свойств фильтра.
- Оцените результат. Если останется более одного кандидата, UFT Повторяет предыдущий шаг со следующим необязательным свойством. Если фильтр исключает всех оставшихся кандидатов, UFT Вместо этого пропускает этот объект и переходит к следующему.
- Остановиться на одном матче. UFT Цикл фильтрации и оценки повторяется до тех пор, пока не останется ровно один объект или пока не закончатся необязательные свойства для проверки.
Если в процессе исключения по-прежнему не удается выделить отдельный объект, UFT В этом случае используется полученное описание в сочетании с порядковым идентификатором, таким как индекс, местоположение или время создания. Если даже эта комбинация не позволяет идентифицировать объект, сеанс выполнения приостанавливается и отображается ошибка выполнения.
Как включить или отключить интеллектуальную идентификацию
Функция интеллектуальной идентификации настраивается для каждого класса тестовых объектов. Инструменты > Идентификация объектовВыберите среду и класс объекта, включите Включить интеллектуальную идентификацию, затем нажмите Настроить Чтобы выбрать базовые и дополнительные свойства фильтра для этого класса, в этом же диалоговом окне можно отключить параметр для класса, который всегда должен использовать свое изученное описание.
Как работает интеллектуальная идентификация (видеообзор)
В видеоролике ниже показан процесс удаления базового и дополнительного фильтров на реальном примере.
Нажмите здесь если видео недоступно
Преимущества и недостатки использования интеллектуальной идентификации
Функция интеллектуальной идентификации повышает отказоустойчивость, но эта отказоустойчивость имеет свою цену во время выполнения. Прежде чем оставлять ее включенной по умолчанию для всего репозитория объектов, следует взвесить все за и против.
- ✅ Сохраняет незначительные изменения пользовательского интерфейса: Переименование атрибута или изменение его положения на странице больше не приводит к сбоям во всех скриптах, которые взаимодействуют с этим объектом.
- ✅ Сокращает объем работ по обслуживанию репозитория объектов: После небольших релизов пользовательского интерфейса тестировщики тратят меньше времени на повторную запись объектов.
- ✅ Остается видимым в результатах поиска: При каждом вызове регистрируется предупреждение, поэтому команды могут отслеживать, как часто действительно требуется резервный вариант.
- ⚠️ Более медленное выполнение тестов: Создание и фильтрация списка кандидатов занимает значительно больше времени, чем прямое сопоставление объектов недвижимости, и затраты многократно возрастают при работе с большим количеством объектов.
- ⚠️ Может маскировать реальные дефекты: Если система интеллектуальной идентификации незаметно обнаружит похожий объект, реальная ошибка в пользовательском интерфейсе может остаться незамеченной.
- ⚠️ Требует периодического пересмотра: Базовые и дополнительные свойства фильтров по-прежнему требуют периодического пересмотра по мере развития приложения.
Большинство команд оставляют функцию интеллектуальной идентификации включенной для исследовательских и низкочастотных скриптов, а затем выборочно отключают ее для объектов, критически важных с точки зрения производительности, как только свойства идентификации объекта стабилизируются.
Измените свойство объекта, чтобы избежать интеллектуальной идентификации
Гибкость функции Smart Identification достигается за счет описанных выше издержек во время выполнения, поэтому многие команды предпочитают самостоятельно исправлять свойства идентификации объектов, а не постоянно полагаться на резервный вариант. Обратите внимание на два признака того, что исправление свойств предпочтительнее резервного варианта во время выполнения: предупреждение Smart Identification, появляющееся почти при каждом запуске, и заметное замедление работы скрипта с момента начала работы резервного варианта. Оба признака указывают на объект, свойства идентификации по умолчанию которого больше не подходят для приложения, а не на разовый сбой пользовательского интерфейса. Видео ниже демонстрирует исправление на реальной форме входа в систему.
Нажмите здесь если видео недоступно
Текст видео: основные выводы
- Интеллектуальная идентификация замедляет выполнение скриптов, что нежелательно для больших или часто запускаемых тестовых наборов.
- Чтобы полностью избежать этого, измените свойства идентификации объекта по умолчанию, вместо того чтобы полагаться на резервный вариант.
- In Идентификация объектаУдалите "name" из списка обязательных свойств и замените его на "HTML id", чтобы тест не зависел от изменений имени.
- Повторите те же шаги после обновления обязательного списка объектов недвижимости.
- Если впоследствии имя изменится с «Submit» на «Login», скрипт будет выполняться без срабатывания функции интеллектуальной идентификации.
- Аналогично, если какое-либо обязательное или вспомогательное свойство тестируемого объекта часто изменяется, замените его более стабильным свойством, чтобы обеспечить быстрое выполнение скрипта.
- Настройка параметров объекта — это навык, приобретаемый с опытом; он совершенствуется по мере того, как вы больше работаете с инструментом.
Отключение интеллектуальной идентификации с помощью VBScript
Функцию интеллектуальной идентификации также можно отключить на весь сеанс работы, не затрагивая репозиторий объектов, используя следующий способ: DisableReplayUsingAlgorithm Параметр, устанавливаемый во время выполнения. Это полезно, когда скрипт должен немедленно завершаться с ошибкой при любом несоответствии свойств, а не молча возвращаться к процессу исключения.
' Disable Smart Identification for this run session Setting("DisableReplayUsingAlgorithm") = 1 Browser("Mercury Tours").Page("Find Flights").WebEdit("userName").Set "mercury" ' Re-enable Smart Identification once the strict steps are done Setting("DisableReplayUsingAlgorithm") = 0
Старайтесь, чтобы отключенное окно было как можно короче. Шаги, выполняемые внутри него, должны точно соответствовать полученному описанию, поэтому любое допустимое отклонение в тестируемом приложении приведет к немедленному сбою, а не к корректному восстановлению.
Ресурсы
Загрузите веб-страницы, использованные в приведенном выше руководстве, для самостоятельной практики.

