Учебники

QTP — Краткое руководство

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», как показано ниже —

Загрузите и установите Шаг 1

Шаг 2. После выбора «HP Unified Functional Testing 11.50» откроется мастер загрузки. Заполните Личные данные и нажмите Далее.

Загрузите и установите Шаг 2

Шаг 3 — Прочтите «Условия использования» и нажмите «ДАЛЕЕ».

Загрузите и установите Шаг 3

Шаг 4 — Откроется окно загрузки. Теперь нажмите кнопку «Скачать».

Загрузите и установите Шаг 4

Шаг 5 — Загруженный файл будет иметь формат .RAR. Теперь вам нужно распаковать архив, и содержимое папки будет таким, как показано ниже, и выполнить Setup.exe.

Загрузите и установите Шаг 5

Шаг 6 — После выполнения установочного файла, для установки, выберите «Unified Functional Testing Seting» из списка, как показано ниже —

Загрузите и установите Шаг 6

Шаг 7 — Затем нажмите Далее, чтобы продолжить.

Загрузите и установите Шаг 7

Шаг 8 — В окне Custom Set up выберите плагины, которые требуются для вашей автоматизации, т.е. вы должны выбрать плагины на основе технологии тестируемого приложения. Например, если ваше приложение основано на .NET, вам следует убедиться, что вы выбрали .NET.

Загрузите и установите Шаг 8

Шаг 9 — После выбора необходимых плагинов для установки нажмите Далее. После завершения установки у вас появится окно Готово.

Загрузите и установите Шаг 10

Шаг 10. После завершения установки открывается диалоговое окно «Дополнительные требования для установки». Выберите все в списке, кроме «Запустить мастер установки лицензии» и нажмите «Выполнить». Нам НЕ нужно выбирать «Запуск мастера установки лицензии», потому что мы устанавливаем пробную версию, которая по умолчанию дает лицензию на 30 дней.

Загрузите и установите Шаг 11

Шаг 11 — После выполнения дополнительных требований к установке отображается галочка, которая, в свою очередь, указывает, что компоненты установлены успешно. Теперь нажмите Закрыть.

Загрузите и установите Шаг 12

Запуск UFT и страницы добавления модулей

Шаг 1 — После установки приложение можно запустить из меню «Пуск», как показано на рисунке.

Загрузите и установите Шаг 13

Шаг 2 — Появится страница лицензии. Вы можете нажать Продолжить, так как мы установили пробную лицензию.

Загрузите и установите Шаг 14

Шаг 3 — Откроется диалоговое окно «Надстройки», в котором пользователь может выбрать необходимые надстройки.

Примечание. Не загружайте все надстройки, а только необходимые надстройки и нажмите кнопку «ОК».

Загрузите и установите Шаг 15

Шаг 4 — После загрузки необходимых надстроек для пользователя открывается инструмент UFT 11.5, и первый взгляд на UFT выглядит, как показано ниже —

Загрузите и установите Шаг 16

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, будут такими, как показано ниже —

Режимы записи 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, как показано ниже —

Таблица данных в QTP

Чтобы выполнить тестовый набор для определенного количества итераций, можно установить итерации с глобальными данными в диалоговом окне «Настройки теста», доступ к которому можно получить с помощью «Файл» → «Настройки» → «Выполнить» (вкладка), как показано ниже —

Таблица данных в QTP

пример

Например, если пользователь хочет параметризовать «сложный интерес» на http://easycalculation.com/ , доступ к которому можно получить с помощью http://easycalculation.com/compound-interest.php . Параметры могут быть созданы, как показано ниже. Большинство функций Excel также можно использовать в таблице данных.

Таблица данных в QTP

Операции с данными

Существует три типа объектов для доступа к 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

Когда пользователь хочет вставить контрольную точку, необходимо убедиться, что большинство контрольных точек поддерживаются только во время сеансов записи. Когда пользователь прекращает запись, контрольные точки не активируются.

Ниже приведено меню контрольных точек, когда пользователь НЕ находится в режиме записи.

Меню Check Point, когда запись НЕ выполняется

Ниже приведено меню контрольной точки, когда пользователь находится в режиме записи.

Меню Check Point во время записи

пример

Контрольные точки добавляются для тестируемого приложения — «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 — Нам нужно выбрать объект, которым мы хотим быть в качестве точки синхронизации. После выбора объекта открывается окно объекта, как показано ниже —

Точка синхронизации QTP

Шаг 4 — Нажмите ОК; откроется «Добавить окно синхронизации». Выберите значение «Свойство», «Значение» и «Время ожидания» и нажмите «ОК», как показано ниже —

Точка синхронизации QTP

Шаг 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 — В таких случаях виртуальные объекты создаются с помощью диспетчера виртуальных объектов или нового виртуального объекта из «Инструменты» >> «Виртуальный объект» >> «Новый виртуальный объект» и нажимают кнопку «Далее».

Виртуальный объект Шаг 1

Шаг 2 — сопоставьте объект с типом класса и нажмите «Далее».

Виртуальный объект Шаг 2

Шаг 3 — Нажмите кнопку «Отметить объект». Появится курсор с перекрестием, отметьте объект, который вы хотите отобразить, и нажмите «Далее».

Виртуальный объект Шаг 3

Шаг 4 — Выберите родителя Виртуального объекта и нажмите «Далее».

Виртуальный объект Шаг 4

Шаг 5 — Назовите коллекцию, в которой вы хотите сохранить виртуальный объект, и нажмите «Готово».

Виртуальный объект Шаг 5

Диспетчер виртуальных объектов

Менеджер виртуальных объектов управляет коллекциями виртуальных объектов. Тестеры могут добавлять или удалять виртуальные объекты из диспетчера виртуальных объектов.

Переход к диспетчеру виртуальных объектов: «Инструменты» >> «Диспетчер виртуальных объектов», как показано ниже —

Виртуальный объект Шаг 6

Использование виртуальных объектов

После создания виртуальных объектов созданный объект можно использовать, как показано ниже:

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

Результат

При выполнении вышеупомянутого сценария выходные данные отображаются в окне сообщения, как показано ниже —

Доступ к базе данных 2

QTP Работа с XML

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

Фреймворк, управляемый ключевыми словами

Тестирование на основе ключевых слов — это тип среды тестирования функциональной автоматизации, которая также известна как тестирование на основе таблиц или тестирование на основе действий.

В тестировании по ключевым словам мы используем формат таблицы, обычно электронную таблицу, для определения ключевых слов или слов действия для каждой функции, которую мы хотим выполнить.

Тестирование по ключевым словам в Automation Testing

преимущества

  • Лучше всего подходит для начинающих или нетехнических тестеров.

  • Позволяет писать тесты более абстрактно, используя этот подход.

  • Тестирование по ключевым словам позволяет запускать автоматизацию в SDLC раньше, даже до того, как стабильная сборка будет доставлена ​​для тестирования.

  • Существует высокая степень повторного использования.

Лучше всего подходит для начинающих или нетехнических тестеров.

Позволяет писать тесты более абстрактно, используя этот подход.

Тестирование по ключевым словам позволяет запускать автоматизацию в SDLC раньше, даже до того, как стабильная сборка будет доставлена ​​для тестирования.

Существует высокая степень повторного использования.

Недостатки

  • Первоначальные инвестиции в разработку ключевых слов и связанных с ними функций могут занять больше времени.

  • Это может действовать как ограничение для технически способных тестеров.

Первоначальные инвестиции в разработку ключевых слов и связанных с ними функций могут занять больше времени.

Это может действовать как ограничение для технически способных тестеров.

Data Driven Framework

Управляемое данными тестирование — это создание тестовых сценариев, в которых тестовые данные и / или выходные значения считываются из файлов данных вместо использования одних и тех же жестко закодированных значений при каждом запуске теста. Таким образом, тестеры могут проверить, как приложение эффективно обрабатывает различные входные данные. Это может быть любой из следующих файлов данных —

  • пулы
  • Файлы Excel
  • ADO объекты
  • CSV файлы
  • Источники ODBC

Схема потока

Тестирование на основе данных лучше всего понять по следующей схеме:

Тестирование по ключевым словам в Automation Testing

преимущества

  • Платформа, управляемая данными, приводит к меньшему объему кода
  • Обеспечивает большую гибкость для поддержки и исправления проблем со сценариями.
  • Тестовые данные могут быть разработаны

Недостатки

  • Каждый сценарий должен быть различным, чтобы понимать разные наборы данных.

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 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 будет воздействовать на объекты.

Таблица данных, используемая в платформе

Журнал выполнения

Файл журнала выполнения или выходной файл содержит действия пользователя и журнал функций, которые позволят тестировщикам выполнять отладку при сбоях сценария.

Таблица данных, используемая в платформе