Pull to refresh

HP Quick Test Professional: недокументированная возможность для написании тестовых сценариев, позволяющая использовать jQuery и гибкие приёмы jscript

Стояла задача исследовать применимость QTP для функционального тестирования и профилирования работы клиентской части web-приложения на IE, в основе разработки которого использовался jQuery.
С субъективной точки зрения, главными недостатками QTP-автоматизации явились некорректная работа рекордера при автоматическом формировании тест-скрипта и недостаточно гибкий набор свойств и методов, используемых в кодировании тест-скрипта, (после ощущений от использования мощностей jQuery в разработанном web-приложении).
В результате экспериментов с кодом тест-скрипта, (использовался QTP debugger), удалось выяснить, что существует недокументированное свойство script объекта Object, позволяющее работать с фреймворком jQuery и вытекающими отсюда возможностями при ручном программировании сценария теста. Это положительно поменяло мою точку зрения на эффективность использования QTP применительно к нашему проекту.
В ниже приведённом примере иллюстрируется применение найденной фичи script, также приёмы инициализации событий и профилирования в IE интерфейсе приложения процессов по их обработке (временные измерения автоматически регистрируются в отчёте после прогона теста):

01 Browser(«Browser»).Page(«Page»).Sync
02 Browser(«Browser»).Navigate «host:port/path»
03 Set scr = Browser(«Browser»).Page(«Главная страница»).Object.script
04 scr.jQuery(«input#ISearch_input»).val(«1111»)
05
06 Rem профилируем поиск/отображение списка документов по заданному атрибуту
07 Services.StartTransaction «searchList»
08 scr.jQuery(«div#Search_btn a:first»).click
09 Do
10 Rem cycle
11 Loop While scr.jQuery(«li:contains(Указ от 27.08.2007 N 1111)»).length = 0
12 Services.EndTransaction «searchList»
13
14 Rem профилируем открытие текста документа
15 Services.StartTransaction «openDoc»
16 scr.eval(«jQuery('li:contains(Указ от 27.08.2007 N 1111)')[0].fireEvent('onmousedown', document.createEventObject())»)
17 Do
18 Rem cycle
19 Loop While scr.jQuery(«div#section_Document:display p:contains(О Дне работника культуры)»).length = 0
20 Services.EndTransaction «openDoc»
21
22 scr.jQuery(«li#Back a:first»).click
23 scr.jQuery(«li#Home a:first»).click
24 Browser(«Browser»).Page(«Page»).Sync
25 Browser(«Browser»).CloseAllTabs

В стр.03 получен недокументированный объект script. В итоге с помощью него получаем доступ к фреймворку jQuery для работы с контролами интерфейса, реализации событийного сценария…
В стр.16 иллюстрируется приём для «связывания» события с контролом и его генерации посредством вызова eval.
В стр.6-12, 15-20 иллюстрируется приём профилирования процессов интерфейса, в результирующем отчёте получим (приводится фрагмент):
Transaction «searchList» started. Done 12.11.2009 — 12:57:25
Transaction «searchList» ended with «Pass» status (Total Duration: 1.4798 sec). Done 12.11.2009 — 12:57:26

Таким образом приведённый пример показывает, насколько расширяется спектр возможностей в разработке авто-тестов на QTP c использованием свойства объекта script, а также возрастает эффективность ручного программирования тестовых сценариев коллегами-автоматизаторами.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.