QTP — Введение
QTP расшифровывается как Q uick T est Professional, продукт Hewlett P ackard (HP) . Этот инструмент помогает тестировщикам беспрепятственно выполнять автоматическое функциональное тестирование после завершения разработки сценария.
HP QTP использует Visual Basic Scripting (VBScript) для автоматизации приложений. Скриптовый движок не нужно устанавливать исключительно, так как он доступен как часть ОС Windows. Текущая версия VBScript — 5.8, которая доступна как часть Win 7. VBScript — это НЕ объектно-ориентированный язык, а объектно-ориентированный язык.
Инструменты тестирования
Инструменты из контекста тестирования программного обеспечения можно определить как продукт, который поддерживает одно или несколько тестовых заданий, начиная с планирования, требований, создания сборки, выполнения теста, регистрации дефектов и анализа теста.
Классификация инструментов
Инструменты могут быть классифицированы по нескольким параметрам. Включает в себя —
- Назначение инструмента
- Действия, которые поддерживаются в инструменте
- Тип / уровень тестирования, который он поддерживает.
- Вид лицензирования (открытый, бесплатный, коммерческий)
- Используемая технология
Типы инструментов
Sr.No. | Тип инструмента | Используется для | Использован |
---|---|---|---|
1 | Инструмент управления тестированием | Управление тестированием, планирование, регистрация дефектов, отслеживание и анализ. | Тестеры |
2 | Инструмент управления конфигурацией | Для реализации, исполнения, отслеживания изменений | Все члены команды |
3 | Инструменты статического анализа | Статическое Тестирование | Разработчики |
4 | Тестовые данные Preperation Инструменты | Анализ и проектирование, генерация тестовых данных | Тестеры |
5 | Инструменты выполнения теста | Реализация, Исполнение | Тестеры |
6 | Тестовые компараторы | Сравнение ожидаемых и фактических результатов | Все члены команды |
7 | Инструменты измерения покрытия | Обеспечивает структурное покрытие | Разработчики |
8 | Инструменты для тестирования производительности | Мониторинг производительности, время отклика | Тестеры |
9 | Инструменты планирования и отслеживания проекта | Для планирования | Менеджеры проекта |
10 | Инструменты управления инцидентами | Для управления тестами | Тестеры |
Где QTP подходит?
QTP — это инструмент функционального тестирования, который лучше всего подходит для регрессионного тестирования приложений. QTP — это лицензированный / коммерческий инструмент, принадлежащий HP, который является одним из самых популярных инструментов, доступных на рынке. Он сравнивает фактический и ожидаемый результат и сообщает о результатах в сводке выполнения.
QTP — история и эволюция
HP Quick Test Professional изначально принадлежал Mercury Interactive и был приобретен HP. Первоначально он назывался Astra Quick Test, а затем назывался Quick Test Professional, но последняя версия называется Unified Functional Tester (UFT).
История версий
Теперь давайте посмотрим на историю версий QTP.
Версии | Хронологические |
---|---|
Быстрый тест Astra v1.0 до v5.5 — Mercury Interactive | С мая 1998 по август 2001 |
QuickTest Professional v6.5 до v9.0 — Mercury Interactive | С сентября 2003 года по апрель 2006 года |
Hp-QuickTest Professional v9.1 до v11.0 — приобретено и выпущено компанией HP | С февраля 2007 по сентябрь 2010 |
Hp-унифицированное функциональное тестирование v11.5 до v11.53 | С 2012 по ноябрь 2013 |
преимущества
-
Разработка автоматизированных тестов с использованием VBScript не требует высококвалифицированного кодера и относительно проста по сравнению с другими объектно-ориентированными языками программирования.
-
Простота в использовании, простота навигации, проверка результатов и генерация отчетов.
-
Легко интегрируется с инструментом управления тестированием (Hp-Quality Center), который позволяет легко планировать и контролировать.
-
Может также использоваться для тестирования мобильных приложений.
-
Поскольку это продукт HP, HP и его форумы предоставляют полную поддержку для решения технических проблем.
Разработка автоматизированных тестов с использованием VBScript не требует высококвалифицированного кодера и относительно проста по сравнению с другими объектно-ориентированными языками программирования.
Простота в использовании, простота навигации, проверка результатов и генерация отчетов.
Легко интегрируется с инструментом управления тестированием (Hp-Quality Center), который позволяет легко планировать и контролировать.
Может также использоваться для тестирования мобильных приложений.
Поскольку это продукт HP, HP и его форумы предоставляют полную поддержку для решения технических проблем.
Недостатки
-
В отличие от Selenium, QTP работает только в операционной системе Windows.
-
Поддерживаются не все версии Браузеров, и тестировщикам нужно ждать выпуска исправления для каждой из основных версий.
-
Сказав, что это коммерческий инструмент, стоимость лицензирования очень высока.
-
Несмотря на то, что время сценариев меньше, время выполнения относительно выше, так как оно загружает ЦП и ОЗУ.
В отличие от Selenium, QTP работает только в операционной системе Windows.
Поддерживаются не все версии Браузеров, и тестировщикам нужно ждать выпуска исправления для каждой из основных версий.
Сказав, что это коммерческий инструмент, стоимость лицензирования очень высока.
Несмотря на то, что время сценариев меньше, время выполнения относительно выше, так как оно загружает ЦП и ОЗУ.
QTP — автоматизированный процесс тестирования
Для любой автоматизированной реализации инструмента, следующие этапы / этапы этого. Каждый из этапов соответствует определенному виду деятельности, и каждый этап имеет определенный результат.
-
Анализ возможности автоматизации тестирования — Первый шаг — проверить, может ли приложение быть автоматизировано или нет. Не все приложения могут быть автоматизированы из-за его ограничений.
-
Выбор подходящего инструмента — Следующим наиболее важным шагом является выбор инструментов. Это зависит от технологии, в которой построено приложение, его возможностей и использования.
-
Оцените подходящую структуру. После выбора инструмента следующим действием будет выбор подходящей структуры. Существуют различные виды структур, и каждая структура имеет свое значение. Мы подробно рассмотрим фреймворки позже в этом уроке.
-
Создайте подтверждение концепции — Подтверждение концепции (POC) разработано по сквозному сценарию, чтобы оценить, может ли инструмент поддерживать автоматизацию приложения. Это выполняется по сквозному сценарию, который обеспечивает автоматизацию основных функций.
-
Разработка Automation Framework — После создания POC выполняется разработка инфраструктуры, которая является важным шагом для успеха любого проекта автоматизации тестирования. Структура должна быть построена после тщательного анализа технологии, используемой приложением, а также его основных функций.
-
Разработка тестового сценария, выполнение и анализ. После завершения разработки сценария выполняются сценарии, анализируются результаты и регистрируются дефекты, если таковые имеются. Тестовые сценарии обычно контролируются версией.
Анализ возможности автоматизации тестирования — Первый шаг — проверить, может ли приложение быть автоматизировано или нет. Не все приложения могут быть автоматизированы из-за его ограничений.
Выбор подходящего инструмента — Следующим наиболее важным шагом является выбор инструментов. Это зависит от технологии, в которой построено приложение, его возможностей и использования.
Оцените подходящую структуру. После выбора инструмента следующим действием будет выбор подходящей структуры. Существуют различные виды структур, и каждая структура имеет свое значение. Мы подробно рассмотрим фреймворки позже в этом уроке.
Создайте подтверждение концепции — Подтверждение концепции (POC) разработано по сквозному сценарию, чтобы оценить, может ли инструмент поддерживать автоматизацию приложения. Это выполняется по сквозному сценарию, который обеспечивает автоматизацию основных функций.
Разработка Automation Framework — После создания POC выполняется разработка инфраструктуры, которая является важным шагом для успеха любого проекта автоматизации тестирования. Структура должна быть построена после тщательного анализа технологии, используемой приложением, а также его основных функций.
Разработка тестового сценария, выполнение и анализ. После завершения разработки сценария выполняются сценарии, анализируются результаты и регистрируются дефекты, если таковые имеются. Тестовые сценарии обычно контролируются версией.
QTP — Настройка среды
QTP является коммерческим инструментом, и пробную версию можно загрузить непосредственно с сайта HP. Для загрузки доступна только текущая версия, которая является Единым функциональным тестированием (11.5x). Ниже приводится URL-адрес, с которого можно загрузить пробную версию.
URL загрузки — QTP
Процесс установки
Шаг 1. Нажмите ссылку «Испытания и демонстрации» и выберите «Единое функциональное тестирование HP 11.50 CC English SW E-Media Evaluation», как показано ниже —
Шаг 2. После выбора «HP Unified Functional Testing 11.50» откроется мастер загрузки. Заполните Личные данные и нажмите Далее.
Шаг 3 — Прочтите «Условия использования» и нажмите «ДАЛЕЕ».
Шаг 4 — Откроется окно загрузки. Теперь нажмите кнопку «Скачать».
Шаг 5 — Загруженный файл будет иметь формат .RAR. Теперь вам нужно распаковать архив, и содержимое папки будет таким, как показано ниже, и выполнить Setup.exe.
Шаг 6 — После выполнения установочного файла, для установки, выберите «Unified Functional Testing Seting» из списка, как показано ниже —
Шаг 7 — Затем нажмите Далее, чтобы продолжить.
Шаг 8 — В окне Custom Set up выберите плагины, которые требуются для вашей автоматизации, т.е. вы должны выбрать плагины на основе технологии тестируемого приложения. Например, если ваше приложение основано на .NET, вам следует убедиться, что вы выбрали .NET.
Шаг 9 — После выбора необходимых плагинов для установки нажмите Далее. После завершения установки у вас появится окно Готово.
Шаг 10. После завершения установки открывается диалоговое окно «Дополнительные требования для установки». Выберите все в списке, кроме «Запустить мастер установки лицензии» и нажмите «Выполнить». Нам НЕ нужно выбирать «Запуск мастера установки лицензии», потому что мы устанавливаем пробную версию, которая по умолчанию дает лицензию на 30 дней.
Шаг 11 — После выполнения дополнительных требований к установке отображается галочка, которая, в свою очередь, указывает, что компоненты установлены успешно. Теперь нажмите Закрыть.
Запуск UFT и страницы добавления модулей
Шаг 1 — После установки приложение можно запустить из меню «Пуск», как показано на рисунке.
Шаг 2 — Появится страница лицензии. Вы можете нажать Продолжить, так как мы установили пробную лицензию.
Шаг 3 — Откроется диалоговое окно «Надстройки», в котором пользователь может выбрать необходимые надстройки.
Примечание. Не загружайте все надстройки, а только необходимые надстройки и нажмите кнопку «ОК».
Шаг 4 — После загрузки необходимых надстроек для пользователя открывается инструмент UFT 11.5, и первый взгляд на UFT выглядит, как показано ниже —
QTP — запись и воспроизведение
Запись теста соответствует записи действий пользователя тестируемого приложения, так что UFT автоматически генерирует сценарии, которые можно воспроизвести. Запись и воспроизведение могут дать нам первое впечатление об инструменте, независимо от того, поддерживает ли он технологию или нет, если начальные настройки выполнены правильно.
Шаги для записи и воспроизведения следующие —
Шаг 1 — Нажмите «Новый» тест на стартовой странице, как показано ниже —
Шаг 2 — Нажав «Новая» ссылка, откроется новое окно теста, и пользователь должен выбрать тип теста. Выберите «Тест GUI», дайте имя для теста и место, где его нужно сохранить.
Шаг 3. После создания нового теста открывается новый экран теста, как показано ниже. Теперь перейдите на вкладку «Action1», которая создается с 1 действием по умолчанию.
Шаг 4 — Откройте меню «Запись» и выберите «Настройки записи и запуска», как показано ниже —
Шаг 5 — Откроется диалоговое окно «Параметры записи и запуска», и в зависимости от типа приложения можно выбрать «Веб-приложения», «Java» или «Windows». Например, здесь мы запишем веб-приложение (http://easycalculation.com/).
Шаг 6 — Нажмите Запись. Internet Explorer открывается автоматически с веб-адресом https://www.easycalculation.com/ в соответствии с настройками. Нажмите ссылку «Числа» в разделе «Алгебра», введите число и нажмите «Рассчитать». После завершения действия нажмите кнопку «Стоп» на панели записи. Вы заметите, что скрипт генерируется, как показано ниже —
Шаг 7 — Теперь воспроизведите сценарий, нажав кнопку воспроизведения. Сценарий воспроизводится, и результат отображается.
Шаг 8 — По умолчанию открывается окно результатов, в котором точно отображается метка времени выполнения, пройденных и неудачных шагов.
Значение записи и воспроизведения
-
Он используется в качестве метода предварительного расследования, чтобы проверить, может ли UFT поддерживать технологию / приложение.
-
Используется для создания теста базовой функциональности приложения или функции, которая не требует длительного обслуживания.
-
Он может использоваться для записи как движений мыши, так и ввода с клавиатуры.
Он используется в качестве метода предварительного расследования, чтобы проверить, может ли UFT поддерживать технологию / приложение.
Используется для создания теста базовой функциональности приложения или функции, которая не требует длительного обслуживания.
Он может использоваться для записи как движений мыши, так и ввода с клавиатуры.
Режимы записи
-
Обычная запись — это режим записи по умолчанию, в котором записываются объекты и операции, выполняемые в тестируемом приложении.
-
Аналоговая запись — записывает не только действия клавиатуры, но и движения мыши относительно экрана или окна приложения.
-
Запись низкого уровня — записывает точные координаты объектов, независимо от того, распознает ли UFT объект или НЕ. Он просто записывает координаты, следовательно, НЕ записывает движения мыши.
-
Запись Insight — UFT записывает операции, основываясь на его внешнем виде, а не на его собственных свойствах.
Обычная запись — это режим записи по умолчанию, в котором записываются объекты и операции, выполняемые в тестируемом приложении.
Аналоговая запись — записывает не только действия клавиатуры, но и движения мыши относительно экрана или окна приложения.
Запись низкого уровня — записывает точные координаты объектов, независимо от того, распознает ли UFT объект или НЕ. Он просто записывает координаты, следовательно, НЕ записывает движения мыши.
Запись Insight — UFT записывает операции, основываясь на его внешнем виде, а не на его собственных свойствах.
Как выбрать режим записи
После нажатия кнопки «Запись» пользователь может выбрать режим записи из области записи, которая появляется на экране, как только начинается запись. Выбор может быть сделан из любого из тех, что были обсуждены выше.
Вы увидите, что следующий сценарий записан во всех режимах, и одно и то же действие было записано при различных обстоятельствах.
- Запустите IE — https://www.easycalculation.com/
- Нажмите «Числа» в разделе «Алгебра»
- Нажмите ссылку «Квадратный корень»
- Введите значение для расчета квадратного корня. Скажем 10
- Хит Рассчитать
Сценарий, записанный в режимах «По умолчанию», «Аналоговый» и «Низкий уровень», приведен ниже —
' DEFAULT RECORDING MODE Browser("Free Online Math Calculator").Page("Free Online Math Calculator").Link("Numbers").Click Browser("Free Online Math Calculator").Page("Numbers Calculator - Math").Link("Square Root").Click Browser("Free Online Math Calculator").Page("Square Root Calculator").WebEdit("n").Set "10" Browser("Free Online Math Calculator").Page("Square Root Calculator").WebButton("calculate").Click ' ANALOG RECORDING MODE Desktop.RunAnalog "Track1" ' LOW LEVEL RECORDING MODE Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 235,395 Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 509,391 Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 780,631 Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Type "10" Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 757,666
Записи, использующие режим записи Insight, будут такими, как показано ниже —
QTP — Хранилище объектов
Хранилище объектов
Репозиторий объектов — это набор объектов и свойств, с помощью которых QTP сможет распознавать объекты и воздействовать на них. Когда пользователь записывает тест, объекты и его свойства захватываются по умолчанию. Без понимания объектов и их свойств QTP НЕ сможет воспроизводить сценарии.
Нажмите на каждую из следующих тем, чтобы узнать больше о репозитории объектов и связанных с ним функциях.
Sr.No. | Тема и описание |
---|---|
1 | Объект Spy и его особенности
Чтобы понять использование объекта шпиона и связанных с ним функций. |
2 | Работа с хранилищем объектов
Добавление, редактирование, удаление объектов из репозитория объектов и связанных с ним функций. |
3 | Типы объектов репозитория
Имеет дело с общим объектом и локальным репозиторием объектов и их контекстом в отношении сценариев. |
4 | Пользовательские объекты
Имеет дело с обстоятельствами для использования пользовательских объектов. |
5 | Хранилище объектов в XML
Имеет дело с преобразованием OR в XML и использованием репозитория объектов в качестве XML. |
6 | Сравнение и слияние ИЛИ
Такие операции, как Compare OR ‘, Merge OR для эффективной работы с репозиторием объектов. |
7 | Порядковые идентификаторы
Обстоятельства, в которых используются порядковые идентификаторы, и их преимущества. |
8 | Дочерние объекты
Использование дочерних объектов для эффективного написания сценариев |
Чтобы понять использование объекта шпиона и связанных с ним функций.
Добавление, редактирование, удаление объектов из репозитория объектов и связанных с ним функций.
Имеет дело с общим объектом и локальным репозиторием объектов и их контекстом в отношении сценариев.
Имеет дело с обстоятельствами для использования пользовательских объектов.
Имеет дело с преобразованием OR в XML и использованием репозитория объектов в качестве XML.
Такие операции, как Compare OR ‘, Merge OR для эффективной работы с репозиторием объектов.
Обстоятельства, в которых используются порядковые идентификаторы, и их преимущества.
Использование дочерних объектов для эффективного написания сценариев
QTP — Действия
Действия помогают тестировщикам разделять скрипты на группы операторов QTP. Действия аналогичны функциям в VBScript; Однако есть несколько отличий. По умолчанию QTP создает тест с одним действием.
действия | функции |
---|---|
Действие является встроенной функцией QTP. | Функции VBScript поддерживаются как VBScript, так и QTP. |
Параметры действий передаются только по значению. | Параметры функции передаются либо по значению, либо по ref. |
Действия имеют расширение .mts | Функции сохраняются как .vbs или .qfl |
Действия могут или не могут быть повторно использованы. | Функции всегда многоразовые. |
Доступ к свойствам действия можно получить, щелкнув правой кнопкой мыши в окне редактора сценариев и выбрав «Свойства».
Свойства действия содержат следующую информацию —
- Название действия
- Место нахождения
- Многоразовый флаг
- Входные параметры
- Выходные параметры
Типы действий
Есть три типа действий —
-
Одноразовое действие — действие, которое может быть вызвано только в том конкретном тесте, в котором оно было разработано, и может быть вызвано только один раз.
-
Повторно используемое действие — действие, которое может вызываться несколько раз, для любого теста, в котором оно находится, а также может использоваться любыми другими тестами.
-
Внешнее действие многократного использования — это действие многократного использования, сохраненное в другом тесте. Внешние действия доступны только для чтения в тесте вызова, но их можно использовать локально с редактируемой копией информации таблицы данных для внешнего действия.
Одноразовое действие — действие, которое может быть вызвано только в том конкретном тесте, в котором оно было разработано, и может быть вызвано только один раз.
Повторно используемое действие — действие, которое может вызываться несколько раз, для любого теста, в котором оно находится, а также может использоваться любыми другими тестами.
Внешнее действие многократного использования — это действие многократного использования, сохраненное в другом тесте. Внешние действия доступны только для чтения в тесте вызова, но их можно использовать локально с редактируемой копией информации таблицы данных для внешнего действия.
Работа с действиями
Есть три варианта для вставки действия. Нажмите на каждый из них, чтобы узнать больше о выбранном типе действия.
Sr.No. | Тип действия и описание |
---|---|
1 | Вставить призыв к новому действию
Вставляет новое действие из существующего действия |
2 | Вставить вызов в копию действия
Вставляет копию существующего действия |
3 | Вставить вызов в существующее действие
Вставляет вызов в существующее повторно используемое действие |
Вставляет новое действие из существующего действия
Вставляет копию существующего действия
Вставляет вызов в существующее повторно используемое действие
QTP — Datatables
DataTable, похожий на Microsoft Excel, помогает тестировщикам создавать управляемые данными тестовые случаи, которые можно использовать для многократного запуска действия. Есть два типа Datatables —
-
Local DataTable — Каждое действие имеет свой собственный частный источник данных, также известный как локальный источник данных, к которому также можно получить доступ через действия.
-
Global DataTable — каждый тест имеет одну глобальную таблицу данных, которая доступна для всех действий.
Local DataTable — Каждое действие имеет свой собственный частный источник данных, также известный как локальный источник данных, к которому также можно получить доступ через действия.
Global DataTable — каждый тест имеет одну глобальную таблицу данных, которая доступна для всех действий.
Лист данных можно открыть на вкладке «Данные» QTP, как показано ниже —
Чтобы выполнить тестовый набор для определенного количества итераций, можно установить итерации с глобальными данными в диалоговом окне «Настройки теста», доступ к которому можно получить с помощью «Файл» → «Настройки» → «Выполнить» (вкладка), как показано ниже —
пример
Например, если пользователь хочет параметризовать «сложный интерес» на http://easycalculation.com/ , доступ к которому можно получить с помощью http://easycalculation.com/compound-interest.php . Параметры могут быть созданы, как показано ниже. Большинство функций Excel также можно использовать в таблице данных.
Операции с данными
Существует три типа объектов для доступа к DataTable. Операции с DataTable можно понять, пройдя через следующее:
Sr.No. | Тип объекта и описание |
---|---|
1 | Методы таблицы данных
Предоставляет подробную информацию о методах таблицы данных. |
2 | Методы объекта DTParameter
Предоставляет подробную информацию о методах DTParameter. |
3 | Методы объекта DTSheet
Предоставляет подробную информацию о методах DTSheet. |
Предоставляет подробную информацию о методах таблицы данных.
Предоставляет подробную информацию о методах DTParameter.
Предоставляет подробную информацию о методах DTSheet.
QTP — CheckPoints
Контрольные точки, как следует из названия, относятся к точке проверки, которая сравнивает текущее значение указанных свойств или текущее состояние объекта с ожидаемым значением, которое может быть вставлено в любой момент времени в сценарии.
Типы контрольных точек
Sr.No. | Тип и описание |
---|---|
1 |
Стандартная контрольная точка Проверяет значения свойств объекта в тестируемом приложении и поддерживается всеми средами надстроек. |
2 |
Bitmap Checkpoint Проверяет область вашего приложения как растровое изображение |
3 |
Проверка содержимого файла Проверяет текст в динамически создаваемом или доступном файле, таком как .txt, .pdf |
4 |
Таблица Checkpoint Проверяет информацию в таблице. Не все среды поддерживаются. |
5 |
Текстовая контрольная точка Убедитесь, что текст, отображаемый в определенной области в приложении для Windows, соответствует заданным критериям. |
6 |
Контрольная точка области текста Проверяет, отображается ли текстовая строка в определенной области в приложении для Windows в соответствии с указанными критериями. |
7 |
Контрольная точка доступности Проверяет страницу и сообщает области сайта, которые могут не соответствовать Рекомендациям по доступности веб-контента Консорциума World Wide Web (W3C). |
8 |
Контрольная точка страницы Проверяет характеристики веб-страницы. Он также может проверить наличие битых ссылок. |
9 |
Контрольная точка базы данных Проверяет содержимое базы данных, к которой обращается тестируемое приложение. |
10 |
Контрольная точка XML Проверяет содержимое документов .xml или .xml на веб-страницах и в фреймах. |
Стандартная контрольная точка
Проверяет значения свойств объекта в тестируемом приложении и поддерживается всеми средами надстроек.
Bitmap Checkpoint
Проверяет область вашего приложения как растровое изображение
Проверка содержимого файла
Проверяет текст в динамически создаваемом или доступном файле, таком как .txt, .pdf
Таблица Checkpoint
Проверяет информацию в таблице. Не все среды поддерживаются.
Текстовая контрольная точка
Убедитесь, что текст, отображаемый в определенной области в приложении для Windows, соответствует заданным критериям.
Контрольная точка области текста
Проверяет, отображается ли текстовая строка в определенной области в приложении для Windows в соответствии с указанными критериями.
Контрольная точка доступности
Проверяет страницу и сообщает области сайта, которые могут не соответствовать Рекомендациям по доступности веб-контента Консорциума World Wide Web (W3C).
Контрольная точка страницы
Проверяет характеристики веб-страницы. Он также может проверить наличие битых ссылок.
Контрольная точка базы данных
Проверяет содержимое базы данных, к которой обращается тестируемое приложение.
Контрольная точка XML
Проверяет содержимое документов .xml или .xml на веб-страницах и в фреймах.
Вставка CheckPoint
Когда пользователь хочет вставить контрольную точку, необходимо убедиться, что большинство контрольных точек поддерживаются только во время сеансов записи. Когда пользователь прекращает запись, контрольные точки не активируются.
Ниже приведено меню контрольных точек, когда пользователь НЕ находится в режиме записи.
Ниже приведено меню контрольной точки, когда пользователь находится в режиме записи.
пример
Контрольные точки добавляются для тестируемого приложения — «http://easycalculation.com/»
' 1. Inserted Standard Checkpoint Status = Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Check CheckPoint("Numbers") If Status Then print "Checkpoint Passed" Else Print "Checkpoint Failed" End if ' 2. Inserted BitMap Checkpoint imgchkpoint = Browser("Math Calculator").Page("Math Calculator").Image("French").Check CheckPoint("French") If imgchkpoint Then print "Checkpoint Passed" Else Print "Checkpoint Failed" End if
Просмотр свойств контрольной точки
После вставки, если тестировщик хочет изменить значения, мы можем сделать это, щелкнув правой кнопкой мыши на ключевом слове «контрольная точка» скрипта и перейдя к «Свойствам контрольной точки», как показано ниже —
Вы также можете найти те же контрольные точки в хранилище объектов, как показано ниже. Он точно показывает, какой тип контрольной точки используется и каковы ожидаемые значения, а также значения времени ожидания.
QTP — Синхронизация
Точка синхронизации — это временной интерфейс между Инструментом и Тестируемым приложением. Точка синхронизации — это функция для указания времени задержки между двумя шагами тестового сценария.
Например, нажатие на ссылку может загрузить страницу за 1 секунду, иногда 5 секунд, или даже может потребоваться 10 секунд для ее полной загрузки. Это зависит от различных факторов, таких как время отклика сервера приложений, пропускная способность сети и возможности клиентской системы.
Если время меняется, сценарий завершится ошибкой, если тестер не будет разумно обрабатывать эти временные различия.
Способы вставки точки синхронизации
- WaitProperty
- Существовать
- Подождите
- Синхронизация (только для веб-приложений)
- Вставка встроенных точек синхронизации QTP.
Допустим, нам нужно вставить точку синхронизации между нажатием на ссылку «цифры» и нажатием на калькулятор «Простые проценты» на « www.easycalculation.com ». Теперь мы рассмотрим все пять способов вставки точки синхронизации для приведенного выше сценария.
Способ 1 — WaitProperty
WaitProperty — это метод, который принимает имя свойства, значение и значение времени ожидания в качестве входных данных для выполнения синхронизации. Это динамическое ожидание и, следовательно, эта опция приветствуется.
' Method 1 - WaitProperty with 25 seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
obj.Link("Simple Interest").WaitProperty "text", "Simple Interest",25000
obj.Link("Simple Interest").Click
Способ 2 — Существовать
Exist — это метод, который принимает значение Timeout в качестве входных данных для выполнения синхронизации. Опять же, это динамическое ожидание и, следовательно, этот вариант приветствуется.
' Method 2 : Exist Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
If obj.Link("Simple Interest").Exist(30) Then
obj.Link("Simple Interest").Click
Else
Print "Link NOT Available"
End IF
Способ 3 — Подождите
Ожидание — это жестко заданная точка синхронизации, которая ожидает независимо от того, произошло событие или нет. Следовательно, использование Wait не рекомендуется и может использоваться для более короткого времени ожидания, такого как 1 или 2 секунды.
' Method 3 : Wait Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
wait(30)
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click
Метод 4 — Метод синхронизации
Метод синхронизации можно использовать только для веб-приложений, в которых всегда наблюдается задержка между загрузками страниц.
' Method 4 :
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
Browser("Math Calculator").Sync
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click
Метод 5 — Вставка встроенных точек синхронизации QTP
Шаг 1 — Войдите в режим записи. Эта опция будет отключена, если пользователь НЕ находится в режиме записи.
Шаг 2 — Перейдите в «Проектирование» → «Точка синхронизации».
Шаг 3 — Нам нужно выбрать объект, которым мы хотим быть в качестве точки синхронизации. После выбора объекта открывается окно объекта, как показано ниже —
Шаг 4 — Нажмите ОК; откроется «Добавить окно синхронизации». Выберите значение «Свойство», «Значение» и «Время ожидания» и нажмите «ОК», как показано ниже —
Шаг 5 — Сценарий будет сгенерирован, как показано ниже, который совпадает со сценарием WaitProperty (метод 1), который мы уже обсуждали —
Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Click Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").WaitProperty "text", "Simple Interest", 10000
Синхронизация по умолчанию
Когда пользователь не использовал ни один из вышеперечисленных методов синхронизации, QTP все еще имеет встроенный тайм-аут синхронизации объекта, который может быть отрегулирован пользователем.
Перейдите к «Файл» >> «Настройки» >> Вкладка «Выполнить» >> Тайм-аут синхронизации объекта, как показано ниже.
QTP — интеллектуальная идентификация
Иногда QTP не может найти какой-либо объект, который соответствует распознанному описанию объекта, или он может найти более одного объекта, который соответствует описанию, тогда QTP игнорирует распознанное описание и использует механизм Smart Identification для распознавания объекта.
Smart Identification QTP использует два типа свойств —
-
Свойства базового фильтра — базовые свойства определенного класса тестового объекта, значения которого нельзя изменить без изменения сущности исходного объекта.
-
Свойства необязательного фильтра. Другие свойства также помогают идентифицировать объекты определенного класса, свойства которых вряд ли будут часто меняться, но их можно игнорировать, если они больше не применяются.
Свойства базового фильтра — базовые свойства определенного класса тестового объекта, значения которого нельзя изменить без изменения сущности исходного объекта.
Свойства необязательного фильтра. Другие свойства также помогают идентифицировать объекты определенного класса, свойства которых вряд ли будут часто меняться, но их можно игнорировать, если они больше не применяются.
Включение интеллектуальной идентификации для объекта
Шаг 1 — Перейдите к «Инструменты» → «Идентификация объекта». Откроется диалоговое окно «Идентификация объекта».
Шаг 2 — Выберите среду, класс объекта и включите «Включить интеллектуальную идентификацию», как показано ниже —
Шаг 3 — Нажмите «Настроить» и выберите базовый и дополнительный свойства фильтра.
Шаг 4 — Добавьте Свойства в Базовых Свойствах отдельно от настроек по умолчанию, а также добавьте / удалите Дополнительные свойства фильтра. Обратите внимание, что одни и те же свойства не могут быть частью обязательных и вспомогательных свойств, и нажмите «ОК».
Шаг 5 — Проверьте, включена ли интеллектуальная идентификация после добавления объекта этого типа в репозиторий объектов. Интеллектуальная идентификация установлена на ИСТИНА. Мы также можем сделать это False, если мы не хотим включать Smart Identification.
Шаг 6 — Мы даже можем отключить тестовый уровень, применяя на тестовом скрипте уровень в «Настройках» меню «Файл», как показано ниже —
Шаг 7 — Если интеллектуальная идентификация отключена в соответствии с шагом № 6, то она не будет применять интеллектуальную идентификацию для какого-либо объекта во время выполнения сценария.
Шаг 8 — В случае, если объекты добавлены с умной идентификацией как выключенной, QTP не будет использовать умную идентификацию для распознавания в будущем, даже если мы включили ее позже.
QTP — отладка
Отладка в контексте тестирования автоматизации — это систематический процесс выявления и исправления проблем кодирования в сценарии автоматизации, так что сценарий будет более устойчивым и сможет обнаружить дефекты в приложении.
Существуют различные способы отладки с использованием точек останова в QTP. Точки останова можно вставить, просто нажав «F9» или используя пункт меню «Выполнить» → «Вставка / удаление точки останова».
После вставки точки останова точка красного цвета и линия будут выделены КРАСНЫМ цветом, как показано ниже —
метод | ShortCut | Описание |
---|---|---|
Шаг в | F11 | Используется для выполнения каждого шага. Входит в функцию / действие и выполняет построчно. Пауза в каждой строке после исполнения. |
Переступить | F10 | Используется, чтобы перешагнуть через функцию. Step Over запускает только текущий шаг в активном документе. |
Выйти | Shift + F11 | После Step Into вы можете использовать команду Step Out. Step Out продолжает выполнение до конца функции, а затем приостанавливает сеанс выполнения на следующей строке. |
Параметры в точке останова
Доступ к различным параметрам в точке останова можно получить с помощью меню «Выполнить».
Sr.No. | ShortCut & Описание |
---|---|
1 |
F9 Вставить / удалить точку останова |
2 |
Ctrl + F9 Включить / отключить точку останова |
3 |
Ctrl + Shift + F9 Очистить все BreakPoint |
4 |
Использовать только меню Включить / отключить все точки останова |
F9
Вставить / удалить точку останова
Ctrl + F9
Включить / отключить точку останова
Ctrl + Shift + F9
Очистить все BreakPoint
Использовать только меню
Включить / отключить все точки останова
Панель отладки
Ниже приведены панели в окне отладки.
-
Вывод — на этой вкладке отображаются все выходные данные для печати.
-
Watch — эта вкладка отображает логический результат заданного выражения.
-
LocalVariables — эта вкладка отображает вывод локальных переменных.
Вывод — на этой вкладке отображаются все выходные данные для печати.
Watch — эта вкладка отображает логический результат заданного выражения.
LocalVariables — эта вкладка отображает вывод локальных переменных.
пример
Панель просмотра показывает выходное выражение, как показано ниже —
Панель Local Variables показывает значения, хранящиеся в локальных переменных, как показано ниже —
QTP — Обработка ошибок
Существуют различные способы обработки ошибок в QTP. Существует три возможных типа ошибок, с которыми можно столкнуться при работе с QTP. Они —
- Синтаксические ошибки
- Логические ошибки
- Ошибки времени выполнения
Типы ошибок
Синтаксические ошибки
Синтаксические ошибки — это опечатки или фрагмент кода, который не подтверждается грамматикой языка VBscripting. Синтаксические ошибки возникают во время компиляции кода и не могут быть выполнены, пока ошибки не будут исправлены.
Чтобы проверить синтаксис, используйте сочетание клавиш Ctrl + F7, и результат отобразится, как показано ниже. Если окно не отображается, можно перейти к «Вид» → «Ошибки».
Логические ошибки
Если сценарий синтаксически правильный, но дает неожиданные результаты, он называется логической ошибкой. Логическая ошибка обычно не прерывает выполнение, но дает неверные результаты. Логические ошибки могут возникать из-за множества причин, а именно из-за неправильных предположений или неправильного понимания требования и иногда из-за неправильной логики программы (с использованием do-while вместо do-till) или бесконечных циклов.
Одним из способов обнаружения логической ошибки является выполнение экспертных проверок, а также проверка выходного файла / файла результатов QTP, чтобы убедиться, что инструмент выполнил работу, которую он должен был выполнить.
Ошибки RunTime
Как следует из названия, такого рода ошибки происходят во время выполнения. Причиной такого рода ошибок является то, что сценарий, пытающийся что-то выполнить, не может этого сделать, и сценарий обычно останавливается, поскольку он не может продолжить выполнение. Классические примеры ошибок во время выполнения —
- Файл НЕ найден, но скрипт пытается прочитать файл
- Объект НЕ найден, но скрипт пытается воздействовать на этот конкретный объект
- Деление числа на ноль
- Индекс массива вне границ при доступе к элементам массива
Обработка ошибок во время выполнения
Существуют различные способы обработки ошибок в коде.
1. Использование настроек теста — обработку ошибок можно определить настройками теста, перейдя на вкладку «Файл» >> «Настройки» >> «Выполнить», как показано ниже. Мы можем выбрать любую из указанных настроек и нажать «ОК».
2. Использование оператора On Error — оператор «On Error» используется для уведомления модуля VBScript о намерениях обработчика ошибок времени выполнения тестером, а не позволяет модулю VBScript отображать сообщения об ошибках, которые не являются удобными для пользователя.
-
On Error Resume Next — On Error Resume Next информирует модуль VBScript для обработки выполнения следующей строки кода при обнаружении ошибки.
-
При ошибке Перейти к 0 — это помогает тестерам отключить обработку ошибок.
On Error Resume Next — On Error Resume Next информирует модуль VBScript для обработки выполнения следующей строки кода при обнаружении ошибки.
При ошибке Перейти к 0 — это помогает тестерам отключить обработку ошибок.
3. Использование объекта Err — объект ошибки — это встроенный объект в VBScript, который фиксирует номер ошибки времени выполнения и описание ошибки, с помощью которой мы можем легко отладить код.
-
Err.Number — свойство Number возвращает или задает числовое значение, указывающее ошибку. Если значение Err.Number равно 0, то ошибки не произошло.
-
Err.Description — Свойство Description возвращает или задает краткое описание ошибки.
-
Err.Clear — метод Clear сбрасывает объект Err и очищает все предыдущие значения, связанные с ним.
Err.Number — свойство Number возвращает или задает числовое значение, указывающее ошибку. Если значение Err.Number равно 0, то ошибки не произошло.
Err.Description — Свойство Description возвращает или задает краткое описание ошибки.
Err.Clear — метод Clear сбрасывает объект Err и очищает все предыдущие значения, связанные с ним.
пример
'Call the function to Add two Numbers Call Addition(num1,num2) Function Addition(a,b) On error resume next If NOT IsNumeric(a) or IsNumeric(b) Then Print "Error number is " & err.number & " and description is : " & err.description Err.Clear Exit Function End If Addition = a+b 'disables error handling On Error Goto 0 End function
4. Использование оператора Exit — операторы Exit могут использоваться вместе с объектом Err для выхода из теста, действия или итерации на основе значения Err.Number. Давайте рассмотрим каждое из этих утверждений Exit подробно.
-
ExitTest — выход из всего теста QTP, независимо от настроек итерации во время выполнения.
-
ExitAction — выход из текущего действия.
-
ExitActionIteration — Выход из текущей итерации действия.
-
ExitTestIteration — Выход из текущей итерации теста QTP и переход к следующей итерации.
ExitTest — выход из всего теста QTP, независимо от настроек итерации во время выполнения.
ExitAction — выход из текущего действия.
ExitActionIteration — Выход из текущей итерации действия.
ExitTestIteration — Выход из текущей итерации теста QTP и переход к следующей итерации.
5. Сценарии восстановления — при возникновении ошибки сценарии восстановления запускаются на основе определенных условий, и это подробно рассматривается в отдельной главе.
6. Reporter Object — Reporter Object помогает нам сообщать о событии в результаты выполнения. Это помогает нам определить, является ли соответствующее действие / шаг успешным или неудачным.
'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, [ImageFilePath] 'Example Reporter.ReportEvent micFail, "Login", "User is unable to Login."
QTP — Сценарии восстановления
Сценарии восстановления
При выполнении сценариев QTP могут возникнуть непредвиденные ошибки. Чтобы восстановить тесты и продолжить выполнение остальной части сценария после этих непредвиденных ошибок, используются сценарии восстановления. Доступ к Менеджеру сценариев восстановления можно получить, перейдя в «Ресурсы» → Менеджер сценариев восстановления, как показано ниже —
Шаги для создания сценария восстановления
Шаг 1 — Нажмите кнопку «Новый» сценарий восстановления; мастер сценария восстановления открывается, как показано ниже —
Шаг 2 — Выберите событие запуска. Это соответствует событию, которое может возникнуть в любом из следующих четырех событий —
- Всплывающее окно
- Состояние объекта
- Ошибка тестового прогона
- Сбой приложения
Шаг 3 — Откроется окно операций восстановления. Операция восстановления может выполнить любую из следующих операций, как показано на скриншоте ниже —
Шаг 4 — После указания соответствующей операции восстановления нам нужно также указать операцию после восстановления, как показано ниже —
Шаг 5. После указания операции после восстановления сценарий восстановления должен быть назван и добавлен в тест, чтобы его можно было активировать.
Шаг 6. Создание сценария восстановления завершено, и его необходимо сопоставить с текущим тестом. Для этого установите флажок «Добавить сценарий к текущему тесту» и нажмите «Готово».
Шаг 7 — Сценарий добавленного восстановления будет таким, как показано ниже, и нажмите кнопку «Закрыть», чтобы продолжить.
Шаг 8 — После нажатия кнопки «Закрыть» QTP предложит пользователю сохранить созданный сценарий восстановления. Он будет сохранен с расширением .qrs, и мастер закроется.
верификация
Созданный сценарий восстановления теперь должен быть частью теста, и его можно проверить, перейдя на вкладку «Файл» → «Настройки» → «Восстановление».
QTP — Переменные среды
Переменные среды QTP — это специальные типы переменных, к которым могут обращаться все действия, библиотеки функций и сценарии восстановления. Существуют встроенные переменные среды для Windows, которые доступны для всех приложений, работающих в этой конкретной системе, но переменные среды QTP доступны только для этого конкретного сценария тестирования во время выполнения.
Типы переменных среды
Встроенные переменные среды — предоставляет ряд параметров среды, которые могут предоставлять такую информацию, как имя теста, имя действия, путь теста, имя локального хоста, имя операционной системы, тип и его версия. Доступ к именам переменных среды можно получить, перейдя в «Файл» → «Настройки теста» → вкладка «Среда».
Пользовательский Внутренний — Пользовательские переменные можно сохранить, выбрав «Пользовательский» в окне вкладки «Среда». Кнопка «+» нажимается для ввода имени и значения параметра, как показано ниже —
Пользовательские внешние — Пользовательские переменные могут быть сохранены во внешнем файле в виде XML-файла и могут быть загружены в тест, как показано на рисунке ниже. Он также может быть загружен динамически во время выполнения, как описано ниже в одном из примеров.
Переменные среды — поддерживаемые методы
1. Свойство ExternalFileName — возвращает имя загруженного файла переменной внешней среды, указанного на вкладке «Среда» диалогового окна «Параметры теста». Если файл внешней переменной среды не загружен, это свойство возвращает пустую строку.
x = Environment.ExternalFileName print x
2. Метод LoadFromFile — динамически загружает указанный файл переменной среды (.xml) во время выполнения. При использовании этого метода переменные среды не нужно добавлять вручную во вкладку Environment.
Environment.LoadFromFile "D:\config.xml" b = Environment.Value("Browser") print b
3. Значение свойства — извлекает значение переменных среды. Мы также можем установить значение пользовательских переменных внутренней среды, используя это свойство.
' Get the Value of the InBuilt Environment Variables a = Environment.Value("OS") print a b = Environment.Value("ActionName") print b 'Loaded from External File Environment.LoadFromFile "D:\config.xml" c = Environment.Value("Browser") print c
QTP — Библиотечные файлы
Для модульности сценария в библиотеку QTP добавляются библиотечные файлы. Он содержит объявление переменных, функции, классы и т. Д. Они обеспечивают возможность многократного использования, которое можно использовать в тестовых сценариях. Они сохраняются с расширением .vbs или .qfl
Новый файл библиотеки можно создать, перейдя в «Файл» >> «Библиотека функций».
Библиотеки ассоциированных функций
Способ 1 — с помощью «Файл»> «Настройки»> Ресурсы> Связать библиотеку функций. Нажмите кнопку «+», чтобы добавить файл библиотеки функций и добавить его, используя фактический или относительный путь, как показано ниже —
Способ 2 — Использование метода ExecuteFile.
'Syntax : ExecuteFile(Filepath) ExecuteFile "C:\lib1.vbs" ExecuteFile "C:\lib2.vbs"
Способ 3 — Использование метода LoadFunctionLibrary.
'Syntax : LoadFunctionLibrary(Filepath) LoadFunctionLibrary "C:\lib1.vbs" LoadFunctionLibrary "C:\lib2.vbs"
Метод 4 — Автоматизированная объектная модель (AOM). Это механизм, с помощью которого мы можем управлять различными операциями QTP вне QTP. Используя AOM, мы можем запустить QTP, открыть тест, связать библиотеки функций и т. Д. Следующий VbScript должен быть сохранен с расширением .vbs, и после его выполнения QTP будет запущен, и тест начнет выполняться. АОМ будет подробно обсуждаться в последующих главах.
'Launch QTP Set objQTP = CreateObject("QuickTest.Application") objQTP.Launch objQTP.Visible = True 'Open the test objQTP.Open "D:\GUITest2", False, False Set objLib = objQTP.Test.Settings.Resources.Libraries 'Associate Function Library if NOT associated already. If objLib.Find("C:\lib1.vbs") = -1 Then objLib.Add "C:\lib1.vbs", 1 End
QTP — Результаты автоматизированного тестирования
Результаты теста
Окно «Результаты теста» дает нам достаточную информацию для отображения пройденных, неудачных шагов и т. Д. Окно результатов открывается автоматически после выполнения теста (в соответствии с настройками по умолчанию). Следующая информация отображается —
- Шаги пройдены
- Неудачные шаги
- Параметры среды
- Графическая статистика
Операции, выполненные в результатах теста
Преобразование результатов в HTML
В окне просмотра результатов перейдите к «Файл» → «Экспорт в файл». Откроется диалоговое окно «Экспортировать результаты выполнения», как показано ниже —
Мы можем выбрать тип отчета для экспорта. Это могут быть короткие результаты, подробные результаты или даже, мы можем выбрать узлы. После выбора имени файла и его экспорта файл сохраняется как файл .HTML.
Фильтрация результатов
Результаты могут быть отфильтрованы на основе статуса, типа узла и итераций. Доступ к нему можно получить с помощью кнопки «Фильтр» в «Окне результатов теста».
Повышение дефектов
Дефекты могут быть зарегистрированы в QC непосредственно из панели окна результатов теста, выбрав «Инструменты» → «Добавить дефект», который открывает соединение с ALM, как показано ниже —
Результаты теста
Окно результатов автоматического теста можно настроить в разделе «Инструменты» → «Параметры» → вкладка «Запуск сеансов». Мы можем отключить его, если требуется, а также мы можем включить «Автоматический экспорт результатов по окончании сеанса».
Скриншот или фильм можно записать в зависимости от настроек. То же самое можно настроить в разделе «Инструменты» → «Параметры» → вкладка «Снимок экрана». Мы можем сохранить скриншот или фильмы, основываясь на следующих трех условиях:
- Для ошибок
- Всегда
- За ошибки и предупреждения
QTP — Работа с объектами GUI
Существуют различные объекты GUI, с которыми взаимодействует QTP во время выполнения скрипта. Следовательно, важно знать основные методы для ключевых объектов GUI, с помощью которых мы сможем эффективно работать с ним.
Работа с текстовым полем
Ниже приведены методы, с помощью которых мы получаем доступ к текстовому полю во время выполнения.
-
Set — Помогает тестеру установить значения в текстовое поле.
-
Нажмите — клики в текстовом поле
-
SetSecure — используется для безопасной установки текста в полях для паролей.
-
WaitProperty — ждет, пока значение свойства не станет истинным
-
Exist — Проверяет наличие текстового поля
-
GetROProperty («text») — получает значение текстового поля
-
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
Set — Помогает тестеру установить значения в текстовое поле.
Нажмите — клики в текстовом поле
SetSecure — используется для безопасной установки текста в полях для паролей.
WaitProperty — ждет, пока значение свойства не станет истинным
Exist — Проверяет наличие текстового поля
GetROProperty («text») — получает значение текстового поля
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
пример
Browser("Math Calculator").Sync Set Obj = Browser("Math Calculator").Page("SQR Calc").WebEdit("n") 'Clicks on the Text Box Obj.Click 'Verify if the Object Exist - Returns Boolean value a = obj.Exist print a 'Set the value obj.Set "10000" : wait(2) 'Get the Runtime Object Property - Value of the Text Box val = obj.GetROProperty("value") print val 'Get the Run Time Object Property - Visiblility - Returns Boolean Value x = Obj.GetROProperty("visible") print x
Работа с флажком
Ниже приведены некоторые из ключевых методов, с которыми можно работать с флажком —
-
Set — Помогает тестеру установить значение флажка «ON» или «OFF».
-
Нажмите — Клики на флажок. Даже проверяет ON или OFF, но пользователь не будет уверен в статусе
-
WaitProperty — ждет, пока значение свойства не станет истинным
-
Exist — Проверяет наличие флажка
-
GetROProperty («имя») — получает имя флажка
-
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
Set — Помогает тестеру установить значение флажка «ON» или «OFF».
Нажмите — Клики на флажок. Даже проверяет ON или OFF, но пользователь не будет уверен в статусе
WaitProperty — ждет, пока значение свойства не станет истинным
Exist — Проверяет наличие флажка
GetROProperty («имя») — получает имя флажка
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
пример
'To Check the Check Box Set Obj = Browser("Calculator").Page("Gmail").WebCheckBox("PersistentCookie") Obj.Set "ON" 'To UnCheck the Check Box Obj.Set "OFF" 'Verifies the Existance of the Check box and returns Boolean Value val = Obj.Exist print val 'Fetches the Name of the CheckBox a = Obj.GetROProperty("name") print a 'Verifies the visible property and returns the boolean value. x = Obj.GetROProperty("visible") print x
Работа с переключателем
Ниже приведены некоторые из основных методов работы с переключателем —
-
Select (RadioButtonName) — Помогает тестеру установить «Radio Box» в положение «ON».
-
Нажмите — щелкает по переключателю. Даже радио-кнопка включена или выключена, но тестер не может получить статус
-
WaitProperty — ждет, пока значение свойства не станет истинным
-
Exist — Проверяет наличие радиокнопки
-
GetROProperty («имя») — получает имя переключателя
-
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
Select (RadioButtonName) — Помогает тестеру установить «Radio Box» в положение «ON».
Нажмите — щелкает по переключателю. Даже радио-кнопка включена или выключена, но тестер не может получить статус
WaitProperty — ждет, пока значение свойства не станет истинным
Exist — Проверяет наличие радиокнопки
GetROProperty («имя») — получает имя переключателя
GetROProperty («Visible») — возвращает логическое значение, если оно отображается
пример
'Select the Radio Button by name "YES" Set Obj = Browser("Calculator").Page("Forms").WebRadioGroup("group1") Obj.Select("Yes") 'Verifies the Existance of the Radio Button and returns Boolean Value val = Obj.Exist print val 'Returns the Outerhtml of the Radio Button txt = Obj.GetROProperty("outerhtml") print text 'Returns the boolean value if Radio button is Visible. vis = Obj.GetROProperty("visible") print vis
Работа с Combo Box
Ниже приведены некоторые ключевые методы, с помощью которых можно работать с Combo Box.
-
Select (Value) — помогает тестеру выбрать значение из ComboBox
-
Клик — клики по объекту
-
WaitProperty — ждет, пока значение свойства не станет истинным
-
Exist — Проверяет наличие Combo Box
-
GetROProperty («Text») — получает выбранное значение поля со списком.
-
GetROProperty («все элементы») — возвращает все элементы в поле со списком.
-
GetROProperty («количество элементов») — возвращает количество элементов в поле со списком.
Select (Value) — помогает тестеру выбрать значение из ComboBox
Клик — клики по объекту
WaitProperty — ждет, пока значение свойства не станет истинным
Exist — Проверяет наличие Combo Box
GetROProperty («Text») — получает выбранное значение поля со списком.
GetROProperty («все элементы») — возвращает все элементы в поле со списком.
GetROProperty («количество элементов») — возвращает количество элементов в поле со списком.
пример
'Get the List of all the Items from the ComboBox Set ObjList = Browser("Math Calculator").Page("Statistics").WebList("class") x = ObjList.GetROProperty("all items") print x 'Get the Number of Items from the Combo Box y = ObjList.GetROProperty("items count") print y 'Get the text value of the Selected Item z = ObjList.GetROProperty("text") print z
Работа с кнопками
Ниже приведены некоторые из основных методов работы с кнопками.
-
Нажмите — клики по кнопке
-
WaitProperty — ждет, пока значение свойства не станет истинным
-
Exist — Проверяет наличие кнопки
-
GetROProperty («Имя») — получает имя кнопки
-
GetROProperty («Disabled») — возвращает логическое значение, если включено / отключено
Нажмите — клики по кнопке
WaitProperty — ждет, пока значение свойства не станет истинным
Exist — Проверяет наличие кнопки
GetROProperty («Имя») — получает имя кнопки
GetROProperty («Disabled») — возвращает логическое значение, если включено / отключено
пример
'To Perform a Click on the Button Set obj_Button = Browser("Math Calculator").Page("SQR").WebButton("Calc") obj_Button.Click 'To Perform a Middle Click on the Button obj_Button.MiddleClick 'To check if the button is enabled or disabled.Returns Boolean Value x = obj_Button.GetROProperty("disabled") print x 'To fetch the Name of the Button y = obj_Button.GetROProperty("name") print y
Работа с веб-таблицами
В сегодняшнем веб-приложении веб-таблицы стали очень распространенными, и тестировщики должны понимать, как работают веб-таблицы и как выполнять действия с веб-таблицами. Эта тема поможет вам эффективно работать с веб-таблицами.
Sr.No. | Заявление и описание |
---|---|
1 |
если заявление Оператор if состоит из логического выражения, за которым следует одно или несколько операторов. |
2 |
если … еще заявление Оператор if else состоит из логического выражения, за которым следует одно или несколько операторов. Если условие истинно. Операторы в разделе if выполняются. Если условие ложно. Остальная часть сценария выполнена |
3 |
if..elseif … еще заявление Оператор if, сопровождаемый одним или несколькими операторами Elseif , который состоит из логических выражений, за которым следует необязательный оператор else , который выполняется, когда все условие становится ложным. |
4 |
вложенные операторы if Оператор if или elseif внутри другого оператора if или elseif . |
5 |
заявление о переключении Оператор switch позволяет проверять переменную на предмет одинакового списка значений. |
если заявление
Оператор if состоит из логического выражения, за которым следует одно или несколько операторов.
если … еще заявление
Оператор if else состоит из логического выражения, за которым следует одно или несколько операторов. Если условие истинно. Операторы в разделе if выполняются. Если условие ложно. Остальная часть сценария выполнена
if..elseif … еще заявление
Оператор if, сопровождаемый одним или несколькими операторами Elseif , который состоит из логических выражений, за которым следует необязательный оператор else , который выполняется, когда все условие становится ложным.
вложенные операторы if
Оператор if или elseif внутри другого оператора if или elseif .
заявление о переключении
Оператор switch позволяет проверять переменную на предмет одинакового списка значений.
-
html id — если в таблице есть тег id, то лучше всего использовать это свойство.
-
innerText — заголовок таблицы.
-
sourceIndex — извлекает исходный индекс таблицы
-
ChildItemCount — получает количество ChildItems, присутствующих в указанной строке
-
RowCount — получает количество строк в таблице
-
ColumnCount — получает количество столбцов в таблице.
-
GetcellData — получает значение ячейки на основе столбца и индекса строки
html id — если в таблице есть тег id, то лучше всего использовать это свойство.
innerText — заголовок таблицы.
sourceIndex — извлекает исходный индекс таблицы
ChildItemCount — получает количество ChildItems, присутствующих в указанной строке
RowCount — получает количество строк в таблице
ColumnCount — получает количество столбцов в таблице.
GetcellData — получает значение ячейки на основе столбца и индекса строки
пример
Browser("Tutorials Point").Sync ' WebTable Obj = Browser("Tutorials Point").Page("VBScript Decisions").WebTable("Statement") ' Fetch RowCount x = Obj.RowCount print x ' Fetch ColumnCount y = Obj.ColumnCount(1) print y ' Print the Cell Data of the Table For i = 1 To x Step 1 For j = 1 To y Step 1 z = Obj.GetCellData(i,j) print "Row ID : " & i & " Column ID : " & j & " Value : " & z Next Next 'Fetch the Child Item count of Type Link in a particular Cell z = Obj.ChildItemCount(2,1,"Link") print z
QTP — Виртуальные объекты
Что такое виртуальные объекты?
Иногда тестируемое приложение может содержать стандартный объект окна, но не распознается QTP. При этих обстоятельствах объекты могут быть определены как виртуальный объект (VO) типа кнопки, ссылки и т. Д., Так что действия пользователя могут быть симулированы на виртуальных объектах во время выполнения.
пример
Допустим, мы автоматизируем сценарий в Microsoft Word. Я активировал приложение MS Word и нажимаю на любой значок на ленте. Например, на ленте нажимается вкладка «Вставка», а затем пользователь нажимает кнопку «Изображение». Кнопка распознается как WinObject; следовательно, важность виртуальных объектов выражена.
Window("Microsoft Word").WinObject("Ribbon").Click 145,45 Window("Microsoft Word").WinObject("Ribbon").WinObject("Picture...").Click 170,104
Создание виртуального объекта
Шаг 1 — В таких случаях виртуальные объекты создаются с помощью диспетчера виртуальных объектов или нового виртуального объекта из «Инструменты» >> «Виртуальный объект» >> «Новый виртуальный объект» и нажимают кнопку «Далее».
Шаг 2 — сопоставьте объект с типом класса и нажмите «Далее».
Шаг 3 — Нажмите кнопку «Отметить объект». Появится курсор с перекрестием, отметьте объект, который вы хотите отобразить, и нажмите «Далее».
Шаг 4 — Выберите родителя Виртуального объекта и нажмите «Далее».
Шаг 5 — Назовите коллекцию, в которой вы хотите сохранить виртуальный объект, и нажмите «Готово».
Диспетчер виртуальных объектов
Менеджер виртуальных объектов управляет коллекциями виртуальных объектов. Тестеры могут добавлять или удалять виртуальные объекты из диспетчера виртуальных объектов.
Переход к диспетчеру виртуальных объектов: «Инструменты» >> «Диспетчер виртуальных объектов», как показано ниже —
Использование виртуальных объектов
После создания виртуальных объектов созданный объект можно использовать, как показано ниже:
Window("Microsoft Word").WinObject("Ribbon").VirtualButton("button").Click
Ограничения виртуальных объектов
-
QTP не поддерживает виртуальные объекты для аналоговой или низкоуровневой записи.
-
Контрольные точки не могут быть добавлены в виртуальные объекты.
-
Виртуальные объекты не контролируются репозиторием объектов.
-
Хотя мы сопоставляем объект с определенным классом (кнопкой или списком), все методы собственных объектов не поддерживаются виртуальными объектами.
-
Объект Spy нельзя использовать на виртуальном объекте.
-
Выполнение теста не будет выполнено, если разрешение экрана изменится при изменении координат.
-
Окно приложения должно иметь такой же размер экрана, чтобы виртуальные объекты были захвачены правильно.
QTP не поддерживает виртуальные объекты для аналоговой или низкоуровневой записи.
Контрольные точки не могут быть добавлены в виртуальные объекты.
Виртуальные объекты не контролируются репозиторием объектов.
Хотя мы сопоставляем объект с определенным классом (кнопкой или списком), все методы собственных объектов не поддерживаются виртуальными объектами.
Объект Spy нельзя использовать на виртуальном объекте.
Выполнение теста не будет выполнено, если разрешение экрана изменится при изменении координат.
Окно приложения должно иметь такой же размер экрана, чтобы виртуальные объекты были захвачены правильно.
QTP — Доступ к базам данных
Таким образом, QTP не предоставляет никакой встроенной поддержки для подключения к базе данных, однако с помощью тестеров VBScript можно подключаться и взаимодействовать с базами данных с использованием объектов ADODB.
ADODB имеет 4 свойства или метода, с помощью которых мы сможем работать с базами данных. Они —
-
ADODB.Connection — используется для установления соединения с базой данных
-
ADODB.Command — используется для выполнения команды SQL (запросы или хранимые процедуры)
-
ADODB.Fields — используется для извлечения определенного столбца из набора записей после выполнения запроса / сохраненного процесса
-
ADODB.Recordset — используется для извлечения данных из базы данных
ADODB.Connection — используется для установления соединения с базой данных
ADODB.Command — используется для выполнения команды SQL (запросы или хранимые процедуры)
ADODB.Fields — используется для извлечения определенного столбца из набора записей после выполнения запроса / сохраненного процесса
ADODB.Recordset — используется для извлечения данных из базы данных
Как подключиться к базе данных?
Базы данных могут быть связаны с использованием строк подключения. Каждая база данных отличается тем, как мы к ним подключаемся. Тем не менее, строки подключения могут быть построены с помощью www.connectionstrings.com
Давайте посмотрим, как подключиться к базе данных со следующими параметрами —
-
Тип базы данных — MSSQL SERVER
-
Имя сервера — SQLEXPRESS
-
Имя базы данных — пробная версия
-
Идентификатор пользователя — sa
-
пароль — Password123
Тип базы данных — MSSQL SERVER
Имя сервера — SQLEXPRESS
Имя базы данных — пробная версия
Идентификатор пользователя — sa
пароль — Password123
Вывод запроса отображается в SQL Server Management Studio следующим образом:
Dim objConnection 'Set Adodb Connection Object Set objConnection = CreateObject("ADODB.Connection") Dim objRecordSet 'Create RecordSet Object Set objRecordSet = CreateObject("ADODB.Recordset") Dim DBQuery 'Query to be Executed DBQuery = "Select NAME from dbo.EMPLOYEE where AGE = 29" 'Connecting using SQL OLEDB Driver objConnection.Open "Provider = sqloledb.1;Server =.\SQLEXPRESS; User Id = sa;Password=Password123;Database = Trial" 'Execute the Query objRecordSet.Open DBQuery,objConnection 'Return the Result Set Value = objRecordSet.fields.item(0) msgbox Value ' Release the Resources objRecordSet.Close objConnection.Close Set objConnection = Nothing Set objRecordSet = Nothing
Результат
При выполнении вышеупомянутого сценария выходные данные отображаются в окне сообщения, как показано ниже —
QTP Работа с XML
XML — это язык разметки, предназначенный для хранения данных в формате, который может быть читаем как человеком, так и машиной. Используя XML, данные также могут легко обмениваться между компьютером и системами баз данных.
Пример XML и его ключевые элементы представлены ниже —
Доступ к XML
Const XMLDataFile = "C:\TestData.xml" Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.Async = False xmlDoc.Load(XMLDataFile) ' Getting the number of Nodes (books) Set nodes = xmlDoc.SelectNodes("/bookstore/book") Print "Total books: " & nodes.Length ' Displays 2 ' get all titles Set nodes = xmlDoc.SelectNodes("/Booklib/book/value/text()") ' get their values For i = 0 To (nodes.Length - 1) Title = nodes(i).NodeValue Print "Title is" & (i + 1) & ": " & Title Next
Сравнение XML
Мы можем сравнить два данных XML —
Dim xmlDoc1 Dim xmlDoc2 ' Load the XML Files Set xmlDoc1 = XMLUtil.CreateXMLFromFile ("C:\File1.xml") Set xmlDoc2 = XMLUtil.CreateXMLFromFile ("C:\File2.xml") 'Use the compare method of the XML to check if they are equivalent Comp = xmlDoc1.Compare (xmlDoc1, xmlDoc2) 'Returns 1 if the two files are the same If Comp = 1 Then Msgbox "XML Files are the Same" Else Msgbox "XML Files are Different" End if
QTP — Описательное программирование
Сценарии QTP могут выполняться, только если объекты присутствуют в репозитории объектов. Описания объектов создаются с использованием описательного программирования —
-
Когда тестировщики хотят выполнить операцию над объектом, которого нет в хранилище объектов
-
Когда объекты в приложении очень динамичны по своей природе.
-
Когда хранилище объектов становится большим, это приводит к снижению производительности при увеличении размера хранилища объектов.
-
Когда структура построена так, что было решено вообще не использовать Object Repository.
-
Когда тестировщики хотят выполнить действие над приложением во время выполнения, не зная об уникальных свойствах объекта.
Когда тестировщики хотят выполнить операцию над объектом, которого нет в хранилище объектов
Когда объекты в приложении очень динамичны по своей природе.
Когда хранилище объектов становится большим, это приводит к снижению производительности при увеличении размера хранилища объектов.
Когда структура построена так, что было решено вообще не использовать Object Repository.
Когда тестировщики хотят выполнить действие над приложением во время выполнения, не зная об уникальных свойствах объекта.
Синтаксис
Существует два способа написания сценариев с использованием техники описательного программирования. Они —
- Описание Объекты
- Описание Строки
Описание Объекты
Сценарий разрабатывается с использованием объектов описания, которые зависят от используемых свойств и их соответствующих значений. Затем эти описания используются для создания сценария.
'Creating a description object Set btncalc = Description.Create() 'Add descriptions and properties btncalc("type").value = "Button" btncalc("name").value = "calculate" btncalc("html tag").value = "INPUT" ' Use the same to script it Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click
Описание Строки
Описание объектов разрабатывается с использованием свойств и значений в виде строк, как показано ниже.
Browser("Math Calc").Page("Num Calculator").WebButton("html tag:=INPUT","type:=Button","name:=calculate").Click
Дочерние объекты
QTP предоставляет метод ChildObjects, который позволяет нам создавать коллекцию объектов. Родительские объекты предшествуют ChildObjects.
Dim oDesc Set oDesc = Description.Create oDesc("micclass").value = "Link" 'Find all the Links Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc) Dim i 'obj.Count value has the number of links in the page For i = 0 to obj.Count - 1 'get the name of all the links in the page x = obj(i).GetROProperty("innerhtml") print x Next
Порядковые идентификаторы
Описательное программирование используется для написания сценария на основе порядковых идентификаторов, что позволит QTP воздействовать на эти объекты, когда два или более объектов имеют одинаковые свойства.
' Using Location Dim Obj Set Obj = Browser("title:=.*google.*").Page("micclass:=Page") Obj.WebEdit("name:=Test","location:=0").Set "ABC" Obj.WebEdit("name:=Test","location:=1").Set "123" ' Index Obj.WebEdit("name:=Test","index:=0").Set "1123" Obj.WebEdit("name:=Test","index:=1").Set "2222" ' Creation Time Browser("creationtime:=0").Sync Browser("creationtime:=1").Sync Browser("creationtime:=2").Sync
QTP — объектная модель автоматизации
Сам QTP может быть автоматизирован с использованием интерфейса COM, предоставленного HP-QTP. Объектная модель автоматизации — это набор объектов, методов и свойств, который помогает тестировщикам контролировать параметры конфигурации и выполнять сценарии с использованием интерфейса QTP. Основные конфигурации / действия, которыми можно управлять (но не ограничиваться ими), перечислены ниже —
- Загружает все необходимые надстройки для теста
- Делает QTP видимым во время выполнения
- Открывает тест, используя указанное местоположение
- Библиотеки функций партнеров
- Задает время ожидания общего объекта
- Начало и конец итерации
- Включить / отключить интеллектуальную идентификацию
- Настройки ошибок
- Путь к таблице данных
- Настройки сценария восстановления
- Настройки отслеживания журнала
QTP 11.5x предоставляет эксклюзивную документацию по объектной модели автоматизации, на которую можно перейти, нажав «Пуск» >> «Все программы» >> «Программное обеспечение HP» >> «Унифицированное функциональное тестирование HP» >> «Документация» >> «Унифицированный» Справочник по автоматизации функционального тестирования ».
Создать сценарий AOM
Тестировщик может сгенерировать скрипт AOM из самого QTP, используя опцию «Generate Script». Перейдите к «Выполнить» >> «Настройки» >> «Свойства» вкладка >> «Создать сценарий», как показано ниже —
пример
' A Sample Script to Demostrate AOM Dim App 'As Application Set App = CreateObject("QuickTest.Application") App.Launch App.Visible = True App.Test.Settings.Launchers("Web").Active = False App.Test.Settings.Launchers("Web").Browser = "IE" App.Test.Settings.Launchers("Web").Address = "http://easycalculation.com/" App.Test.Settings.Launchers("Web").CloseOnExit = True App.Test.Settings.Launchers("Windows Applications").Active = False App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = False App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True App.Test.Settings.Run.IterationMode = "rngAll" App.Test.Settings.Run.StartIteration = 1 App.Test.Settings.Run.EndIteration = 1 App.Test.Settings.Run.ObjectSyncTimeOut = 20000 App.Test.Settings.Run.DisableSmartIdentification = False App.Test.Settings.Run.OnError = "Dialog" App.Test.Settings.Resources.DataTablePath = "<Default>" App.Test.Settings.Resources.Libraries.RemoveAll App.Test.Settings.Web.BrowserNavigationTimeout = 60000 App.Test.Settings.Web.ActiveScreenAccess.UserName = "" App.Test.Settings.Web.ActiveScreenAccess.Password = "" App.Test.Settings.Recovery.Enabled = True App.Test.Settings.Recovery.SetActivationMode "OnError" App.Test.Settings.Recovery.Add "D:\GUITest2\recover_app_crash.qrs", "Recover_Application_Crash", 1 App.Test.Settings.Recovery.Item(1).Enabled = True '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' System Local Monitoring settings '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' App.Test.Settings.LocalSystemMonitor.Enable = false '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Log Tracking settings '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' With App.Test.Settings.LogTracking .IncludeInResults = False .Port = 18081 .IP = "127.0.0.1" .MinTriggerLevel = "ERROR" .EnableAutoConfig = False .RecoverConfigAfterRun = False .ConfigFile = "" .MinConfigLevel = "WARN" End With
QTP — Каркасы
Платформа определяет набор руководящих принципов / передовых методов, которые обеспечивают соблюдение набора стандартов, который облегчает использование конечными пользователями для работы. Существуют различные типы сред автоматизации, и наиболее распространенные из них перечислены ниже —
- Фреймворк, управляемый ключевыми словами
- Data-Driven Framework
- Hybrid Framework
Фреймворк, управляемый ключевыми словами
Тестирование на основе ключевых слов — это тип среды тестирования функциональной автоматизации, которая также известна как тестирование на основе таблиц или тестирование на основе действий.
В тестировании по ключевым словам мы используем формат таблицы, обычно электронную таблицу, для определения ключевых слов или слов действия для каждой функции, которую мы хотим выполнить.
преимущества
-
Лучше всего подходит для начинающих или нетехнических тестеров.
-
Позволяет писать тесты более абстрактно, используя этот подход.
-
Тестирование по ключевым словам позволяет запускать автоматизацию в SDLC раньше, даже до того, как стабильная сборка будет доставлена для тестирования.
-
Существует высокая степень повторного использования.
Лучше всего подходит для начинающих или нетехнических тестеров.
Позволяет писать тесты более абстрактно, используя этот подход.
Тестирование по ключевым словам позволяет запускать автоматизацию в SDLC раньше, даже до того, как стабильная сборка будет доставлена для тестирования.
Существует высокая степень повторного использования.
Недостатки
-
Первоначальные инвестиции в разработку ключевых слов и связанных с ними функций могут занять больше времени.
-
Это может действовать как ограничение для технически способных тестеров.
Первоначальные инвестиции в разработку ключевых слов и связанных с ними функций могут занять больше времени.
Это может действовать как ограничение для технически способных тестеров.
Data Driven Framework
Управляемое данными тестирование — это создание тестовых сценариев, в которых тестовые данные и / или выходные значения считываются из файлов данных вместо использования одних и тех же жестко закодированных значений при каждом запуске теста. Таким образом, тестеры могут проверить, как приложение эффективно обрабатывает различные входные данные. Это может быть любой из следующих файлов данных —
- пулы
- Файлы Excel
- ADO объекты
- CSV файлы
- Источники ODBC
Схема потока
Тестирование на основе данных лучше всего понять по следующей схеме:
преимущества
- Платформа, управляемая данными, приводит к меньшему объему кода
- Обеспечивает большую гибкость для поддержки и исправления проблем со сценариями.
- Тестовые данные могут быть разработаны
Недостатки
- Каждый сценарий должен быть различным, чтобы понимать разные наборы данных.
Hybrid Framework
Гибридный каркас представляет собой комбинацию управляемого ключевыми словами и управляемого данными фреймворка, который лучше всего описать с помощью следующей блок-схемы.
Факторы, влияющие на
Ниже приведены параметры, которые следует учитывать при разработке структуры. Факторы влияния перечислены ниже —
-
Файлы инфраструктуры должны поддерживать программное обеспечение управления версиями, такое как SVN, CVS, MS Source Control
-
Framework должен поддерживать выполнение скриптов в разных средах, а именно: QA, SAT, DEV
-
При изменении объекта сценарии должны выполняться с минимальными изменениями.
-
Framework должен настроить себя и позаботиться о предварительных условиях, таких как создание папок / баз данных.
-
Платформа должна иметь надежную структуру отчетности, чтобы проблемы в сценарии / приложении можно было легко обнаружить
-
Framework должен иметь большую гибкость, чтобы его было легко использовать
-
Framework должен следовать стандартам кодирования, чтобы файлы, функции и история изменений сохранялись правильно.
Файлы инфраструктуры должны поддерживать программное обеспечение управления версиями, такое как SVN, CVS, MS Source Control
Framework должен поддерживать выполнение скриптов в разных средах, а именно: QA, SAT, DEV
При изменении объекта сценарии должны выполняться с минимальными изменениями.
Framework должен настроить себя и позаботиться о предварительных условиях, таких как создание папок / баз данных.
Платформа должна иметь надежную структуру отчетности, чтобы проблемы в сценарии / приложении можно было легко обнаружить
Framework должен иметь большую гибкость, чтобы его было легко использовать
Framework должен следовать стандартам кодирования, чтобы файлы, функции и история изменений сохранялись правильно.
В следующей главе мы узнаем, как разработать простую структуру.
QTP — Проектирование фреймворка
Давайте разработаем простую структуру, взяв пример приложения. Мы автоматизируем несколько сценариев тестируемого приложения и напишем многократно используемые функции.
Примером тестируемого приложения является «Калькулятор» , приложение по умолчанию, которое доступно как часть Windows. Давайте теперь создадим различные компоненты каркаса. Здесь мы разработаем гибридную среду и будем использовать репозиторий объектов, поскольку это довольно простое приложение. Тем не менее, эта структура может быть расширена для поддержки сложного приложения.
Структура папок Framework показана ниже:
Объяснение структуры папок —
-
Главный драйвер сценария — сценарий, который управляет всем исполнением. Он выполняет предварительные и начальные настройки, необходимые для выполнения.
-
Файлы библиотеки — связанные функции, которые образуют библиотеку функций.
-
Таблица данных — Тестовые данные, необходимые для выполнения.
-
Репозиторий объектов — Объекты и его свойства, которые позволяют QTP легко распознавать объекты.
-
Журналы выполнения — Папка содержит файл журнала выполнения с пользовательскими функциями и историей выполнения функций.
Главный драйвер сценария — сценарий, который управляет всем исполнением. Он выполняет предварительные и начальные настройки, необходимые для выполнения.
Файлы библиотеки — связанные функции, которые образуют библиотеку функций.
Таблица данных — Тестовые данные, необходимые для выполнения.
Репозиторий объектов — Объекты и его свойства, которые позволяют QTP легко распознавать объекты.
Журналы выполнения — Папка содержит файл журнала выполнения с пользовательскими функциями и историей выполнения функций.
Мастер Драйвер Скрипт
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ' MASTER DRIVER SCRIPT NAME : Calculator ' DESCRIPTION : Drivers Script to Execute Automated Test for the Calculator ' AUTHOR : Tutorials Point ' DATE CREATED : 30-Dec-2013 ' OBJECT REPOSITORY ASSOCIATED : Calc.tsr ' LIBRARY FILES ASSOCIATED : calculator.qfl, Common.qfl ' MODIFICATION LOG ' ---------------------------------------------------- ' First Version Tutorials point '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Option Explicit Public ExecDrive ' Get the Root folder of the Test so that we can make use of relative paths. Dim x : x = Instr(Environment.Value("TestDir"),"Driver")-2 ExecDrive = mid(Environment.Value("TestDir"),1,x) ' Get the path of Libraries using relative to the current Drive Dim LibPath : LibPath = ExecDrive+"\Libraries\" ' Dynamically Load the Function Libraries LoadFunctionLibrary LibPath + "Calculator.qfl", LibPath + "common_utils.qfl" ' Capturing the Start Time ' clscommon is the class object created in common.qfl library file clscommon.StartTime = Time() ' Launching the Application SystemUtil.Run "C:\Windows\System32\Calc.exe" : wait (2) ' Initialize the Data Table Path Dim FileName : FileName = ExecDrive+"\TestData\Calculator.xls" Dim SheetSource : SheetSource = "Calc_test" Dim SheetDest : SheetDest = "Global" ' Import the DataTable into the QTP Script DataTable.ImportSheet FileName , SheetSource , SheetDest ' Object Repository Path Dim RepPath : RepPath = ExecDrive+"\Object_Repository\Calc.tsr" RepositoriesCollection.RemoveAll() RepositoriesCollection.Add(RepPath) ' To Keep a Count on iteration Dim InttestIteration Dim InttestRows : InttestRows = datatable.GetRowCount ' Fetching Date-TimeStamp which will be unique for Naming the Execution Log File clscommon.StrDateFormatted = day(date()) & "_" & MonthName(Month(date()),true) & "_" & YEAR(date())& "_"&hour(now)&"_"&minute(now) ' Name the LogFile clscommon.StrLogFile = ExecDrive & "\Execution Logs\" & clscommon.StrDateFormatted & ".txt" ' Create the Execution LogFile which captures the result clscommon.Fn_FileCreate(clscommon.StrLogFile) ' Iniitialize the Parameters and all the relevant Test Details Call Fn_InitializeLogFile() ' Kill all the previous calculator process Call fn_Kill_Process("calc.exe") For InttestIteration = 1 to InttestRows datatable.SetCurrentRow InttestIteration Dim StrExecute : StrExecute = Ucase(Trim(datatable.Value("Run","Global"))) If StrExecute = "Y" Then clscommon.Number1 = Trim(datatable.Value("Number_1","Global")) clscommon.Number2 = Trim(datatable.Value("Number_2","Global")) clscommon.Number3 = Trim(datatable.Value("Number_3","Global")) clscommon.Number4 = Trim(datatable.Value("Number_4","Global")) clscommon.Number5 = Trim(datatable.Value("Number_5","Global")) clscommon.Number6 = Trim(datatable.Value("Number_6","Global")) clscommon.Test_Case_ID = Trim(datatable.Value("Test_Case_ID","Global"))' : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath clscommon.tcScenario = Trim(datatable.Value("Scenario","Global"))' : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath Dim Expected_Val : Expected_Val = Trim(datatable.Value("Expected_Val","Global"))' : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath Select case clscommon.tcScenario Case "Add" clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ===" Call fnCalculate("+",Expected_Val) Case "Subtract" clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ===" Call fnCalculate("-",Expected_Val) Case "Multiply" clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ===" Call fnCalculate("*",Expected_Val) Case "Divide" clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ===" Call fnCalculate("/",Expected_Val) Case "Sqrt" clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ===" Call fnCalculate("sqt",Expected_Val) End Select End If Next ' Calling the End Test to Add the result Footer in exec log file. Call fn_End_test() ' ===================== End of Master Driver Script =====================
Библиотечные файлы
Функции калькулятора записаны в отдельном файле функций, сохраненном с расширением .qfl или .vbs. Эти функции можно использовать в разных действиях.
' Calculator. Qfl File :: Associated Function Library for Calculator Master Driver '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ' FUNCTION NAME : Fn_InitializeLogFile ' DESCRIPTION : Function to Write the Initial Values in the Log File ' INPUT PARAMETERS : varExecDrive,StrDB,StrUId,Strpwd,StrNewDB ' OUTPUT PARAMETERS : NIL ' RETURN VALUE : Pass or Fail message ' DATE CREATED : 30-Dec-2013 '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Public Function Fn_InitializeLogFile() clscommon.LogWrite "********************************************" clscommon.LogWrite "Calc Automation Started" End Function '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ' FUNCTION NAME : fnCalculate ' DESCRIPTION : Function to perform Arithmetic Calculations ' INPUT PARAMETERS : operator,Expected_Val ' OUTPUT PARAMETERS : NIL ' RETURN VALUE : Pass or Fail message ' DATE CREATED : 30-Dec-2013 '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Function fnCalculate(operator,Expected_Val) clscommon.LogWrite "Executing the Function 'fnCalculate' " Window("Calculator").Activate If Trim(clscommon.Number1) <> "" Then Window("Calculator").WinButton(clscommon.Number1).Click If Trim(clscommon.Number2) <> "" Then Window("Calculator").WinButton(clscommon.Number2).Click If Trim(clscommon.Number3) <> "" Then Window("Calculator").WinButton(clscommon.Number3).Click Window("Calculator").WinButton(operator).Click If Trim(clscommon.Number4) <> "" Then Window("Calculator").WinButton(clscommon.Number4).Click If Trim(clscommon.Number5) <> "" Then Window("Calculator").WinButton(clscommon.Number5).Click If Trim(clscommon.Number6) <> "" Then Window("Calculator").WinButton(clscommon.Number6).Click Window("Calculator").WinButton("=").Click Dim ActualVal : ActualVal = Window("Calculator").WinEdit("Edit").GetROProperty("text") clscommon.LogWrite "The Actual Value after the Math Operation is "& ActualVal If Trim(ActualVal) = Trim(Expected_Val) Then clscommon.WriteResult "Pass", clscommon.Test_Case_ID , clscommon.tcScenario , " Expected Value matches with Actual Value :: " & ActualVal Else clscommon.WriteResult "Fail", clscommon.Test_Case_ID , clscommon.tcScenario , " Expected Value - " & Expected_Val & " Does NOT matches with Actual Value :: " & ActualVal End If Window("Calculator").WinButton("C").Click If Err.Number <> 0 Then clscommon.LogWrite "Execution Error : The Error Number is :: " & Err.Number & " The Error Description is " & Err.Description Err.Clear End If clscommon.LogWrite "Exiting the Function 'fnCalculate' " End Function '= = = = = = = = = = = = = = = = = = = = = = = = = = = ' FUNCTION NAME : fn_Kill_Process ' DESCRIPTION : Function to Kill the process by name ' INPUT PARAMETERS : Application name to be killed ' OUTPUT PARAMETERS : NIL ' RETURN VALUE : NIL ' DATE CREATED : 30-Dec-2013 '= = = = = = = = = = = = = = = = = = = = = = = = = = = Function fn_Kill_Process(process) Dim strComputer , strProcessToKill , objWMIService , colProcessstrComputer = "." strProcessToKill = process Set objWMIService = GetObject("winmgmts:" _& "{impersonationLevel=impersonate}!\\" _& strComputer & "\root\cimv2") Set colProcess = objWMIService.ExecQuery _("Select * from Win32_Process Where Name = '" & strProcessToKill & "'") count = 0 For Each objProcess in colProcess objProcess.Terminate() count = count + 1 Next End Function '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ' FUNCTION NAME : fn_End_test ' DESCRIPTION : Function to finish the test Execution process ' INPUT PARAMETERS : Application name to be killed ' OUTPUT PARAMETERS : NIL ' RETURN VALUE : NIL ' DATE CREATED : 20/Dec/2013 '= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Function fn_End_test() clscommon.LogWrite "Status Message - Executing the Function 'fn_End_test' " Window("Calculator").Close On Error Resume Next clscommon.StopTime = Time() clscommon.ElapsedTime = DateDiff("n",clscommon.StartTime,clscommon.StopTime) Dim Totaltests Totaltests = clscommon.gintPassCount+ clscommon.gintFailCount clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # clscommon.LogWrite "## The Execution Start Time :: " & clscommon.StartTime clscommon.LogWrite "## The Execution End Time :: " & clscommon.StopTime clscommon.LogWrite "## The Time Elapsed :: " & clscommon.ElapsedTime & " Minutes " clscommon.LogWrite "## The OS :: " & Environment.Value("OS") clscommon.LogWrite "## The Total No of Test Cases Executed :: " & Totaltests clscommon.LogWrite "## The No. of Test Case Passed :: " & clscommon.gintPassCount clscommon.LogWrite "## The No. of Test Case Failed :: " & clscommon.gintFailCount clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # SystemUtil.CloseDescendentProcesses End Function ' =============== End of Calculator. Qfl ============================= '
Другой файл библиотеки, который является ‘common_utils.qfl’ и содержит функции, которые позволяют нам записать вывод в текстовый файл.
Set clscommon = New OS_clsUtils 'Creating a class file to handle global variables. Class OS_clsUtils Dim StrLogFile Dim StrDateFormatted Dim Result Dim Number1, Number2 , Number3 Dim Number4, Number5 , Number6 Dim Test_Case_ID , tcScenario Dim StartTime, StopTime, ElapsedTime Dim gintPassCount , gintFailCount , gintWarningCount , gintdoneCount, gintinfoCount Function Fn_FileCreate(strFileName) Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strFileName) objTextFile.Close Set objTextFile = Nothing Set objFSO = Nothing End Function Function LogWrite(sMsg) Const ForAppending = 8 Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") Dim objTextFile : Set objTextFile = objFSO.OpenTextFile (clscommon.StrLogFile, ForAppending, True) objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & sMsg objTextFile.Close Set objTextFile = Nothing Set objFSO = Nothing End Function Function WriteResult(strStatus,functionName,functionDescription,Result) Const ForAppending = 8 Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") Dim objTextFile : Set objTextFile = objFSO.OpenTextFile (clscommon.StrLogFile, ForAppending, True) objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " * * * * * * Test Case Exec Details * * * * * " objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test staus :: " & strStatus objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Tese ID :: " & functionName objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test Description :: " & functionDescription objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test Result Details :: " & Result objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " objTextFile.Close Set objTextFile = Nothing Set objFSO = Nothing Select Case Lcase(strStatus) Case "pass" gintPassCount = gintPassCount + 1 Case "fail" gintFailCount = gintFailCount+1 End Select End Function End Class ' ===================== End of common_Utils.qfl =====================
Хранилище объектов
В репозитории объектов есть все объекты, с которыми будет работать пользователь. На приведенном ниже изображении показан список всех объектов, добавленных в хранилище с именем calc.tsr.
Таблица данных
DataTable содержит ключевые слова, которые запускают тесты, а также тестируют данные, с которыми QTP будет воздействовать на объекты.
Журнал выполнения
Файл журнала выполнения или выходной файл содержит действия пользователя и журнал функций, которые позволят тестировщикам выполнять отладку при сбоях сценария.