Вход |  Регистрация

Все Тэги

Применение QTP для поиска необработанного исключения

16.03.2012573 просм.

В одном из предыдущих постов мы рассматривали преимущества и недостатки использования QTP для обработки “крэша” приложения.

На этот раз мы поделимся своим опытом применения QTP для поиска необработанного исключения.

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

Функция вызывается при каждой попытке получения или записи данных и находит дочернее окно с кнопками «Detail» и «Quit».

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

Следующий шаг – записать значение скопированного текста в параметр теста и сформировать ручную запись ошибки выполнения шага теста со статусом Fail.

И наконец, принять значение для функции, определяющее, что исключение найдено.

Пример окна исключения:

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

Код скрипта для QTP:

Иногда данная функция выдает ошибку:

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

Описание обьекта из репозитария:

В функции также необходимо внесети незначительные изменения: во всех строках выражение SwfWindow(CurrentWindow) следует заменить на CurrentWindow.

Пример строки из функции:

Рекомендации по оптимальному использованию

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

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

  1. Дубликаты – в рамках набора выполняемых тестов открываются одни и те же формы.  Проверку следует выполнить только при первом использовании формы.
  2. Перекрестные валидации, требующие обращения к БД – такую проверку также можно выполнить только один раз на каждой форме (если для этой формы такая валидация предусмотрена).
  3. Иногда можно исключить проверку путем поиска корректной реакции приложения на выполненное в тесте действие. Данным правилом не следует злоупотреблять из-за ошибки ‘SwfWindow(…).SwfObject(…)
  4. В крайнем случае – проверять только при смене окна или формы. Этот подход может быть использован в тестах, где смена форм и окон выполняется редко (к примеру, тесты для проверки правил валидации приложения). Если исключение найдено в процессе работы с формой, оно все равно будет обработан, только позже. Отследить, когда оно появилось, возможно, поскольку в результатах теста отобразится цепочка шагов, которые не были выполнены.

Надеемся, что эта информация пригодится  в работе читателям нашего блога.

Метки: , ,

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Партнеры DevOpsHub и DevOpsWiki